package org.wildfly.swarm.container.config; import java.util.Properties; /** * @author Bob McWhirter */ interface PropertiesManipulator { static PropertiesManipulator system() { return SystemPropertiesManipulator.INSTANCE; } static PropertiesManipulator forProperties(Properties properties) { return new ObjectPropertiesManipulator(properties); } String getProperty(String name); void setProperty(String name, String value); void clearProperty(String name); Properties getProperties(); class SystemPropertiesManipulator implements PropertiesManipulator { private static SystemPropertiesManipulator INSTANCE = new SystemPropertiesManipulator(); private SystemPropertiesManipulator() { } @Override public String getProperty(String name) { return System.getProperty(name); } @Override public void setProperty(String name, String value) { System.setProperty(name, value); } @Override public void clearProperty(String name) { System.clearProperty(name); } @Override public Properties getProperties() { return System.getProperties(); } } class ObjectPropertiesManipulator implements PropertiesManipulator { private ObjectPropertiesManipulator(Properties properties) { this.properties = properties; } @Override public String getProperty(String name) { return this.properties.getProperty(name); } @Override public void setProperty(String name, String value) { this.properties.setProperty(name, value); } @Override public void clearProperty(String name) { this.properties.remove(name); } @Override public Properties getProperties() { return this.properties; } private final Properties properties; } }