You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2018/11/18 21:20:28 UTC

[10/20] incubator-tamaya-extensions git commit: TAMAYA-274 Reduced API footprint by using Java 8 features. Added some lambdas. TAMAYA-355 Enable mapping of lists and arrays into internal datastructures. TAMAYA-353 Adding support for different classloa

TAMAYA-274  Reduced API footprint by using Java 8 features. Added some lambdas.
TAMAYA-355  Enable mapping of lists and arrays into internal datastructures.
TAMAYA-353  Adding support for different classloaders.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/36c32fcf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/36c32fcf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/36c32fcf

Branch: refs/heads/master
Commit: 36c32fcf347ffffef5498ea177159be0387392e3
Parents: ade6eb8
Author: Anatole Tresch <at...@gmail.com>
Authored: Sat Nov 3 01:46:12 2018 +0100
Committer: Anatole Tresch <at...@gmail.com>
Committed: Sat Nov 3 01:46:15 2018 +0100

----------------------------------------------------------------------
 .../tamay/ext/examples/resolver/Main.java       |   3 +-
 .../ext/examples/resolver/package-info.java     |   2 +-
 .../events/FilePropertySourceProvider.java      |   2 +-
 .../apache/tamaya/ext/examples/events/Main.java |   7 +-
 .../tamaya/events/ConfigEventManager.java       |  95 +++++++++-----
 .../tamaya/events/ConfigurationChange.java      |   2 +-
 .../events/ConfigurationChangeBuilder.java      |  10 +-
 .../tamaya/events/FrozenConfiguration.java      |  12 +-
 .../tamaya/events/FrozenPropertySource.java     |   2 +-
 .../tamaya/events/PropertySourceChange.java     |   2 +-
 .../events/PropertySourceChangeBuilder.java     |   6 +-
 .../internal/DefaultConfigChangeObserver.java   |  12 +-
 .../internal/DefaultConfigEventManagerSpi.java  |  18 ++-
 .../events/ChangeableGlobalPropertySource.java  |   4 +-
 .../tamaya/events/ConfigEventManagerTest.java   |  16 +--
 .../tamaya/events/ConfigurationChangeTest.java  |   2 +-
 .../tamaya/events/FrozenConfigurationTest.java  |   2 +-
 .../tamaya/events/ObservedConfigTest.java       |   4 +-
 .../tamaya/events/PropertySourceChangeTest.java |   2 +-
 .../apache/tamaya/events/TestConfigView.java    |  10 +-
 .../folderobserver/TestObservingProvider.java   |   2 +-
 .../DefaultConfigChangeObserverTest.java        |  13 +-
 .../org/apache/tamaya/features/Features.java    |   2 +-
 .../apache/tamaya/filter/CompositeFilter.java   | 119 -----------------
 .../tamaya/filter/ConfigurationFilter.java      | 127 -------------------
 .../filter/ThreadBasedConfigurationFilter.java  | 127 +++++++++++++++++++
 .../tamaya/filter/ThreadFilterContext.java      | 119 +++++++++++++++++
 .../filter/internal/DefaultMetadataFilter.java  |   4 +-
 .../org.apache.tamaya.spi.PropertyFilter        |   2 +-
 .../tamaya/filter/ConfigurationFilterTest.java  |  41 +++---
 .../tamaya/filter/ProgrammableFilterTest.java   |  14 +-
 modules/formats/base/pom.xml                    |   4 +-
 .../BaseFormatPropertySourceProvider.java       |   4 +-
 .../tamaya/format/ConfigurationFormat.java      |   7 +-
 .../tamaya/format/ConfigurationFormats.java     |  73 ++++++-----
 .../MappedConfigurationDataPropertySource.java  |   8 +-
 .../format/formats/IniConfigurationFormat.java  |  19 +--
 .../tamaya/format/ConfigurationFormatsTest.java |  38 +++---
 .../FormatPropertySourceProviderTest.java       |   2 +-
 ...ppedConfigurationDataPropertySourceTest.java |  38 +++---
 .../org/apache/tamaya/json/JSONDataBuilder.java |  54 ++++----
 .../apache/tamaya/json/JSONPropertySource.java  |   3 +-
 .../org/apache/tamaya/json/JSONVisitorTest.java |  18 +--
 .../java/org/apache/tamaya/yaml/YAMLFormat.java |  40 +++---
 .../apache/tamaya/yaml/YAMLPropertySource.java  |   6 +-
 .../org/apache/tamaya/yaml/YAMLFormatTest.java  |   2 +-
 modules/functions/pom.xml                       |   2 +-
 .../tamaya/functions/CombinedConfiguration.java |  20 +--
 .../tamaya/functions/EnrichedConfiguration.java |   6 +-
 .../tamaya/functions/FilteredConfiguration.java |  12 --
 .../tamaya/functions/MappedConfiguration.java   |  12 --
 .../tamaya/functions/MappedPropertySource.java  |   6 +-
 .../apache/tamaya/functions/PropertyMapper.java |   6 +-
 .../tamaya/functions/PropertyMatcher.java       |   2 +-
 .../functions/PropertySourceFunctions.java      |  63 +++++++--
 .../functions/CombinedConfigurationTest.java    |   4 +-
 .../functions/EnrichedConfigurationTest.java    |  10 +-
 .../tamaya/functions/InMemoryConfiguration.java |   4 +-
 .../tamaya/cdi/CDIAwareServiceContext.java      |  49 +++++--
 .../tamaya/cdi/ConfigurationProducer.java       |   6 +-
 .../apache/tamaya/cdi/DefaultDynamicValue.java  |  30 ++---
 .../tamaya/cdi/ServiceLoaderServiceContext.java |  57 +++++++--
 .../tamaya/cdi/TamayaCDIInjectionExtension.java |   6 +-
 .../tamaya/cdi/ConfigurationProducerTest.java   |   8 +-
 .../org/apache/tamaya/inject/api/Config.java    |  26 ++--
 .../apache/tamaya/inject/api/DynamicValue.java  |  74 +++++------
 .../apache/tamaya/inject/api/LoadPolicy.java    |   2 +-
 .../apache/tamaya/inject/api/UpdatePolicy.java  |   4 +-
 .../tamaya/inject/spi/BaseDynamicValue.java     |  88 +++++++------
 .../tamaya/inject/spi/ConfiguredField.java      |   6 +-
 .../tamaya/inject/spi/InjectionUtils.java       |   8 +-
 .../tamaya/inject/spi/BaseDynamicValueTest.java |  21 ++-
 .../tamaya/inject/ConfigurationInjection.java   |  16 ++-
 .../tamaya/inject/ConfigurationInjector.java    |   7 +-
 .../ConfigTemplateInvocationHandler.java        |   2 +-
 .../inject/internal/ConfiguredFieldImpl.java    |   5 +-
 .../inject/internal/ConfiguredSetterMethod.java |   3 +-
 .../inject/internal/ConfiguredTypeImpl.java     |   4 +-
 .../internal/DefaultConfigurationInjector.java  |  34 ++++-
 .../inject/internal/DefaultDynamicValue.java    |  47 +++----
 .../tamaya/inject/internal/InjectionHelper.java |  20 +--
 .../apache/tamaya/inject/internal/Utils.java    |   6 +-
 .../tamaya/inject/TamayaInjectionTest.java      |   4 +-
 .../apache/tamaya/jndi/JNDIPropertySource.java  |   4 +-
 .../microprofile/MicroprofileAdapter.java       |  10 +-
 .../microprofile/MicroprofileConfigBuilder.java |  18 ++-
 .../MicroprofileConfigProviderResolver.java     |   1 +
 .../microprofile/TamayaPropertySource.java      |   4 +-
 .../cdi/MicroprofileConfigurationProducer.java  |   4 +-
 .../converter/ProviderConverter.java            |   2 +-
 .../microprofile/BuildableConfigSource.java     |   2 +-
 .../microprofile/MicroprofileAdapterTest.java   |   2 +-
 .../mutableconfig/ChangePropagationPolicy.java  |   6 +-
 .../mutableconfig/ConfigChangeRequest.java      |  10 +-
 .../mutableconfig/MutableConfiguration.java     |  91 ++++++++++++-
 .../MutableConfigurationProvider.java           |  63 ++++++---
 .../MutablePropertiesPropertySource.java        |   4 +-
 .../MutableXmlPropertiesPropertySource.java     |   4 +-
 .../spi/MutableConfigurationProviderSpi.java    |   2 +-
 .../MutableConfigurationProviderTest.java       |   8 +-
 .../mutableconfig/MutableConfigurationTest.java |  58 +++++++--
 modules/optional/pom.xml                        |   2 +-
 .../tamaya/optional/EvaluationPolicy.java       |   4 +-
 .../tamaya/optional/OptionalConfiguration.java  |  36 +++---
 .../apache/tamaya/optional/ValueProvider.java   |   6 +-
 .../org/apache/tamaya/osgi/ConfigHistory.java   |  10 +-
 .../apache/tamaya/osgi/TamayaConfigPlugin.java  |   6 +-
 .../tamaya/gogo/shell/ConfigCommands.java       |   2 +-
 .../osgi/injection/TamayaOSGIInjector.java      |   2 +-
 .../karaf/shell/DefaultEnableCommand.java       |   2 +-
 .../tamaya/karaf/shell/PropertyGetCommand.java  |   2 +-
 .../karaf/shell/PropertySourcesCommand.java     |   2 +-
 .../apache/tamaya/osgi/updater/Activator.java   |   8 +-
 .../tamaya/osgi/updater/ActivatorTest.java      |   6 +-
 modules/resolver/pom.xml                        |   2 +-
 .../org/apache/tamaya/resolver/Resolver.java    |  98 +++++++-------
 .../resolver/internal/ConfigResolver.java       |   2 +-
 .../internal/DefaultExpressionEvaluator.java    |   8 +-
 .../internal/ExpressionResolutionFilter.java    |   4 +-
 .../resolver/internal/ResourceResolver.java     |   7 +-
 .../resolver/spi/ExpressionEvaluator.java       |   6 +-
 .../tamaya/resolver/ConfigResolutionTest.java   |   1 -
 .../tamaya/resolver/MyTestPropertySource.java   |   6 +-
 .../apache/tamaya/resolver/ResolverTest.java    |  15 +--
 modules/resources/pom.xml                       |   2 +-
 .../AbstractPathPropertySourceProvider.java     |   6 +-
 .../tamaya/resource/BaseResourceResolver.java   |  20 ++-
 .../apache/tamaya/resource/ConfigResources.java |   9 +-
 .../apache/tamaya/resource/ResourceLocator.java |   2 +-
 .../tamaya/resource/ResourceResolver.java       |  62 +++++----
 .../resource/internal/ClasspathCollector.java   |   6 +-
 .../internal/DefaultResourceResolver.java       |  22 +++-
 .../tamaya/resource/internal/FileCollector.java |   8 +-
 .../tamaya/resource/internal/VfsSupport.java    |  16 +--
 .../AbstractPathPropertySourceProviderTest.java |   6 +-
 .../spring/TamayaSpringPropertySource.java      |   1 -
 136 files changed, 1406 insertions(+), 1063 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java
----------------------------------------------------------------------
diff --git a/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java
index b9bba45..1cd9094 100644
--- a/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java
+++ b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/Main.java
@@ -19,7 +19,6 @@
 package org.apache.tamay.ext.examples.resolver;
 
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 
 import java.io.PrintStream;
 import java.util.Map;
@@ -30,7 +29,7 @@ import java.util.logging.Logger;
 import static java.lang.String.format;
 
 /**
- * Example illustrating the usage of value resolver expressions (placeholders).
+ * Example illustrating the usage of createValue resolver expressions (placeholders).
  */
 public class Main {
     /*

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java
----------------------------------------------------------------------
diff --git a/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java
index 9479876..2f0cc42 100644
--- a/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java
+++ b/examples/02-resolver-example/src/main/java/org/apache/tamay/ext/examples/resolver/package-info.java
@@ -18,6 +18,6 @@
  */
 
 /**
- * Example illustrating the usage of value resolver expressions (placeholders).
+ * Example illustrating the usage of createValue resolver expressions (placeholders).
  */
 package org.apache.tamay.ext.examples.resolver;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java
----------------------------------------------------------------------
diff --git a/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java
index a15ad6e..670e916 100644
--- a/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java
+++ b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/FilePropertySourceProvider.java
@@ -60,7 +60,7 @@ public class FilePropertySourceProvider extends AbstractPathPropertySourceProvid
                 }
 
                 for (String key : props.stringPropertyNames()) {
-                    properties.put(key, PropertyValue.of(key, props.getProperty(key), getName()));
+                    properties.put(key, PropertyValue.createValue(key, props.getProperty(key)).setMeta("source", getName()));
                 }
             } catch (IOException e) {
                 throw new ConfigException("Error loading properties from " + propertiesFile, e);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java
----------------------------------------------------------------------
diff --git a/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java
index 2cf3fa0..f6019f9 100644
--- a/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java
+++ b/examples/04-events-example/src/main/java/org/apache/tamaya/ext/examples/events/Main.java
@@ -19,7 +19,6 @@
 package org.apache.tamaya.ext.examples.events;
 
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.events.ConfigEvent;
 import org.apache.tamaya.events.ConfigEventListener;
 import org.apache.tamaya.events.ConfigEventManager;
@@ -61,9 +60,9 @@ public class Main {
 
         installCleanupHook(getPropertiesFilePath());
 
-        ConfigEventManager.addListener(new ConfigurationChangeListener());
-        ConfigEventManager.setChangeMonitoringPeriod(1_000L);
-        ConfigEventManager.enableChangeMonitoring(true);
+        ConfigEventManager.getInstance().addListener(new ConfigurationChangeListener());
+        ConfigEventManager.getInstance().setChangeMonitoringPeriod(1_000L);
+        ConfigEventManager.getInstance().enableChangeMonitoring(true);
         Configuration configuration = Configuration.current();
 
         for (Map.Entry<String, String> e : configuration.getProperties().entrySet()) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java
index 1830dfb..636fbb8 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigEventManager.java
@@ -23,6 +23,7 @@ import org.apache.tamaya.events.spi.ConfigEventManagerSpi;
 import org.apache.tamaya.spi.ServiceContextManager;
 
 import java.util.Collection;
+import java.util.Objects;
 
 /**
  * Singleton accessor for accessing the event support component that distributes change events of
@@ -30,32 +31,53 @@ import java.util.Collection;
  */
 @SuppressWarnings("rawtypes")
 public final class ConfigEventManager {
+
+    private ClassLoader classLoader;
+
+    private ConfigEventManager(ClassLoader classLoader){
+        this.classLoader = Objects.requireNonNull(classLoader);
+    }
+
     /**
      * The backing SPI.
      */
-    private static final ConfigEventManagerSpi spi(){
-        ConfigEventManagerSpi spi = ServiceContextManager.getServiceContext(
-                Thread.currentThread().getContextClassLoader())
+    private static final ConfigEventManagerSpi spi(ClassLoader classLoader){
+        ConfigEventManagerSpi spi = ServiceContextManager.getServiceContext(classLoader)
                 .getService(ConfigEventManagerSpi.class);
         if(spi==null){
-            throw new ConfigException("No SPI registered for " +
-                    ConfigEventManager.class.getName());
+            throw new ConfigException("No SPI registered: " +
+                    ConfigEventManagerSpi.class.getName());
         }
         return spi;
     }
 
     /**
-     * Private singleton constructor.
+     * Access the event manager using the current classloader.
+     *
+     * @see ServiceContextManager#getDefaultClassLoader()
+     * @return the event manager, not null.
+     */
+    public static ConfigEventManager getInstance(){
+        return getInstance(ServiceContextManager.getDefaultClassLoader());
+    }
+
+    /**
+     * Access the event manager using the given classloader.
+     * @param classLoader the target classloader, not null.
+     * @return the event manager, not null.
      */
-    private ConfigEventManager() {
+    public static ConfigEventManager getInstance(ClassLoader classLoader){
+        return ServiceContextManager.getServiceContext(
+                Thread.currentThread().getContextClassLoader()).getService(
+                ConfigEventManager.class, () -> new ConfigEventManager(classLoader));
     }
 
     /**
      * Adds a Config listener that listens to all kind of {@link ConfigEvent}.
      * @param l the listener not null.
      */
-    public static void addListener(ConfigEventListener l) {
-        spi().addListener(l);
+    public void addListener(ConfigEventListener l) {
+        spi(classLoader).addListener(l);
     }
 
     /**
@@ -64,8 +86,8 @@ public final class ConfigEventManager {
      * @param l the listener not null.
      * @param eventType the event type to which this listener listens to.
      */
-	public static <T extends ConfigEvent> void addListener(ConfigEventListener l, Class<T> eventType) {
-        spi().addListener(l);
+	public <T extends ConfigEvent> void addListener(ConfigEventListener l, Class<T> eventType) {
+        spi(classLoader).addListener(l);
     }
 
     /**
@@ -73,8 +95,8 @@ public final class ConfigEventManager {
      *
      * @param l the listener not null.
      */
-    public static void removeListener(ConfigEventListener l) {
-        spi().removeListener(l);
+    public void removeListener(ConfigEventListener l) {
+        spi(classLoader).removeListener(l);
     }
 
     /**
@@ -84,30 +106,30 @@ public final class ConfigEventManager {
      * @param l the listener, not null.
      * @param eventType the event type to which this listener listens to.
      */
-	public static <T extends ConfigEvent> void removeListener(ConfigEventListener l, Class<T> eventType) {
-        spi().removeListener(l);
+	public <T extends ConfigEvent> void removeListener(ConfigEventListener l, Class<T> eventType) {
+        spi(classLoader).removeListener(l);
     }
 
     /**
      * Access all registered ConfigEventListeners listening to a given event type.
      * @param type the event type
      * @param <T> type param
-     * @return a list with the listeners found, never null.
+     * @return a createList with the listeners found, never null.
      */
-	public static <T extends ConfigEvent>
+	public <T extends ConfigEvent>
         Collection<? extends ConfigEventListener> getListeners(Class<T> type) {
-        return spi().getListeners(type);
+        return spi(classLoader).getListeners(type);
     }
 
     /**
      * Access all registered ConfigEventListeners listening to a all kind of event types globally.
      * 
      * @param <T> the type of the event.
-     * @return a list with the listeners found, never null.
+     * @return a createList with the listeners found, never null.
      */
-    public static <T extends ConfigEvent>
+    public <T extends ConfigEvent>
     Collection<? extends ConfigEventListener> getListeners() {
-        return spi().getListeners();
+        return spi(classLoader).getListeners();
     }
 
     /**
@@ -116,8 +138,8 @@ public final class ConfigEventManager {
      * @param <T> the type of the event.
      * @param event the event, not null.
      */
-    public static <T> void fireEvent(ConfigEvent<?> event) {
-        spi().fireEvent(event);
+    public <T> void fireEvent(ConfigEvent<?> event) {
+        spi(classLoader).fireEvent(event);
     }
 
     /**
@@ -126,8 +148,8 @@ public final class ConfigEventManager {
      * @param <T> the type of the event.
      * @param event the event, not null.
      */
-    public static <T> void fireEventAsynch(ConfigEvent<?> event) {
-        spi().fireEventAsynch(event);
+    public <T> void fireEventAsynch(ConfigEvent<?> event) {
+        spi(classLoader).fireEventAsynch(event);
     }
 
     /**
@@ -142,8 +164,8 @@ public final class ConfigEventManager {
      * @see #isChangeMonitoring()
      * @see #getChangeMonitoringPeriod()
      */
-    public static void enableChangeMonitoring(boolean enable) {
-        spi().enableChangeMonitor(enable);
+    public void enableChangeMonitoring(boolean enable) {
+        spi(classLoader).enableChangeMonitor(enable);
     }
 
     /**
@@ -152,8 +174,8 @@ public final class ConfigEventManager {
      * @return true, if the change monitoring service is currently running.
      * @see #enableChangeMonitoring(boolean)
      */
-    public static boolean isChangeMonitoring() {
-        return spi().isChangeMonitorActive();
+    public boolean isChangeMonitoring() {
+        return spi(classLoader).isChangeMonitorActive();
     }
 
     /**
@@ -161,8 +183,8 @@ public final class ConfigEventManager {
      *
      * @return the check period in ms.
      */
-    public static long getChangeMonitoringPeriod(){
-        return spi().getChangeMonitoringPeriod();
+    public long getChangeMonitoringPeriod(){
+        return spi(classLoader).getChangeMonitoringPeriod();
     }
 
     /**
@@ -172,8 +194,15 @@ public final class ConfigEventManager {
      * @see #enableChangeMonitoring(boolean)
      * @see #isChangeMonitoring()
      */
-    public static void setChangeMonitoringPeriod(long millis){
-        spi().setChangeMonitoringPeriod(millis);
+    public void setChangeMonitoringPeriod(long millis){
+        spi(classLoader).setChangeMonitoringPeriod(millis);
     }
 
+    /**
+     * Get the underlying target classloader.
+     * @return the classloader, not null.
+     */
+    public ClassLoader getClassLoader() {
+        return this.classLoader;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java
index 5b75b61..0ec7e1e 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChange.java
@@ -30,7 +30,7 @@ import java.util.UUID;
 
 /**
  * Event that contains a setCurrent current changes that were applied or could be applied.
- * This class is immutable and thread-safe. To create instances use
+ * This class is immutable and thread-safe. To createObject instances use
  * {@link PropertySourceChangeBuilder}.
  *
  * Created by Anatole on 22.10.2014.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java
index 79061ba..6546338 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/ConfigurationChangeBuilder.java
@@ -36,7 +36,7 @@ import java.util.TreeMap;
  * contains the changed {@link org.apache.tamaya.spi.PropertySource} (Note: the reference to a property source is never affected by a
  * change, its only the data of the property source).</li>
  * <li>If so corresponding actions might be taken, such as reevaluating the configuration values (depending on
- * the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to create a change
+ * the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to createObject a change
  * event on configuration level.
  * </ol>
  */
@@ -161,10 +161,10 @@ public final class ConfigurationChangeBuilder {
     }
 
     /**
-     * Applies a single key/value change.
+     * Applies a single key/createValue change.
      *
      * @param key   the changed key
-     * @param value the new value.
+     * @param value the new createValue.
      * @return this instance for chaining.
      */
     public ConfigurationChangeBuilder addChange(String key, String value) {
@@ -215,7 +215,7 @@ public final class ConfigurationChangeBuilder {
      * <ul>
      * <li>the registered codecs provider provides codecs for the corresponding keys, or </li>
      * <li>default codecs are present for the given type, or</li>
-     * <li>the value is an instanceof String</li>
+     * <li>the createValue is an instanceof String</li>
      * </ul>
      *
      * @param changes the changes to be applied, not null.
@@ -229,7 +229,7 @@ public final class ConfigurationChangeBuilder {
     }
 
     /**
-     * This method will create a change setCurrent that clears all entries fromMap the given base configuration/properties.
+     * This method will createObject a change setCurrent that clears all entries fromMap the given base configuration/properties.
      *
      * @return the builder for chaining.
      */

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
index 2707200..45375ec 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
@@ -36,7 +36,7 @@ import java.util.logging.Logger;
 /**
  * /**
  * Configuration implementation that stores all current values of a given (possibly dynamic, contextual and non server
- * capable instance) and is fully serializable. Note that hereby only the scannable key/value pairs are considered.
+ * capable instance) and is fully serializable. Note that hereby only the scannable key/createValue pairs are considered.
  */
 public final class FrozenConfiguration implements Configuration, Serializable {
     private static final long serialVersionUID = -6373137316556444171L;
@@ -101,15 +101,15 @@ public final class FrozenConfiguration implements Configuration, Serializable {
     }
 
     /**
-     * Accesses the current String value for the given key and tries to convert it
+     * Accesses the current String createValue for the given key and tries to convert it
      * using the {@link org.apache.tamaya.spi.PropertyConverter} instances provided by the current
      * {@link org.apache.tamaya.spi.ConfigurationContext}.
      *
      * @param key  the property's absolute, or relative path, e.g. @code
      *             a/b/c/d.myProperty}.
      * @param type The target type required, not null.
-     * @param <T>  the value type
-     * @return the converted value, never null.
+     * @param <T>  the createValue type
+     * @return the converted createValue, never null.
      */
     @Override
     public <T> T get(String key, TypeLiteral<T> type) {
@@ -128,11 +128,11 @@ public final class FrozenConfiguration implements Configuration, Serializable {
                         }
                     } catch (Exception e) {
                         Logger.getLogger(getClass().getName())
-                                .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " + value,
+                                .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert createValue: " + value,
                                         e);
                     }
                 }
-                throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " + key
+                throw new ConfigException("Unparseable config createValue for type: " + type.getRawType().getName() + ": " + key
                         + ", supported formats: " + context.getSupportedFormats());
             }finally{
                 ConversionContext.reset();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java b/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java
index 0bc71ce..65da582 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/FrozenPropertySource.java
@@ -29,7 +29,7 @@ import java.util.Map;
 
 /**
  * PropertySource implementation that stores all current values of a given (possibly dynamic, contextual and non server
- * capable instance) and is fully serializable. Note that hereby only the scannable key/value pairs are considered.
+ * capable instance) and is fully serializable. Note that hereby only the scannable key/createValue pairs are considered.
  */
 public final class FrozenPropertySource implements PropertySource, Serializable {
     private static final long serialVersionUID = -6373137316556444171L;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
index d7e73b8..d256713 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChange.java
@@ -30,7 +30,7 @@ import java.util.UUID;
 
 /**
  * Event that contains a setCurrent current changes that were applied or could be applied.
- * This class is immutable and thread-safe. To create instances use
+ * This class is immutable and thread-safe. To createObject instances use
  * {@link PropertySourceChangeBuilder}.
  *
  * Created by Anatole on 22.10.2014.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java
index 51da86d..cd77515 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/PropertySourceChangeBuilder.java
@@ -38,7 +38,7 @@ import java.util.TreeMap;
  *     contains the changed {@link org.apache.tamaya.spi.PropertySource} (Note: the reference tova property source is never affected by a
  *     change, its only the data of the property source).</li>
  *     <li>If so corresponding action may be taken, such as reevaluating the configuration values (depending on
- *     the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to create a change
+ *     the update policy) or reevaluating the complete {@link org.apache.tamaya.Configuration} to createObject a change
  *     event on configuration level.
  * </ol>
  */
@@ -186,7 +186,7 @@ public final class PropertySourceChangeBuilder {
      * <ul>
      * <li>the registered codecs provider provides codecs for the corresponding keys, or </li>
      * <li>default codecs are present for the given type, or</li>
-     * <li>the value is an instanceof String</li>
+     * <li>the createValue is an instanceof String</li>
      * </ul>
      *
      * @param changes the changes to be applied, not null.
@@ -200,7 +200,7 @@ public final class PropertySourceChangeBuilder {
     }
 
     /**
-     * This method will create a change setCurrent that clears all entries fromMap the given base configuration/properties.
+     * This method will createObject a change setCurrent that clears all entries fromMap the given base configuration/properties.
      *
      * @return the builder for chaining.
      */

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java
index c806446..ebfa356 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserver.java
@@ -19,7 +19,6 @@
 package org.apache.tamaya.events.internal;
 
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.events.ConfigEventManager;
 import org.apache.tamaya.events.ConfigurationChange;
 import org.apache.tamaya.events.ConfigurationChangeBuilder;
@@ -45,10 +44,13 @@ public class DefaultConfigChangeObserver {
 
     private volatile boolean running;
 
+    private ClassLoader classLoader;
+
     /**
      * Constructor. Also loads all registered listeners.
      */
-    public DefaultConfigChangeObserver() {
+    public DefaultConfigChangeObserver(ClassLoader classLoader) {
+        this.classLoader = Objects.requireNonNull(classLoader);
         LOG.info("Registering config change observer, rechecking config changes every " + checkPeriod + " ms.");
         timer.scheduleAtFixedRate(new TimerTask() {
             @Override
@@ -62,7 +64,7 @@ public class DefaultConfigChangeObserver {
 
     public void checkConfigurationUpdate() {
         LOG.finest("Checking configuration for changes...");
-        FrozenConfiguration frozenConfig = FrozenConfiguration.of(Configuration.current());
+        FrozenConfiguration frozenConfig = FrozenConfiguration.of(Configuration.current(classLoader));
         ConfigurationChange changes;
 
         if (getLastConfig() != null) {
@@ -70,12 +72,10 @@ public class DefaultConfigChangeObserver {
                                                 .build();
             if(!changes.isEmpty()) {
                 LOG.info("Identified configuration changes, publishing changes:\n" + changes);
-                ConfigEventManager.fireEvent(changes);
+                ConfigEventManager.getInstance(classLoader).fireEvent(changes);
             }
         }
         setLastConfig(frozenConfig);
-
-
     }
 
     protected FrozenConfiguration getLastConfig() {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java
index a0d58bd..cbe8937 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/internal/DefaultConfigEventManagerSpi.java
@@ -21,6 +21,7 @@ package org.apache.tamaya.events.internal;
 import org.apache.tamaya.events.ConfigEvent;
 import org.apache.tamaya.events.ConfigEventListener;
 import org.apache.tamaya.events.spi.ConfigEventManagerSpi;
+import org.apache.tamaya.spi.ClassloaderAware;
 import org.apache.tamaya.spi.ServiceContextManager;
 import org.osgi.service.component.annotations.Component;
 
@@ -37,7 +38,7 @@ import java.util.logging.Logger;
  */
 @SuppressWarnings("rawtypes")
 @Component
-public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi {
+public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi, ClassloaderAware {
 
     private static final Logger LOG = Logger.getLogger(DefaultConfigEventManagerSpi.class.getName());
 
@@ -45,7 +46,9 @@ public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi {
 
     private final ExecutorService publisher = Executors.newCachedThreadPool();
 
-    private final DefaultConfigChangeObserver changeObserver = new DefaultConfigChangeObserver();
+    private ClassLoader classLoader;
+
+    private DefaultConfigChangeObserver changeObserver;
 
     /**
      * Constructor. Also loads all registered listeners.
@@ -185,6 +188,17 @@ public class DefaultConfigEventManagerSpi implements ConfigEventManagerSpi {
         changeObserver.enableMonitoring(enable);
     }
 
+    @Override
+    public void init(ClassLoader classLoader) {
+        this.classLoader = Objects.requireNonNull(classLoader);
+        changeObserver = new DefaultConfigChangeObserver(classLoader);
+    }
+
+    @Override
+    public ClassLoader getClassLoader() {
+        return classLoader;
+    }
+
 
     /**
      * Tasks to inform observers on detected configuration changes.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java
index 94a0a9d..1f7dd7c 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ChangeableGlobalPropertySource.java
@@ -42,9 +42,9 @@ public class ChangeableGlobalPropertySource extends BasePropertySource{
     }
 
     /**
-     * Put a value (globally) into this property source.
+     * Put a createValue (globally) into this property source.
      * @param key the key, not null
-     * @param value the value, not null
+     * @param value the createValue, not null
      * @return the entry replaced, or null.
      */
     public static String put(String key, String value){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java
index 1e658af..8435df8 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ConfigEventManagerTest.java
@@ -37,11 +37,11 @@ public class ConfigEventManagerTest {
                 testAddListenerValue = event.getResource();
             }
         };
-        ConfigEventManager.addListener(testListener);
-        ConfigEventManager.fireEvent(new SimpleEvent("Event1"));
+        ConfigEventManager.getInstance().addListener(testListener);
+        ConfigEventManager.getInstance().fireEvent(new SimpleEvent("Event1"));
         assertEquals(testAddListenerValue, "Event1");
-        ConfigEventManager.removeListener(testListener);
-        ConfigEventManager.fireEvent(new SimpleEvent("Event2"));
+        ConfigEventManager.getInstance().removeListener(testListener);
+        ConfigEventManager.getInstance().fireEvent(new SimpleEvent("Event2"));
         assertEquals(testAddListenerValue, "Event1");
     }
 
@@ -53,11 +53,11 @@ public class ConfigEventManagerTest {
                 testAddListenerValue = event.getResource();
             }
         };
-        ConfigEventManager.addListener(testListener);
-        ConfigEventManager.fireEvent(new SimpleEvent("Event1"));
+        ConfigEventManager.getInstance().addListener(testListener);
+        ConfigEventManager.getInstance().fireEvent(new SimpleEvent("Event1"));
         assertEquals(testAddListenerValue, "Event1");
-        ConfigEventManager.removeListener(testListener);
-        ConfigEventManager.fireEvent(new SimpleEvent("Event2"));
+        ConfigEventManager.getInstance().removeListener(testListener);
+        ConfigEventManager.getInstance().fireEvent(new SimpleEvent("Event2"));
         assertEquals(testAddListenerValue, "Event1");
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
index b90b0a9..fd7fb0b 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ConfigurationChangeTest.java
@@ -49,7 +49,7 @@ public class ConfigurationChangeTest {
         assertTrue(change.getChanges().size()==0);
         for (Map.Entry<String, String> en : config.getProperties().entrySet()) {
             if (!"[getMeta]frozenAt".equals(en.getKey())) {
-                if(en.getKey().contains("random.new")){ // dynamic generated value!
+                if(en.getKey().contains("random.new")){ // dynamic generated createValue!
                     continue;
                 }
                 assertEquals("Error for " + en.getKey(), en.getValue(), change.getResource().get(en.getKey()));

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java b/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java
index 264d99a..3ad8f12 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/FrozenConfigurationTest.java
@@ -60,7 +60,7 @@ public class FrozenConfigurationTest {
     @Test
     public void twoFrozenAreDifferentIfTheyHaveADifferentIdAndFrozenAtTimestamp() {
         Map<String, String> properties = new HashMap<>();
-        properties.put("key", "value");
+        properties.put("key", "createValue");
 
         Configuration configuration = Mockito.mock(Configuration.class);
         doReturn(properties).when(configuration).getProperties();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java b/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java
index da749c3..1661ab5 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/ObservedConfigTest.java
@@ -30,8 +30,8 @@ public class ObservedConfigTest {
 
     @Test
     public void testChangingConfig() throws IOException {
-        ConfigEventManager.setChangeMonitoringPeriod(100L);
-        ConfigEventManager.enableChangeMonitoring(true);
+        ConfigEventManager.getInstance().setChangeMonitoringPeriod(100L);
+        ConfigEventManager.getInstance().enableChangeMonitoring(true);
         while(MyConfigObserver.event==null) {
             try {
                 Thread.sleep(100);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java b/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java
index 2fd51c5..f04f510 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/PropertySourceChangeTest.java
@@ -106,7 +106,7 @@ public class PropertySourceChangeTest {
     @Test
     public void testGetUpdatedSizeWithUpdates() throws Exception {
         Map<String, String> addableMap = new HashMap<>();
-        addableMap.put("java.home", "/new/java/home/value");
+        addableMap.put("java.home", "/new/java/home/createValue");
 
         PropertySourceChange change = PropertySourceChangeBuilder.of(myPS)
                 .addChanges(

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
index 2ec7c1b..d12c5d6 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
@@ -107,15 +107,15 @@ public class TestConfigView implements ConfigOperator{
             }
 
             /**
-             * Accesses the current String value for the given key and tries to convert it
+             * Accesses the current String createValue for the given key and tries to convert it
              * using the {@link org.apache.tamaya.spi.PropertyConverter} instances provided by the current
              * {@link org.apache.tamaya.spi.ConfigurationContext}.
              *
              * @param key  the property's absolute, or relative path, e.g. @code
              *             a/b/c/d.myProperty}.
              * @param type The target type required, not null.
-             * @param <T>  the value type
-             * @return the converted value, never null.
+             * @param <T>  the createValue type
+             * @return the converted createValue, never null.
              */
             @Override
             public <T> T get(String key, TypeLiteral<T> type) {
@@ -135,11 +135,11 @@ public class TestConfigView implements ConfigOperator{
                                 }
                             } catch (Exception e) {
                                 Logger.getLogger(getClass().getName())
-                                        .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: "
+                                        .log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert createValue: "
                                                 + value, e);
                             }
                         }
-                        throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": "
+                        throw new ConfigException("Unparseable config createValue for type: " + type.getRawType().getName() + ": "
                                 + key + ", supportedFormats: " + context.getSupportedFormats());
                     }finally{
                         ConversionContext.reset();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java
index b1e3962..93345a9 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/folderobserver/TestObservingProvider.java
@@ -36,7 +36,7 @@ public class TestObservingProvider extends ObservingPropertySourceProvider{
 
     static{
         try {
-            // create some temporary config
+            // createObject some temporary config
             Path tempDir = Files.createTempDirectory("observedFolder");
 
             TestObservingProvider.propertyLocation = tempDir;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java
----------------------------------------------------------------------
diff --git a/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java b/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java
index 4bceacc..4aab1b8 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/internal/DefaultConfigChangeObserverTest.java
@@ -19,12 +19,15 @@
 package org.apache.tamaya.events.internal;
 
 import org.apache.tamaya.events.FrozenConfiguration;
+import org.apache.tamaya.spi.ServiceContextManager;
 import org.junit.Test;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
 public class DefaultConfigChangeObserverTest {
-    private DefaultConfigChangeObserver sut = new DefaultConfigChangeObserver();
+    private DefaultConfigChangeObserver sut = new DefaultConfigChangeObserver(
+            ServiceContextManager.getDefaultClassLoader()
+    );
 
     @Test
     public void enableMonitoringCalledWithTrueEnablesMonitoring() {
@@ -50,7 +53,9 @@ public class DefaultConfigChangeObserverTest {
 
     @Test
     public void lastConfigIsSetByTheFirstCheckForChangesInTheConfiguration() {
-        DefaultConfigChangeObserver observer = new DefaultConfigChangeObserver();
+        DefaultConfigChangeObserver observer = new DefaultConfigChangeObserver(
+                ServiceContextManager.getDefaultClassLoader()
+        );
 
         assertThat(observer.getLastConfig()).describedAs("There must be no last configuration after creation.")
                                             .isNull();
@@ -63,7 +68,9 @@ public class DefaultConfigChangeObserverTest {
 
     @Test
     public void lastConfigIsUpdatedByASubSequentCheckForChangesInTheConfigration() {
-        DefaultConfigChangeObserver observer = new DefaultConfigChangeObserver();
+        DefaultConfigChangeObserver observer = new DefaultConfigChangeObserver(
+                ServiceContextManager.getDefaultClassLoader()
+        );
 
         observer.checkConfigurationUpdate();
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/features/src/main/java/org/apache/tamaya/features/Features.java
----------------------------------------------------------------------
diff --git a/modules/features/src/main/java/org/apache/tamaya/features/Features.java b/modules/features/src/main/java/org/apache/tamaya/features/Features.java
index fffdf8b..9db355c 100644
--- a/modules/features/src/main/java/org/apache/tamaya/features/Features.java
+++ b/modules/features/src/main/java/org/apache/tamaya/features/Features.java
@@ -114,7 +114,7 @@ public final class Features {
      * @return true, if <i>tamaya-filter</i> is on the classpath.
      */
     public static boolean filterSupportAvailable() {
-        return checkClassIsLoadable("org.apache.tamaya.filter.ConfigurationFilter");
+        return checkClassIsLoadable("org.apache.tamaya.filter.ThreadFilterContext");
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.java b/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.java
deleted file mode 100644
index 0189648..0000000
--- a/modules/filter/src/main/java/org/apache/tamaya/filter/CompositeFilter.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.filter;
-
-import org.apache.tamaya.spi.PropertyFilter;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * A setCurrent of property filter and accessor methods. This class is built for
- * usage within a single threaded context, so it is NOT thread-safe.
- */
-public final class CompositeFilter implements PropertyFilter{
-    /** The filters. */
-    private List<PropertyFilter> filters = new ArrayList<>();
-
-    /**
-     * Add a filter.
-     * @param filter the filter.
-     */
-    public void addFilter(PropertyFilter filter){
-        filters.add(filter);
-    }
-
-    /**
-     * Adds a filter at given position.
-     * @param pos the position.
-     * @param filter the filter.
-     */
-    public void addFilter(int pos, PropertyFilter filter){
-        filters.add(pos, filter);
-    }
-
-    /**
-     * Removes a filter at a given position.
-     * @param pos the position.
-     * @return the filter removed, or null.
-     */
-    public PropertyFilter removeFilter(int pos){
-        return filters.remove(pos);
-    }
-
-    /**
-     * Removes a filter.
-     * @param filter the filter to be removed, not null.
-     */
-    public void removeFilter(PropertyFilter filter) {
-        filters.remove(filter);
-    }
-
-    /**
-     * Clears all filters.
-     */
-    public void clearFilters(){
-        filters.clear();
-    }
-
-    /**
-     * Set the filters.
-     * @param filters the filters to be applied.
-     */
-    public void setFilters(PropertyFilter... filters){
-        setFilters(Arrays.asList(filters));
-    }
-
-    /**
-     * Set the filters.
-     * @param filters the filters to be applied.
-     */
-    public void setFilters(Collection<PropertyFilter> filters) {
-        this.filters.clear();
-        this.filters.addAll(filters);
-    }
-
-    /**
-     * Get all filters.
-     * @return all filters.
-     */
-    public List<PropertyFilter> getFilters(){
-        return Collections.unmodifiableList(filters);
-    }
-
-    @Override
-    public PropertyValue filterProperty(PropertyValue valueToBeFiltered) {
-        for(PropertyFilter filter:filters){
-            valueToBeFiltered = filter.filterProperty(valueToBeFiltered);
-        }
-        return valueToBeFiltered;
-    }
-
-    @Override
-    public String toString() {
-        return "ProgrammableFilter{" +
-                "filters=" + filters +
-                '}';
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java b/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java
deleted file mode 100644
index 54b0af0..0000000
--- a/modules/filter/src/main/java/org/apache/tamaya/filter/ConfigurationFilter.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.filter;
-
-import org.apache.tamaya.spi.PropertyFilter;
-import org.apache.tamaya.spi.PropertyValue;
-import org.osgi.service.component.annotations.Component;
-import org.apache.tamaya.spi.FilterContext;
-
-/**
- * Hereby
- * <ul>
- *     <li><b>Single</b> filters are applied only when values are explicitly accessed. This is useful, e.g. for
- *     filtering passwords into clear text variants. Nevertheless metadata keys hidden on map level must be
- *     accessible (=not filtered) when accessed as single values.</li>
- *     <li><b>Map</b> filters are applied when values are filtered as part of a full properties access.
- *     Often filtering in these cases is more commonly applied, e.g. you dont want to show up all kind of metadata.
- *     </li>
- * </ul>
- *     For both variants individual filter rules can be applied here. All filters configured are managed on a
- *     thread-local level, so this class is typically used to temporarely filter out some values. Do not forget to
- *     restore its state, when not using a thread anymore (especially important in multi-threaded environments), not
- *     doing so will create nasty side effects of configuration not being visisble depending on the thread
- *     active.
- */
-@Component
-public final class ConfigurationFilter implements PropertyFilter{
-
-    static final ThreadLocal<Boolean> THREADED_METADATA_FILTERED = new ThreadLocal<Boolean>(){
-        @Override
-        protected Boolean initialValue() {
-            return Boolean.TRUE;
-        }
-    };
-
-    private static final ThreadLocal<CompositeFilter> THREADED_MAP_FILTERS = new ThreadLocal<CompositeFilter>(){
-        @Override
-        protected CompositeFilter initialValue() {
-            return new CompositeFilter();
-        }
-    };
-
-    private static final ThreadLocal<CompositeFilter> THREADED_VALUE_FILTERS = new ThreadLocal<CompositeFilter>(){
-        @Override
-        protected CompositeFilter initialValue() {
-            return new CompositeFilter();
-        }
-    };
-
-    /**
-     * Flag if metadata entries (starting with an '_') are filtered out on when accessing multiple properties, default
-     * is {@code true}.
-     * @return true, if metadata entries (starting with an '_') are to be filtered.
-     */
-    public static boolean isMetadataFiltered(){
-        return THREADED_METADATA_FILTERED.get();
-    }
-
-    /**
-     * Seactivates metadata filtering also on global map access for this thread.
-     * @see #cleanupFilterContext()
-     * @param filtered true,to enable metadata filtering (default).
-     */
-    public static void setMetadataFiltered(boolean filtered){
-        THREADED_METADATA_FILTERED.set(filtered);
-    }
-
-    /**
-     * Access the filtering configuration that is used on the current thread for
-     * filtering single property values accessed.
-     *
-     * @return the filtering config, never null.
-     */
-    public static CompositeFilter getSingleValueFilterContext(){
-        return THREADED_VALUE_FILTERS.get();
-    }
-
-    /**
-     * Access the filtering configuration that is used used on the current thread
-     * for filtering configuration properties accessed as full
-     * map.
-     * @return the filtering config, never null.
-     */
-    public static CompositeFilter getMapFilterContext(){
-        return THREADED_MAP_FILTERS.get();
-    }
-
-    /**
-     * Removes all programmable filters active on the current thread.
-     */
-    public static void cleanupFilterContext(){
-        THREADED_MAP_FILTERS.get().clearFilters();
-        THREADED_VALUE_FILTERS.get().clearFilters();
-        THREADED_METADATA_FILTERED.set(true);
-    }
-
-    @Override
-    public PropertyValue filterProperty(PropertyValue valueToBeFiltered) {
-        FilterContext context = FilterContext.get();
-        if(context==null || context.isSinglePropertyScoped()){
-            for(PropertyFilter pred: THREADED_VALUE_FILTERS.get().getFilters()){
-                valueToBeFiltered = pred.filterProperty(valueToBeFiltered);
-            }
-        }else{
-            for(PropertyFilter pred: THREADED_MAP_FILTERS.get().getFilters()){
-                valueToBeFiltered = pred.filterProperty(valueToBeFiltered);
-            }
-        }
-        return valueToBeFiltered;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadBasedConfigurationFilter.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadBasedConfigurationFilter.java b/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadBasedConfigurationFilter.java
new file mode 100644
index 0000000..1ba2962
--- /dev/null
+++ b/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadBasedConfigurationFilter.java
@@ -0,0 +1,127 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.filter;
+
+import org.apache.tamaya.spi.PropertyFilter;
+import org.apache.tamaya.spi.PropertyValue;
+import org.osgi.service.component.annotations.Component;
+import org.apache.tamaya.spi.FilterContext;
+
+/**
+ * Hereby
+ * <ul>
+ *     <li><b>Single</b> filters are applied only when values are explicitly accessed. This is useful, e.g. for
+ *     filtering passwords into clear text variants. Nevertheless metadata keys hidden on map level must be
+ *     accessible (=not filtered) when accessed as single values.</li>
+ *     <li><b>Map</b> filters are applied when values are filtered as part of a full properties access.
+ *     Often filtering in these cases is more commonly applied, e.g. you dont want to show up all kind of metadata.
+ *     </li>
+ * </ul>
+ *     For both variants individual filter rules can be applied here. All filters configured are managed on a
+ *     thread-local level, so this class is typically used to temporarely filter out some values. Do not forget to
+ *     restore its state, when not using a thread anymore (especially important in multi-threaded environments), not
+ *     doing so will createObject nasty side effects of configuration not being visisble depending on the thread
+ *     active.
+ */
+@Component
+public final class ThreadBasedConfigurationFilter implements PropertyFilter{
+
+    static final ThreadLocal<Boolean> THREADED_METADATA_FILTERED = new ThreadLocal<Boolean>(){
+        @Override
+        protected Boolean initialValue() {
+            return Boolean.TRUE;
+        }
+    };
+
+    private static final ThreadLocal<ThreadFilterContext> THREADED_MAP_FILTERS = new ThreadLocal<ThreadFilterContext>(){
+        @Override
+        protected ThreadFilterContext initialValue() {
+            return new ThreadFilterContext();
+        }
+    };
+
+    private static final ThreadLocal<ThreadFilterContext> THREADED_VALUE_FILTERS = new ThreadLocal<ThreadFilterContext>(){
+        @Override
+        protected ThreadFilterContext initialValue() {
+            return new ThreadFilterContext();
+        }
+    };
+
+    /**
+     * Flag if metadata entries (starting with an '_') are filtered out on when accessing multiple properties, default
+     * is {@code true}.
+     * @return true, if metadata entries (starting with an '_') are to be filtered.
+     */
+    public static boolean isMetadataFiltered(){
+        return THREADED_METADATA_FILTERED.get();
+    }
+
+    /**
+     * Seactivates metadata filtering also on global map access for this thread.
+     * @see #cleanupFilterContext()
+     * @param filtered true,to enable metadata filtering (default).
+     */
+    public static void setMetadataFiltered(boolean filtered){
+        THREADED_METADATA_FILTERED.set(filtered);
+    }
+
+    /**
+     * Access the filtering configuration that is used on the current thread for
+     * filtering single property values accessed.
+     *
+     * @return the filtering config, never null.
+     */
+    public static ThreadFilterContext getSingleValueFilterContext(){
+        return THREADED_VALUE_FILTERS.get();
+    }
+
+    /**
+     * Access the filtering configuration that is used used on the current thread
+     * for filtering configuration properties accessed as full
+     * map.
+     * @return the filtering config, never null.
+     */
+    public static ThreadFilterContext getMapFilterContext(){
+        return THREADED_MAP_FILTERS.get();
+    }
+
+    /**
+     * Removes all programmable filters active on the current thread.
+     */
+    public static void cleanupFilterContext(){
+        THREADED_MAP_FILTERS.get().clearFilters();
+        THREADED_VALUE_FILTERS.get().clearFilters();
+        THREADED_METADATA_FILTERED.set(true);
+    }
+
+    @Override
+    public PropertyValue filterProperty(PropertyValue valueToBeFiltered) {
+        FilterContext context = FilterContext.get();
+        if(context==null || context.isSinglePropertyScoped()){
+            for(PropertyFilter pred: THREADED_VALUE_FILTERS.get().getFilters()){
+                valueToBeFiltered = pred.filterProperty(valueToBeFiltered);
+            }
+        }else{
+            for(PropertyFilter pred: THREADED_MAP_FILTERS.get().getFilters()){
+                valueToBeFiltered = pred.filterProperty(valueToBeFiltered);
+            }
+        }
+        return valueToBeFiltered;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadFilterContext.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadFilterContext.java b/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadFilterContext.java
new file mode 100644
index 0000000..8d16572
--- /dev/null
+++ b/modules/filter/src/main/java/org/apache/tamaya/filter/ThreadFilterContext.java
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.filter;
+
+import org.apache.tamaya.spi.PropertyFilter;
+import org.apache.tamaya.spi.PropertyValue;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * A setCurrent of property filter and accessor methods. This class is built for
+ * usage within a single threaded context, so it is NOT thread-safe.
+ */
+public final class ThreadFilterContext implements PropertyFilter{
+    /** The filters. */
+    private List<PropertyFilter> filters = new ArrayList<>();
+
+    /**
+     * Add a filter.
+     * @param filter the filter.
+     */
+    public void addFilter(PropertyFilter filter){
+        filters.add(filter);
+    }
+
+    /**
+     * Adds a filter at given position.
+     * @param pos the position.
+     * @param filter the filter.
+     */
+    public void addFilter(int pos, PropertyFilter filter){
+        filters.add(pos, filter);
+    }
+
+    /**
+     * Removes a filter at a given position.
+     * @param pos the position.
+     * @return the filter removed, or null.
+     */
+    public PropertyFilter removeFilter(int pos){
+        return filters.remove(pos);
+    }
+
+    /**
+     * Removes a filter.
+     * @param filter the filter to be removed, not null.
+     */
+    public void removeFilter(PropertyFilter filter) {
+        filters.remove(filter);
+    }
+
+    /**
+     * Clears all filters.
+     */
+    public void clearFilters(){
+        filters.clear();
+    }
+
+    /**
+     * Set the filters.
+     * @param filters the filters to be applied.
+     */
+    public void setFilters(PropertyFilter... filters){
+        setFilters(Arrays.asList(filters));
+    }
+
+    /**
+     * Set the filters.
+     * @param filters the filters to be applied.
+     */
+    public void setFilters(Collection<PropertyFilter> filters) {
+        this.filters.clear();
+        this.filters.addAll(filters);
+    }
+
+    /**
+     * Get all filters.
+     * @return all filters.
+     */
+    public List<PropertyFilter> getFilters(){
+        return Collections.unmodifiableList(filters);
+    }
+
+    @Override
+    public PropertyValue filterProperty(PropertyValue valueToBeFiltered) {
+        for(PropertyFilter filter:filters){
+            valueToBeFiltered = filter.filterProperty(valueToBeFiltered);
+        }
+        return valueToBeFiltered;
+    }
+
+    @Override
+    public String toString() {
+        return "ProgrammableFilter{" +
+                "filters=" + filters +
+                '}';
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java b/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java
index fbfcb36..481b314 100644
--- a/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java
+++ b/modules/filter/src/main/java/org/apache/tamaya/filter/internal/DefaultMetadataFilter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.filter.internal;
 
-import org.apache.tamaya.filter.ConfigurationFilter;
+import org.apache.tamaya.filter.ThreadBasedConfigurationFilter;
 import org.apache.tamaya.spi.PropertyFilter;
 import org.apache.tamaya.spi.PropertyValue;
 import org.apache.tamaya.spi.FilterContext;
@@ -34,7 +34,7 @@ public final class DefaultMetadataFilter implements PropertyFilter{
             // When accessing keys explicitly, do not hide anything.
             return valueToBeFiltered;
         }
-        if(ConfigurationFilter.isMetadataFiltered()) {
+        if(ThreadBasedConfigurationFilter.isMetadataFiltered()) {
             if (context.getProperty().getKey().startsWith("_")) {
                 // Hide metadata entries.
                 return null;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter
----------------------------------------------------------------------
diff --git a/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter b/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter
index 806b833..ae0c115 100644
--- a/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter
+++ b/modules/filter/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter
@@ -16,4 +16,4 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-org.apache.tamaya.filter.ConfigurationFilter
\ No newline at end of file
+org.apache.tamaya.filter.ThreadBasedConfigurationFilter
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java b/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java
index 1b812ea..bf3b5f4 100644
--- a/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java
+++ b/modules/filter/src/test/java/org/apache/tamaya/filter/ConfigurationFilterTest.java
@@ -19,7 +19,6 @@
 package org.apache.tamaya.filter;
 
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.spi.PropertyFilter;
 import org.apache.tamaya.spi.PropertyValue;
 import org.junit.Test;
@@ -27,95 +26,95 @@ import org.junit.Test;
 import static org.junit.Assert.*;
 
 /**
- * Tests for {@link ConfigurationFilter}. Created by atsticks on 11.02.16.
+ * Tests for {@link ThreadBasedConfigurationFilter}. Created by atsticks on 11.02.16.
  */
 public class ConfigurationFilterTest {
 
     @Test
     public void testMetadataFiltered() throws Exception {
-        ConfigurationFilter.setMetadataFiltered(true);
-        assertTrue(ConfigurationFilter.isMetadataFiltered());
-        ConfigurationFilter.setMetadataFiltered(false);
-        assertFalse(ConfigurationFilter.isMetadataFiltered());
+        ThreadBasedConfigurationFilter.setMetadataFiltered(true);
+        assertTrue(ThreadBasedConfigurationFilter.isMetadataFiltered());
+        ThreadBasedConfigurationFilter.setMetadataFiltered(false);
+        assertFalse(ThreadBasedConfigurationFilter.isMetadataFiltered());
     }
 
     @Test
     public void testGetSingleFilters() throws Exception {
         Configuration config = Configuration.current();
-        assertNotNull(ConfigurationFilter.getSingleValueFilterContext());
+        assertNotNull(ThreadBasedConfigurationFilter.getSingleValueFilterContext());
         PropertyFilter testFilter = new PropertyFilter() {
             @Override
             public PropertyValue filterProperty(PropertyValue value) {
                 return value.setValue(value.getKey() + ":testGetSingleFilters");
             }
         };
-        ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter);
+        ThreadBasedConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter);
         assertEquals("user.home:testGetSingleFilters", config.get("user.home"));
-        ConfigurationFilter.getSingleValueFilterContext().removeFilter(testFilter);
+        ThreadBasedConfigurationFilter.getSingleValueFilterContext().removeFilter(testFilter);
         assertNotSame("user.home:testGetSingleFilters", config.get("user.home"));
     }
 
     @Test
     public void testRemoveSingleFiltersAt0() throws Exception {
         Configuration config = Configuration.current();
-        assertNotNull(ConfigurationFilter.getSingleValueFilterContext());
+        assertNotNull(ThreadBasedConfigurationFilter.getSingleValueFilterContext());
         PropertyFilter testFilter = new PropertyFilter() {
             @Override
             public PropertyValue filterProperty(PropertyValue value) {
                 return value.setValue(value.getKey() + ":testGetSingleFilters");
             }
         };
-        ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter);
+        ThreadBasedConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter);
         assertEquals("user.home:testGetSingleFilters", config.get("user.home"));
-        ConfigurationFilter.getSingleValueFilterContext().removeFilter(0);
+        ThreadBasedConfigurationFilter.getSingleValueFilterContext().removeFilter(0);
         assertNotSame("user.home:testGetSingleFilters", config.get("user.home"));
     }
 
     @Test
     public void testGetMapFilters() throws Exception {
         Configuration config = Configuration.current();
-        assertNotNull(ConfigurationFilter.getMapFilterContext());
+        assertNotNull(ThreadBasedConfigurationFilter.getMapFilterContext());
         PropertyFilter testFilter = new PropertyFilter() {
             @Override
             public PropertyValue filterProperty(PropertyValue value) {
                 return value.setValue(value.getKey() + ":testGetMapFilters");
             }
         };
-        ConfigurationFilter.getMapFilterContext().addFilter(testFilter);
+        ThreadBasedConfigurationFilter.getMapFilterContext().addFilter(testFilter);
         assertEquals("user.home:testGetMapFilters", config.getProperties().get("user.home"));
-        ConfigurationFilter.getSingleValueFilterContext().removeFilter(testFilter);
+        ThreadBasedConfigurationFilter.getSingleValueFilterContext().removeFilter(testFilter);
         assertNotSame("user.home:testGetSingleFilters", config.getProperties().get("user.home"));
     }
 
     @Test
     public void testRemoveMapFilterAt0() throws Exception {
         Configuration config = Configuration.current();
-        assertNotNull(ConfigurationFilter.getMapFilterContext());
+        assertNotNull(ThreadBasedConfigurationFilter.getMapFilterContext());
         PropertyFilter testFilter = new PropertyFilter() {
             @Override
             public PropertyValue filterProperty(PropertyValue value) {
                 return value.setValue(value.getKey() + ":testGetMapFilters");
             }
         };
-        ConfigurationFilter.getMapFilterContext().addFilter(testFilter);
+        ThreadBasedConfigurationFilter.getMapFilterContext().addFilter(testFilter);
         assertEquals("user.home:testGetMapFilters", config.getProperties().get("user.home"));
-        ConfigurationFilter.getMapFilterContext().removeFilter(0);
+        ThreadBasedConfigurationFilter.getMapFilterContext().removeFilter(0);
         assertNotSame("user.home:testGetSingleFilters", config.getProperties().get("user.home"));
     }
 
     @Test
     public void testClearFilters() throws Exception {
         Configuration config = Configuration.current();
-        assertNotNull(ConfigurationFilter.getSingleValueFilterContext());
+        assertNotNull(ThreadBasedConfigurationFilter.getSingleValueFilterContext());
         PropertyFilter testFilter = new PropertyFilter() {
             @Override
             public PropertyValue filterProperty(PropertyValue value) {
                 return value.setValue(value.getKey() + ":testGetSingleFilters");
             }
         };
-        ConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter);
+        ThreadBasedConfigurationFilter.getSingleValueFilterContext().addFilter(testFilter);
         assertEquals("user.home:testGetSingleFilters", config.get("user.home"));
-        ConfigurationFilter.cleanupFilterContext();
+        ThreadBasedConfigurationFilter.cleanupFilterContext();
         assertNotSame("user.home:testGetSingleFilters", config.get("user.home"));
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java
----------------------------------------------------------------------
diff --git a/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java b/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java
index ef28970..5f7f790 100644
--- a/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java
+++ b/modules/filter/src/test/java/org/apache/tamaya/filter/ProgrammableFilterTest.java
@@ -33,7 +33,7 @@ import java.util.Map;
 import static org.junit.Assert.*;
 
 /**
- * Tests for {@link CompositeFilter}. Created by atsticks on 11.02.16.
+ * Tests for {@link ThreadFilterContext}. Created by atsticks on 11.02.16.
  */
 public class ProgrammableFilterTest {
 
@@ -44,7 +44,7 @@ public class ProgrammableFilterTest {
 
     @Test
     public void testAddRemoveFilter() throws Exception {
-        CompositeFilter filter = new CompositeFilter();
+        ThreadFilterContext filter = new ThreadFilterContext();
         Map<String,PropertyValue> map = new HashMap<>();
         FilterContext context1 = new FilterContext(test1Property, map, context);
         FilterContext context2 = new FilterContext(test2Property, map, context);
@@ -86,7 +86,7 @@ public class ProgrammableFilterTest {
 
     @Test
     public void testClearFilters() throws Exception {
-        CompositeFilter filter = new CompositeFilter();
+        ThreadFilterContext filter = new ThreadFilterContext();
         RegexPropertyFilter regexFilter = new RegexPropertyFilter();
         regexFilter.setIncludes("test1.*");
         Map<String,String> map = new HashMap<>();
@@ -125,7 +125,7 @@ public class ProgrammableFilterTest {
 
     @Test
     public void testSetFilters() throws Exception {
-        CompositeFilter filter = new CompositeFilter();
+        ThreadFilterContext filter = new ThreadFilterContext();
         RegexPropertyFilter regexFilter = new RegexPropertyFilter();
         regexFilter.setIncludes("test\\..*");
         Map<String,PropertyValue> map = new HashMap<>();
@@ -157,7 +157,7 @@ public class ProgrammableFilterTest {
 
     @Test
     public void testSetFilters1() throws Exception {
-        CompositeFilter filter = new CompositeFilter();
+        ThreadFilterContext filter = new ThreadFilterContext();
         RegexPropertyFilter regexFilter = new RegexPropertyFilter();
         regexFilter.setIncludes("test1.*");
 
@@ -185,7 +185,7 @@ public class ProgrammableFilterTest {
 
     @Test
     public void testGetFilters() throws Exception {
-        CompositeFilter filter = new CompositeFilter();
+        ThreadFilterContext filter = new ThreadFilterContext();
         assertNotNull(filter.getFilters());
         assertTrue(filter.getFilters().isEmpty());
         RegexPropertyFilter regexFilter = new RegexPropertyFilter();
@@ -199,7 +199,7 @@ public class ProgrammableFilterTest {
 
     @Test
     public void testToString() throws Exception {
-        CompositeFilter filter = new CompositeFilter();
+        ThreadFilterContext filter = new ThreadFilterContext();
         assertFalse(filter.toString().contains("test\\..*"));
         assertTrue(filter.toString().contains("ProgrammableFilter"));
         assertFalse(filter.toString().contains("RegexPropertyFilter"));

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/formats/base/pom.xml
----------------------------------------------------------------------
diff --git a/modules/formats/base/pom.xml b/modules/formats/base/pom.xml
index a2007ce..6fd3c13 100644
--- a/modules/formats/base/pom.xml
+++ b/modules/formats/base/pom.xml
@@ -29,7 +29,7 @@ under the License.
     </parent>
 
     <artifactId>tamaya-formats</artifactId>
-    <name>Apache Tamaya Modules Formats Common</name>
+    <name>Apache Tamaya Modules - Formats Common</name>
     <packaging>jar</packaging>
 
     <dependencies>
@@ -54,7 +54,7 @@ under the License.
             <artifactId>tamaya-functions</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <!-- Test scope only, do not create a code dependency! -->
+        <!-- Test scope only, do not createObject a code dependency! -->
         <dependency>
             <groupId>org.apache.tamaya</groupId>
             <artifactId>tamaya-core</artifactId>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/36c32fcf/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java
----------------------------------------------------------------------
diff --git a/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java b/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java
index 0e4c72e..b77949e 100644
--- a/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java
+++ b/modules/formats/base/src/main/java/org/apache/tamaya/format/BaseFormatPropertySourceProvider.java
@@ -38,7 +38,7 @@ import java.util.logging.Logger;
  * Implementation of a {@link PropertySourceProvider} that reads configuration from some given resource paths
  * and using the given formats. The resource path are resolved as classpath resources. This can be changed by
  * overriding {@link #getPropertySources()}.
- * For each resource found the configuration formats passed getChild a chance to read the resource, if they succeed the
+ * For each resource found the configuration formats passed getField a chance to read the resource, if they succeed the
  * result is taken as the providers PropertySources to be exposed.
  */
 public abstract class BaseFormatPropertySourceProvider implements PropertySourceProvider {
@@ -122,7 +122,7 @@ public abstract class BaseFormatPropertySourceProvider implements PropertySource
 
 
     /**
-     * Method to create a {@link org.apache.tamaya.spi.PropertySource} based on the given entries read.
+     * Method to createObject a {@link org.apache.tamaya.spi.PropertySource} based on the given entries read.
      *
      * @param data the configuration data, not null.
      * @return the {@link org.apache.tamaya.spi.PropertySource} instance ready to be registered.