SystemPropertiesConfiguration.java

  1. /*
  2.  * @copyright defined in LICENSE.txt
  3.  */

  4. package hera.util.conf;

  5. import static hera.util.ValidationUtils.assertFalse;
  6. import static java.lang.System.getProperties;
  7. import static java.lang.System.getProperty;
  8. import static java.util.Collections.unmodifiableMap;

  9. import hera.util.Configuration;
  10. import java.util.HashMap;
  11. import java.util.Map;
  12. import java.util.Set;

  13. public class SystemPropertiesConfiguration extends AbstractConfiguration implements Configuration {

  14.   @SuppressWarnings("unchecked")
  15.   @Override
  16.   public Map<String, Object> asMap() {
  17.     final Map<?, ?> map = getProperties();
  18.     return unmodifiableMap(new HashMap<String, Object>((Map<String, String>) map));
  19.   }

  20.   @Override
  21.   public void define(final String key, final Object value) {
  22.     throw new UnsupportedOperationException("JVM Properties could NOT be changed");
  23.   }

  24.   @Override
  25.   public Configuration getSubconfiguration(final String key) {
  26.     final String prefix = key + ".";
  27.     final InMemoryConfiguration subconfiguration = new InMemoryConfiguration();

  28.     Set<String> stringProperties = getProperties().stringPropertyNames();
  29.     for (final String name : stringProperties) {
  30.       if (name.startsWith(prefix)) {
  31.         final String subname = name.substring(prefix.length());
  32.         subconfiguration.define(subname, getProperty(name));
  33.       }
  34.     }
  35.     return subconfiguration;
  36.   }

  37.   @Override
  38.   public Object getValue(final String key) {
  39.     assertFalse(key.contains("."));
  40.     return getProperty(key);
  41.   }

  42.   @Override
  43.   public void remove(final String key) {
  44.     throw new UnsupportedOperationException("JVM Properties could NOT be changed");
  45.   }

  46. }