@@ -0,0 +1,800 @@
+package org.cfg4j.source;%0A%0Aimport org.cfg4j.source.context.environment.Environment;%0A%0Aimport java.util.HashMap;%0Aimport java.util.Map;%0Aimport java.util.Properties;%0A%0Apublic abstract class BaseConfigurationSource implements ConfigurationSource %7B%0A%0A  private final Map%3CEnvironment, Properties%3E cachedConfigurationPerEnvironment;%0A%0A  public BaseConfigurationSource() %7B%0A    cachedConfigurationPerEnvironment = new HashMap%3C%3E();%0A  %7D%0A%0A  @Override%0A  public Properties getConfiguration(Environment environment) %7B%0A    return cachedConfigurationPerEnvironment.get(environment);%0A  %7D%0A%0A  @Override%0A  public void reload(Environment environment) %7B%0A    cachedConfigurationPerEnvironment.put(environment, fetchConfiguration(environment));%0A  %7D%0A%0A  protected abstract Properties fetchConfiguration(Environment environment);%0A%7D%0A

introduce base ConfigurationSource which can be extended by other sources