All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ingenico.direct.logging.Obfuscator Maven / Gradle / Ivy

package com.ingenico.direct.logging;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

abstract class Obfuscator {

	private final Map obfuscators;

	Obfuscator(Map obfuscators, boolean caseInsensitive) {
		this.obfuscators = copy(obfuscators, caseInsensitive);
	}

	private Map copy(Map obfuscators, boolean caseInsensitive) {
		Map copy;
		if (caseInsensitive) {
			copy = new TreeMap(String.CASE_INSENSITIVE_ORDER);
			copy.putAll(obfuscators);
		} else {
			copy = new LinkedHashMap(obfuscators);
		}
		return Collections.unmodifiableMap(copy);
	}

	String obfuscateValue(String key, String value) {
		ValueObfuscator obfuscator = obfuscators.get(key);
		return obfuscator != null ? obfuscator.obfuscateValue(value) : value;
	}

	abstract static class Builder {
		private final Map obfuscators = new LinkedHashMap();

		Builder() {}

		Builder withField(String key) {
			obfuscators.put(key, ValueObfuscator.INSTANCE);
			return this;
		}

		Builder withSensitiveField(String key) {
			obfuscators.put(key, SensitiveValueObfuscator.INSTANCE);
			return this;
		}

		Map getObfuscators() {
			return obfuscators;
		}

		abstract Obfuscator build();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy