diff --git a/src/main/java/org/cryptomator/common/LazyProcessedProperties.java b/src/main/java/org/cryptomator/common/LazyProcessedProperties.java index d12b6c92c..6d882c9f9 100644 --- a/src/main/java/org/cryptomator/common/LazyProcessedProperties.java +++ b/src/main/java/org/cryptomator/common/LazyProcessedProperties.java @@ -1,36 +1,19 @@ package org.cryptomator.common; -import org.jetbrains.annotations.Nullable; import org.slf4j.LoggerFactory; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintStream; -import java.io.PrintWriter; -import java.io.Reader; -import java.io.Writer; -import java.nio.charset.Charset; -import java.util.Collection; -import java.util.Enumeration; -import java.util.InvalidPropertiesFormatException; import java.util.Map; import java.util.Properties; -import java.util.Set; -import java.util.function.BiConsumer; -import java.util.function.BiFunction; -import java.util.function.Function; import java.util.regex.Pattern; -public class LazyProcessedProperties extends Properties { +public class LazyProcessedProperties extends PropertiesDecorator { private static final Pattern TEMPLATE = Pattern.compile("@\\{(\\w+)}"); private final Map env; - private final Properties delegate; public LazyProcessedProperties(Properties props, Map systemEnvironment) { - this.delegate = props; + super(props); this.env = systemEnvironment; } @@ -87,138 +70,4 @@ public class LazyProcessedProperties extends Properties { PROPS; } - //auto generated - @Override - public synchronized Object setProperty(String key, String value) { - return delegate.setProperty(key, value); - } - - @Override - public synchronized void load(Reader reader) throws IOException {delegate.load(reader);} - - @Override - public synchronized void load(InputStream inStream) throws IOException {delegate.load(inStream);} - - @Override - public void store(Writer writer, String comments) throws IOException {delegate.store(writer, comments);} - - @Override - public void store(OutputStream out, @Nullable String comments) throws IOException {delegate.store(out, comments);} - - @Override - public synchronized void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException {delegate.loadFromXML(in);} - - @Override - public void storeToXML(OutputStream os, String comment) throws IOException {delegate.storeToXML(os, comment);} - - @Override - public void storeToXML(OutputStream os, String comment, String encoding) throws IOException {delegate.storeToXML(os, comment, encoding);} - - @Override - public void storeToXML(OutputStream os, String comment, Charset charset) throws IOException {delegate.storeToXML(os, comment, charset);} - - @Override - public Enumeration propertyNames() {return delegate.propertyNames();} - - @Override - public Set stringPropertyNames() {return delegate.stringPropertyNames();} - - @Override - public void list(PrintStream out) {delegate.list(out);} - - @Override - public void list(PrintWriter out) {delegate.list(out);} - - @Override - public int size() {return delegate.size();} - - @Override - public boolean isEmpty() {return delegate.isEmpty();} - - @Override - public Enumeration keys() {return delegate.keys();} - - @Override - public Enumeration elements() {return delegate.elements();} - - @Override - public boolean contains(Object value) {return delegate.contains(value);} - - @Override - public boolean containsValue(Object value) {return delegate.containsValue(value);} - - @Override - public boolean containsKey(Object key) {return delegate.containsKey(key);} - - @Override - public Object get(Object key) {return delegate.get(key);} - - @Override - public synchronized Object put(Object key, Object value) {return delegate.put(key, value);} - - @Override - public synchronized Object remove(Object key) {return delegate.remove(key);} - - @Override - public synchronized void putAll(Map t) {delegate.putAll(t);} - - @Override - public synchronized void clear() {delegate.clear();} - - @Override - public synchronized String toString() {return delegate.toString();} - - @Override - public Set keySet() {return delegate.keySet();} - - @Override - public Collection values() {return delegate.values();} - - @Override - public Set> entrySet() {return delegate.entrySet();} - - @Override - public synchronized boolean equals(Object o) {return delegate.equals(o);} - - @Override - public synchronized int hashCode() {return delegate.hashCode();} - - @Override - public Object getOrDefault(Object key, Object defaultValue) {return delegate.getOrDefault(key, defaultValue);} - - @Override - public synchronized void forEach(BiConsumer action) {delegate.forEach(action);} - - @Override - public synchronized void replaceAll(BiFunction function) {delegate.replaceAll(function);} - - @Override - public synchronized Object putIfAbsent(Object key, Object value) {return delegate.putIfAbsent(key, value);} - - @Override - public synchronized boolean remove(Object key, Object value) {return delegate.remove(key, value);} - - @Override - public synchronized boolean replace(Object key, Object oldValue, Object newValue) {return delegate.replace(key, oldValue, newValue);} - - @Override - public synchronized Object replace(Object key, Object value) {return delegate.replace(key, value);} - - @Override - public synchronized Object computeIfAbsent(Object key, Function mappingFunction) {return delegate.computeIfAbsent(key, mappingFunction);} - - @Override - public synchronized Object computeIfPresent(Object key, BiFunction remappingFunction) {return delegate.computeIfPresent(key, remappingFunction);} - - @Override - public synchronized Object compute(Object key, BiFunction remappingFunction) {return delegate.compute(key, remappingFunction);} - - @Override - public synchronized Object merge(Object key, Object value, BiFunction remappingFunction) {return delegate.merge(key, value, remappingFunction);} - - @Override - public synchronized Object clone() { - var delegateClone = (Properties) delegate.clone(); - return new LazyProcessedProperties(delegateClone, env); - } } diff --git a/src/main/java/org/cryptomator/common/PropertiesDecorator.java b/src/main/java/org/cryptomator/common/PropertiesDecorator.java new file mode 100644 index 000000000..b2700ccae --- /dev/null +++ b/src/main/java/org/cryptomator/common/PropertiesDecorator.java @@ -0,0 +1,171 @@ +package org.cryptomator.common; + +import org.jetbrains.annotations.Nullable; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintStream; +import java.io.PrintWriter; +import java.io.Reader; +import java.io.Writer; +import java.nio.charset.Charset; +import java.util.Collection; +import java.util.Enumeration; +import java.util.InvalidPropertiesFormatException; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Function; + +public class PropertiesDecorator extends Properties { + + protected final Properties delegate; + + PropertiesDecorator(Properties delegate) { + this.delegate = delegate; + } + + @Override + public String getProperty(String key) {return delegate.getProperty(key);} + + @Override + public String getProperty(String key, String defaultValue) {return delegate.getProperty(key, defaultValue);} + + @Override + public synchronized Object setProperty(String key, String value) { + return delegate.setProperty(key, value); + } + + @Override + public synchronized void load(Reader reader) throws IOException {delegate.load(reader);} + + @Override + public synchronized void load(InputStream inStream) throws IOException {delegate.load(inStream);} + + @Override + public void store(Writer writer, String comments) throws IOException {delegate.store(writer, comments);} + + @Override + public void store(OutputStream out, @Nullable String comments) throws IOException {delegate.store(out, comments);} + + @Override + public synchronized void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException {delegate.loadFromXML(in);} + + @Override + public void storeToXML(OutputStream os, String comment) throws IOException {delegate.storeToXML(os, comment);} + + @Override + public void storeToXML(OutputStream os, String comment, String encoding) throws IOException {delegate.storeToXML(os, comment, encoding);} + + @Override + public void storeToXML(OutputStream os, String comment, Charset charset) throws IOException {delegate.storeToXML(os, comment, charset);} + + @Override + public Enumeration propertyNames() {return delegate.propertyNames();} + + @Override + public Set stringPropertyNames() {return delegate.stringPropertyNames();} + + @Override + public void list(PrintStream out) {delegate.list(out);} + + @Override + public void list(PrintWriter out) {delegate.list(out);} + + @Override + public int size() {return delegate.size();} + + @Override + public boolean isEmpty() {return delegate.isEmpty();} + + @Override + public Enumeration keys() {return delegate.keys();} + + @Override + public Enumeration elements() {return delegate.elements();} + + @Override + public boolean contains(Object value) {return delegate.contains(value);} + + @Override + public boolean containsValue(Object value) {return delegate.containsValue(value);} + + @Override + public boolean containsKey(Object key) {return delegate.containsKey(key);} + + @Override + public Object get(Object key) {return delegate.get(key);} + + @Override + public synchronized Object put(Object key, Object value) {return delegate.put(key, value);} + + @Override + public synchronized Object remove(Object key) {return delegate.remove(key);} + + @Override + public synchronized void putAll(Map t) {delegate.putAll(t);} + + @Override + public synchronized void clear() {delegate.clear();} + + @Override + public synchronized String toString() {return delegate.toString();} + + @Override + public Set keySet() {return delegate.keySet();} + + @Override + public Collection values() {return delegate.values();} + + @Override + public Set> entrySet() {return delegate.entrySet();} + + @Override + public synchronized boolean equals(Object o) {return delegate.equals(o);} + + @Override + public synchronized int hashCode() {return delegate.hashCode();} + + @Override + public Object getOrDefault(Object key, Object defaultValue) {return delegate.getOrDefault(key, defaultValue);} + + @Override + public synchronized void forEach(BiConsumer action) {delegate.forEach(action);} + + @Override + public synchronized void replaceAll(BiFunction function) {delegate.replaceAll(function);} + + @Override + public synchronized Object putIfAbsent(Object key, Object value) {return delegate.putIfAbsent(key, value);} + + @Override + public synchronized boolean remove(Object key, Object value) {return delegate.remove(key, value);} + + @Override + public synchronized boolean replace(Object key, Object oldValue, Object newValue) {return delegate.replace(key, oldValue, newValue);} + + @Override + public synchronized Object replace(Object key, Object value) {return delegate.replace(key, value);} + + @Override + public synchronized Object computeIfAbsent(Object key, Function mappingFunction) {return delegate.computeIfAbsent(key, mappingFunction);} + + @Override + public synchronized Object computeIfPresent(Object key, BiFunction remappingFunction) {return delegate.computeIfPresent(key, remappingFunction);} + + @Override + public synchronized Object compute(Object key, BiFunction remappingFunction) {return delegate.compute(key, remappingFunction);} + + @Override + public synchronized Object merge(Object key, Object value, BiFunction remappingFunction) {return delegate.merge(key, value, remappingFunction);} + + @Override + public Object clone() { + var delegateClone = (Properties) delegate.clone(); + return new PropertiesDecorator(delegateClone); + } + +}