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-sandbox/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/af319373
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/af319373
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/af319373

Branch: refs/heads/master
Commit: af31937328f477b6b94902d490a04706617f49a8
Parents: 4c323c3
Author: Anatole Tresch <[email protected]>
Authored: Tue Oct 23 18:40:49 2018 +0200
Committer: Anatole Tresch <[email protected]>
Committed: Tue Oct 23 18:40:50 2018 +0200

----------------------------------------------------------------------
 .../tamaya/commons/IniConfigurationFormat.java  |  11 +-
 .../tamaya/commons/XmlConfigurationFormat.java  |  10 +-
 .../tamaya/camel/TamayaPropertiesComponent.java |  55 ++++++--
 .../tamaya/camel/TamayaPropertyResolver.java    |  24 +++-
 collections/pom.xml                             |   5 +
 .../collections/AdaptiveCombinationPolicy.java  |  29 ++--
 .../tamaya/collections/ArrayListConverter.java  |   7 +-
 .../tamaya/collections/CollectionConverter.java |  29 ++--
 .../collections/ConcurrentHashMapConverter.java |   9 +-
 .../tamaya/collections/HashMapConverter.java    |   9 +-
 .../tamaya/collections/HashSetConverter.java    |   9 +-
 .../tamaya/collections/ItemTokenizer.java       |  91 ++++++------
 .../tamaya/collections/LinkedListConverter.java |   9 +-
 .../tamaya/collections/ListConverter.java       |  27 ++--
 .../apache/tamaya/collections/MapConverter.java |  29 ++--
 .../apache/tamaya/collections/SetConverter.java |  27 ++--
 .../tamaya/collections/SortedMapConverter.java  |   5 +-
 .../tamaya/collections/SortedSetConverter.java  |   5 +-
 .../tamaya/collections/TreeMapConverter.java    |   9 +-
 .../tamaya/collections/TreeSetConverter.java    |   9 +-
 .../collections/CollectionAdvancedTests.java    |   9 +-
 .../collections/CollectionsBaseTests.java       |  25 ++--
 .../CollectionsTypedReadOnlyTests.java          |  27 ++--
 .../collections/CollectionsTypedTests.java      |  21 ++-
 .../collections/MyUpperCaseConverter.java       |   3 +-
 .../META-INF/javaconfiguration.properties       |  10 +-
 .../cdi/JavaConfigConfigurationProducer.java    |  10 +-
 .../tamaya/jsr382/JavaConfigAdapterTest.java    |   4 +-
 .../jsr382/JavaConfigConfigProviderTest.java    |   6 +-
 .../tamaya/jsr382/JavaConfigConfigTest.java     |  14 +-
 .../sysprops/ConfiguredSystemProperties.java    |   3 +-
 .../tamaya/consul/ConsulPropertySource.java     |   6 +-
 .../org/apache/tamaya/etcd/EtcdAccessor.java    |  36 ++---
 .../apache/tamaya/etcd/EtcdPropertySource.java  |  39 +++--
 .../apache/tamaya/etcd/EtcdAccessorTest.java    |   2 +-
 .../hazelcast/HazelcastPropertySource.java      |  11 +-
 .../tamaya/jodatime/DateTimeConverter.java      |   6 +-
 .../tamaya/jodatime/DateTimeZoneConverter.java  |  12 +-
 .../tamaya/jodatime/DurationConverter.java      |  38 +++--
 .../tamaya/jodatime/InstantConverter.java       |   7 +-
 .../tamaya/jodatime/LocalDateConverter.java     |   6 +-
 .../tamaya/jodatime/LocalTimeConverter.java     |   6 +-
 .../apache/tamaya/jodatime/PeriodConverter.java |  16 +--
 .../tamaya/jodatime/DateTimeConverterTest.java  |  34 ++---
 .../jodatime/DateTimeZoneConverterTest.java     |  27 ++--
 .../tamaya/jodatime/DurationConverterTest.java  |  26 ++--
 .../org/apache/tamaya/jodatime/FullStackIT.java |   6 +-
 .../tamaya/jodatime/PeriodConverterTest.java    |  26 ++--
 .../apache/tamaya/management/ManagedConfig.java |  14 +-
 .../tamaya/management/ManagedConfigMBean.java   |   6 +-
 .../apache/tamaya/metamodel/CachedFilter.java   |   7 +-
 .../org/apache/tamaya/metamodel/HideFilter.java |   3 +-
 .../tamaya/metamodel/ImmutableFilter.java       |   5 +-
 .../org/apache/tamaya/metamodel/MapFilter.java  |  12 +-
 .../org/apache/tamaya/metamodel/MaskFilter.java |   3 +-
 .../tamaya/metamodel/MetaConfiguration.java     |  23 ++-
 .../apache/tamaya/metamodel/MetaContext.java    |   2 +-
 .../apache/tamaya/metamodel/SecuredFilter.java  |   3 +-
 .../metamodel/ext/FilteredPropertySource.java   |  37 +++--
 .../internal/CombinationPolicyReader.java       |   1 -
 .../internal/ComponentConfigurator.java         |  16 +--
 .../DSLLoadingConfigurationProviderSpi.java     |   7 +-
 .../metamodel/internal/MetaContextReader.java   |   3 +-
 .../internal/PropertyConverterReader.java       |   1 -
 .../internal/PropertyFilterOrderingReader.java  |   1 -
 .../internal/PropertyFilterReader.java          |   1 -
 .../internal/PropertySourceOrderingReader.java  |   2 -
 .../internal/PropertySourceReader.java          |   4 +-
 .../tamaya/metamodel/spi/ItemFactory.java       |   2 +-
 .../metamodel/spi/MetaConfigurationReader.java  |   6 +-
 .../tamaya/metamodel/spi/SimpleResolver.java    |   2 +-
 .../tamaya/metamodel/ext/IntegrationTest.java   |  11 +-
 .../tamaya/metamodel/ext/MyConverter.java       |   3 +-
 .../apache/tamaya/metamodel/ext/MyFilter.java   |   3 +-
 .../internal/resolver/LoggingReader.java        |   8 +-
 .../ConfigDirPropertySourceProvider.java        |   7 +-
 .../MetainfConfigPropertySourceProvider.java    |   7 +-
 .../propertysources/PropertySourceBuilder.java  | 122 ----------------
 .../SimplePropertySourceBuilder.java            | 122 ++++++++++++++++
 ...MetainfConfigPropertySourceProviderTest.java |   2 +-
 .../tamaya/remote/BaseRemotePropertySource.java |  36 ++---
 .../tamaya/server/ConfigurationServices.java    |   8 +-
 .../java/org/apache/tamaya/server/Server.java   |   2 +-
 .../java/org/apache/tamaya/ui/TamayaUI.java     |   2 +-
 .../ConfigurationBasedMessageProvider.java      |   2 +-
 .../ui/internal/ConfiguredUserService.java      |   2 +-
 .../internal/ResourceBundleMessageProvider.java |   2 +-
 .../org/apache/tamaya/ui/views/ConfigView.java  |   2 +-
 .../views/TamayaGeneralSystemInfoProvider.java  |   2 +-
 .../org/apache/tamaya/uom/UnitConverter.java    |  10 +-
 .../apache/tamaya/uom/UnitConverterTest.java    |   6 +-
 .../apache/tamaya/usagetracker/ConfigUsage.java |   4 +-
 .../apache/tamaya/usagetracker/UsageStat.java   |   6 +-
 .../internal/DefaultConfigUsage.java            |   6 +-
 .../internal/UsageTrackerFilter.java            |  12 +-
 .../tamaya/usagetracker/spi/ConfigUsageSpi.java |   6 +-
 .../tamaya/model/ConfigUsageStatsTest.java      |   5 +-
 .../java/test/model/TestConfigAccessor.java     |   5 +-
 validation/pom.xml                              |   2 +-
 .../apache/tamaya/validation/ConfigModel.java   |  10 +-
 .../tamaya/validation/ConfigModelManager.java   | 141 +++++++++----------
 .../apache/tamaya/validation/ModelTarget.java   |   6 +-
 .../apache/tamaya/validation/Validation.java    |  38 ++---
 .../tamaya/validation/ValidationResult.java     |   2 +-
 .../internal/ConfigDocumentationBean.java       |   7 +-
 .../ConfiguredInlineModelProviderSpi.java       |  38 +++--
 .../ConfiguredPropertiesModelProviderSpi.java   |  10 +-
 .../ConfiguredResourcesModelProviderSpi.java    | 113 +++++++++------
 .../ConfiguredTypeEventsModelPopulator.java     |  46 +++++-
 .../ConfiguredTypeEventsModelProvider.java      |   2 +-
 .../validation/spi/AbstractConfigModel.java     |   2 +-
 .../spi/ConfigDocumentationMBean.java           |   2 +-
 .../validation/spi/ConfigModelReader.java       |   8 +-
 .../tamaya/validation/spi/GroupModel.java       |   4 +-
 .../tamaya/validation/spi/ModelProviderSpi.java |   4 +-
 .../tamaya/validation/spi/ParameterModel.java   |   6 +-
 .../tamaya/validation/spi/SectionModel.java     |   4 +-
 .../validation/ConfigModelProviderTest.java     |   2 +-
 .../tamaya/validation/ValidationTests.java      |  13 +-
 .../internal/ConfigDocumentationBeanTest.java   |   4 +-
 .../java/test/model/TestConfigAccessor.java     |   6 +-
 .../resources/META-INF/configmodel.properties   |   4 +-
 .../test/resources/examples/configmodel.json    |   4 +-
 .../resources/examples/configmodel.properties   |   4 +-
 .../src/test/resources/examples/configmodel.xml |   6 +-
 .../test/resources/examples/configmodel.yaml    |   4 +-
 .../vertx/AbstractConfiguredVerticle.java       |   2 +-
 .../vertx/TamayaConfigurationProducer.java      |  12 +-
 .../apache/tamaya/vertx/ConfigVerticleTest.java |   7 +-
 .../tamaya/vertx/TestInjectedVerticleTest.java  |   3 +-
 130 files changed, 1027 insertions(+), 897 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/apache-commons/src/main/java/org/apache/tamaya/commons/IniConfigurationFormat.java
----------------------------------------------------------------------
diff --git 
a/apache-commons/src/main/java/org/apache/tamaya/commons/IniConfigurationFormat.java
 
b/apache-commons/src/main/java/org/apache/tamaya/commons/IniConfigurationFormat.java
index d0e8c05..bb12b8b 100644
--- 
a/apache-commons/src/main/java/org/apache/tamaya/commons/IniConfigurationFormat.java
+++ 
b/apache-commons/src/main/java/org/apache/tamaya/commons/IniConfigurationFormat.java
@@ -22,8 +22,8 @@ import 
org.apache.commons.configuration.HierarchicalINIConfiguration;
 import org.apache.commons.configuration.SubnodeConfiguration;
 import org.apache.tamaya.ConfigException;
 import org.apache.tamaya.format.ConfigurationData;
-import org.apache.tamaya.format.ConfigurationDataBuilder;
 import org.apache.tamaya.format.ConfigurationFormat;
+import org.apache.tamaya.spi.PropertyValue;
 
 import java.io.File;
 import java.io.InputStream;
@@ -51,7 +51,8 @@ public class IniConfigurationFormat implements 
ConfigurationFormat {
 
     @Override
     public ConfigurationData readConfiguration(String name, InputStream 
inputStream) {
-        ConfigurationDataBuilder builder = ConfigurationDataBuilder.of(name, 
this);
+        PropertyValue data = PropertyValue.create();
+        data.setMeta("name", name);
         try {
             HierarchicalINIConfiguration commonIniConfiguration;
             File file = new File(name);
@@ -62,17 +63,17 @@ public class IniConfigurationFormat implements 
ConfigurationFormat {
             }
             for (String section : commonIniConfiguration.getSections()) {
                 SubnodeConfiguration sectionConfig = 
commonIniConfiguration.getSection(section);
+                PropertyValue sectionNode = data.getOrCreateChild(section);
                 Map<String, String> properties = new HashMap<>();
                 Iterator<String> keyIter = sectionConfig.getKeys();
                 while (keyIter.hasNext()) {
                     String key = keyIter.next();
-                    properties.put(key, sectionConfig.getString(key));
+                    sectionNode.addProperty(key, sectionConfig.getString(key));
                 }
-                builder.addSectionProperties(section, properties);
             }
         } catch (Exception e) {
             throw new ConfigException("Failed to parse ini-file format from " 
+ name, e);
         }
-        return builder.build();
+        return new ConfigurationData(name, this, data);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/apache-commons/src/main/java/org/apache/tamaya/commons/XmlConfigurationFormat.java
----------------------------------------------------------------------
diff --git 
a/apache-commons/src/main/java/org/apache/tamaya/commons/XmlConfigurationFormat.java
 
b/apache-commons/src/main/java/org/apache/tamaya/commons/XmlConfigurationFormat.java
index ecb154c..ed76830 100644
--- 
a/apache-commons/src/main/java/org/apache/tamaya/commons/XmlConfigurationFormat.java
+++ 
b/apache-commons/src/main/java/org/apache/tamaya/commons/XmlConfigurationFormat.java
@@ -21,8 +21,8 @@ package org.apache.tamaya.commons;
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.tamaya.ConfigException;
 import org.apache.tamaya.format.ConfigurationData;
-import org.apache.tamaya.format.ConfigurationDataBuilder;
 import org.apache.tamaya.format.ConfigurationFormat;
+import org.apache.tamaya.spi.PropertyValue;
 
 import java.io.File;
 import java.io.InputStream;
@@ -48,7 +48,9 @@ public class XmlConfigurationFormat implements 
ConfigurationFormat {
 
     @Override
     public ConfigurationData readConfiguration(String name, InputStream 
inputStream) {
-        ConfigurationDataBuilder builder = ConfigurationDataBuilder.of(name, 
this);
+        PropertyValue data = PropertyValue.create();
+        data.setMeta("name", name);
+        data.setMeta("format.class", getClass().getName());
         try {
             XMLConfiguration commonXmlConfiguration;
             File file = new File(name);
@@ -60,11 +62,11 @@ public class XmlConfigurationFormat implements 
ConfigurationFormat {
             Iterator<String> keyIter = commonXmlConfiguration.getKeys();
             while (keyIter.hasNext()) {
                 String key = keyIter.next();
-                builder.addDefaultProperty(key, 
commonXmlConfiguration.getString(key));
+                data.addProperty(key, commonXmlConfiguration.getString(key));
             }
         } catch (Exception e) {
             throw new ConfigException("Failed to parse xml-file format from " 
+ name, e);
         }
-        return builder.build();
+        return new ConfigurationData(name, this, data);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertiesComponent.java
----------------------------------------------------------------------
diff --git 
a/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertiesComponent.java 
b/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertiesComponent.java
index e42a5e1..aec571b 100644
--- a/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertiesComponent.java
+++ b/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertiesComponent.java
@@ -18,10 +18,13 @@
  */
 package org.apache.tamaya.camel;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Properties;
 
+import org.apache.camel.CamelContext;
 import org.apache.camel.component.properties.PropertiesComponent;
-import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.Configuration;
 
 /**
  * Default Camel PropertiesComponent that additionally has cfg and tamaya 
prefixes configured for resolution of
@@ -29,35 +32,50 @@ import org.apache.tamaya.ConfigurationProvider;
  */
 public class TamayaPropertiesComponent extends PropertiesComponent{
 
+    private ClassLoader classLoader;
+    private List<TamayaPropertyResolver> resolvers = new ArrayList<>();
+
     /**
-     * Constructor similar to parent.
+     * Constructor similar to getParent.
      */
     public TamayaPropertiesComponent(){
         super();
-        addFunction(new TamayaPropertyResolver("tamaya"));
-        addFunction(new TamayaPropertyResolver("cfg"));
+        resolvers.add(new TamayaPropertyResolver("tamaya"));
+        resolvers.add(new TamayaPropertyResolver("cfg"));
+        for(TamayaPropertyResolver resolver:resolvers) {
+            resolver.init(getClassLoader());
+            addFunction(resolver);
+        }
         setTamayaOverrides(true);
     }
 
     /**
-     * Constructor similar to parent with additional locations.
+     * Constructor similar to getParent with additional locations.
      * @param locations additional locations for Camel.  
      */
     public TamayaPropertiesComponent(String ... locations){
         super(locations);
-        addFunction(new TamayaPropertyResolver("tamaya"));
-        addFunction(new TamayaPropertyResolver("cfg"));
+        resolvers.add(new TamayaPropertyResolver("tamaya"));
+        resolvers.add(new TamayaPropertyResolver("cfg"));
+        for(TamayaPropertyResolver resolver:resolvers) {
+            resolver.init(getClassLoader());
+            addFunction(resolver);
+        }
         setTamayaOverrides(true);
     }
 
     /**
-     * Constructor similar to parent with only one location.
+     * Constructor similar to getParent with only one location.
      * @param location addition location for Camel.
      */
     public TamayaPropertiesComponent(String location){
         super(location);
-        addFunction(new TamayaPropertyResolver("tamaya"));
-        addFunction(new TamayaPropertyResolver("cfg"));
+        resolvers.add(new TamayaPropertyResolver("tamaya"));
+        resolvers.add(new TamayaPropertyResolver("cfg"));
+        for(TamayaPropertyResolver resolver:resolvers) {
+            resolver.init(getClassLoader());
+            addFunction(resolver);
+        }
         setTamayaOverrides(true);
     }
 
@@ -69,10 +87,25 @@ public class TamayaPropertiesComponent extends 
PropertiesComponent{
     public void setTamayaOverrides(boolean enabled){
         if(enabled){
             final Properties props = new Properties();
-            
props.putAll(ConfigurationProvider.getConfiguration().getProperties());
+            
props.putAll(Configuration.current(getClassLoader()).getProperties());
             setOverrideProperties(props);
         } else{
             setOverrideProperties(null);
         }
     }
+
+    private ClassLoader getClassLoader(){
+        CamelContext camelContext = getCamelContext();
+        ClassLoader cl = null;
+        if(camelContext!=null){
+            cl = camelContext.getApplicationContextClassLoader();
+        }
+        if(cl==null){
+            cl = Thread.currentThread().getContextClassLoader();
+        }
+        if(cl==null){
+            cl = getClass().getClassLoader();
+        }
+        return cl;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertyResolver.java
----------------------------------------------------------------------
diff --git 
a/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertyResolver.java 
b/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertyResolver.java
index 7b3f3a3..1fdf0e6 100644
--- a/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertyResolver.java
+++ b/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertyResolver.java
@@ -20,7 +20,7 @@ package org.apache.tamaya.camel;
 
 import org.apache.camel.component.properties.PropertiesFunction;
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.spi.ClassloaderAware;
 
 import java.util.Objects;
 
@@ -28,8 +28,9 @@ import java.util.Objects;
 /**
  * Implementation of the Camel Properties SPI using Tamaya configuration.
  */
-public class TamayaPropertyResolver implements PropertiesFunction{
+public class TamayaPropertyResolver implements PropertiesFunction, 
ClassloaderAware {
 
+    private ClassLoader classLoader;
     private final String prefix;
 
     /**
@@ -47,7 +48,24 @@ public class TamayaPropertyResolver implements 
PropertiesFunction{
 
     @Override
     public String apply(String remainder) {
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current(getClassLoader());
         return config.get(remainder);
     }
+
+    @Override
+    public void init(ClassLoader classLoader) {
+        this.classLoader = classLoader;
+    }
+
+    @Override
+    public ClassLoader getClassLoader() {
+        ClassLoader cl = classLoader;
+        if(cl==null){
+            cl = Thread.currentThread().getContextClassLoader();
+        }
+        if(cl==null){
+            cl = getClass().getClassLoader();
+        }
+        return cl;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/pom.xml
----------------------------------------------------------------------
diff --git a/collections/pom.xml b/collections/pom.xml
index 2d10759..ecc922f 100644
--- a/collections/pom.xml
+++ b/collections/pom.xml
@@ -38,6 +38,11 @@ under the License.
         </dependency>
         <dependency>
             <groupId>org.apache.tamaya</groupId>
+            <artifactId>tamaya-spisupport</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tamaya</groupId>
             <artifactId>tamaya-api</artifactId>
             <version>${project.version}</version>
         </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/AdaptiveCombinationPolicy.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/AdaptiveCombinationPolicy.java
 
b/collections/src/main/java/org/apache/tamaya/collections/AdaptiveCombinationPolicy.java
index a608a11..32d0949 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/AdaptiveCombinationPolicy.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/AdaptiveCombinationPolicy.java
@@ -18,7 +18,8 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.spi.ClassloaderAware;
 import org.apache.tamaya.spi.PropertySource;
 import org.apache.tamaya.spi.PropertyValue;
 import org.apache.tamaya.spi.PropertyValueCombinationPolicy;
@@ -35,10 +36,22 @@ import java.util.logging.Logger;
  * {@code _key.combination-policy=collect|override|fqPolicyClassName}.
  */
 @Priority(100)
-public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy {
+public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy, ClassloaderAware {
     /** Logger. */
     private static final Logger LOG = 
Logger.getLogger(AdaptiveCombinationPolicy.class.getName());
 
+    private ClassLoader classLoader;
+
+    @Override
+    public void init(ClassLoader classLoader) {
+        this.classLoader = classLoader;
+    }
+
+    @Override
+    public ClassLoader getClassLoader() {
+        return classLoader;
+    }
+
     /**
      * Collecting combination policy using (optional) {@code item-separator} 
parameter for determining the separator
      * to combine multiple config entries found.
@@ -47,18 +60,12 @@ public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy
         @Override
         public PropertyValue collect(PropertyValue currentValue, String key, 
PropertySource propertySource) {
             // check for default collection combination policies for lists, 
sets, maps etc.
-            final String separator = 
ConfigurationProvider.getConfiguration().getOrDefault('_' + 
key+".item-separator", ",");
             PropertyValue newValue = propertySource.get(key);
             if(newValue!=null){
                 if(currentValue==null){
                     return newValue;
                 }
-                String oldVal = currentValue.getValue();
-                newValue = newValue.toBuilder()
-                        .setValue(oldVal + ',' + newValue.getValue())
-                        .addMetaEntry("sources", currentValue.getSource() + 
"\n" + newValue.getSource())
-                        .build();
-                return newValue;
+                return 
PropertyValue.create().addChild(newValue).addChild(currentValue);
             }else{
                 if(currentValue!=null){
                     return currentValue;
@@ -80,7 +87,7 @@ public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy
             }
             return currentValue;
         }
-        String adaptiveCombinationPolicyClass  = 
ConfigurationProvider.getConfiguration().getOrDefault(
+        String adaptiveCombinationPolicyClass  = 
Configuration.current().getOrDefault(
                 '_' + key+".combination-policy", "override");
         PropertyValueCombinationPolicy combinationPolicy = null;
         switch(adaptiveCombinationPolicyClass){
@@ -119,4 +126,6 @@ public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy
         }
         return combinationPolicy.collect(currentValue, key, propertySource);
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
 
b/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
index 189c4a0..90e8cdb 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
@@ -22,6 +22,7 @@ import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -45,11 +46,11 @@ public class ArrayListConverter implements 
PropertyConverter<ArrayList> {
     }
 
     @Override
-    public ArrayList convert(String value, ConversionContext context) {
-        List<String> rawList = ItemTokenizer.split(value, context);
+    public ArrayList convert(String value) {
+        List<String> rawList = ItemTokenizer.split(value);
         ArrayList<Object> mlist = new ArrayList<>();
         for(String raw:rawList){
-            Object convValue = ItemTokenizer.convertValue(raw, context);
+            Object convValue = ItemTokenizer.convertValue(raw);
             if (convValue != null) {
                 mlist.add(convValue);
             }else{

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
 
b/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
index 91443ea..55c3e56 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
@@ -18,11 +18,10 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.spi.ConversionContext;
 
 import java.util.Collection;
-import java.util.Collections;
 
 /**
  *  PropertyConverter for gnerating a LIST representation of values.
@@ -30,34 +29,34 @@ import java.util.Collections;
 public class CollectionConverter implements PropertyConverter<Collection> {
 
     @Override
-    public Collection convert(String value, ConversionContext context) {
-        String collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey()+".collection-type", "List");
-        if(collectionType.startsWith("java.util.")){
-            collectionType = collectionType.substring("java.util.".length());
+    public Collection convert(String value) {
+        ConversionContext context = ConversionContext.current();
+        String collectionType = null;
+        if(context!=null) {
+            collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey() + ".collection-type", "List");
+            if (collectionType.startsWith("java.util.")) {
+                collectionType = 
collectionType.substring("java.util.".length());
+            }
         }
         Collection result = null;
-        switch(collectionType){
+        switch (collectionType) {
             case "LinkedList":
-                result = LinkedListConverter.getInstance().convert(value, 
context);
+                result = LinkedListConverter.getInstance().convert(value);
                 break;
             case "Set":
             case "HashSet":
-                result = HashSetConverter.getInstance().convert(value, 
context);
+                result = HashSetConverter.getInstance().convert(value);
                 break;
             case "SortedSet":
             case "TreeSet":
-                result = TreeSetConverter.getInstance().convert(value, 
context);
+                result = TreeSetConverter.getInstance().convert(value);
                 break;
             case "List":
             case "ArrayList":
             default:
-                result = ArrayListConverter.getInstance().convert(value, 
context);
+                result = ArrayListConverter.getInstance().convert(value);
                 break;
         }
-        if(context.getConfiguration().getOrDefault('_' + 
context.getKey()+".read-only",
-                Boolean.class, Boolean.TRUE)){
-            return Collections.unmodifiableCollection(result);
-        }
         return result;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
 
b/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
index b19fd0c..405766b 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.List;
@@ -44,12 +43,12 @@ public class ConcurrentHashMapConverter implements 
PropertyConverter<ConcurrentH
     }
 
     @Override
-    public ConcurrentHashMap convert(String value, ConversionContext context) {
-        List<String> rawList = ItemTokenizer.split(value, context);
+    public ConcurrentHashMap convert(String value) {
+        List<String> rawList = ItemTokenizer.split(value);
         ConcurrentHashMap result = new ConcurrentHashMap(rawList.size());
         for(String raw:rawList){
-            String[] items = ItemTokenizer.splitMapEntry(raw, context);
-            Object convValue = ItemTokenizer.convertValue(items[1], context);
+            String[] items = ItemTokenizer.splitMapEntry(raw);
+            Object convValue = ItemTokenizer.convertValue(items[1]);
             if(convValue!=null){
                 result.put(items[0], convValue);
             }else{

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java 
b/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java
index d223145..5196eb0 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.HashMap;
@@ -44,12 +43,12 @@ public class HashMapConverter implements 
PropertyConverter<HashMap> {
     }
 
     @Override
-    public HashMap convert(String value, ConversionContext context) {
-        List<String> rawList = ItemTokenizer.split(value, context);
+    public HashMap convert(String value) {
+        List<String> rawList = ItemTokenizer.split(value);
         HashMap result = new HashMap(rawList.size());
         for(String raw:rawList){
-            String[] items = ItemTokenizer.splitMapEntry(raw, context);
-            Object convValue = ItemTokenizer.convertValue(items[1], context);
+            String[] items = ItemTokenizer.splitMapEntry(raw);
+            Object convValue = ItemTokenizer.convertValue(items[1]);
             if(convValue!=null){
                 result.put(items[0], convValue);
             }else{

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java 
b/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java
index a8e70cf..c76fe39 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.HashSet;
@@ -45,12 +44,12 @@ public class HashSetConverter implements 
PropertyConverter<HashSet> {
     }
 
     @Override
-    public HashSet convert(String value, ConversionContext context) {
-        List<String> rawList = ItemTokenizer.split(value, context);
+    public HashSet convert(String value) {
+        List<String> rawList = ItemTokenizer.split(value);
         HashSet<Object> result = new HashSet<>();
         for(String raw:rawList){
-            String[] items = ItemTokenizer.splitMapEntry(raw, context);
-            Object convValue = ItemTokenizer.convertValue(items[1], context);
+            String[] items = ItemTokenizer.splitMapEntry(raw);
+            Object convValue = ItemTokenizer.convertValue(items[1]);
             if(convValue!=null){
                 result.add(convValue);
             }else{

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java 
b/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java
index 26410da..53864a8 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java
@@ -18,10 +18,9 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.spi.ConversionContext;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -45,12 +44,15 @@ final class ItemTokenizer {
      * {@code indexOf} calls, one by one. The last unresolvable item (without 
any next separator token)
      * is added at the end of the list.
      * @param value the value, not null.
-     * @param context the conversion context.
      * @return the tokenized value as list, in order of occurrence.
      */
-    public static List<String> split(String value, ConversionContext context){
-        return split(value, 
ConfigurationProvider.getConfiguration().getOrDefault(
-                '_' + context.getKey() + ".item-separator", ","));
+    public static List<String> split(String value){
+        ConversionContext ctx = ConversionContext.current();
+        if(ctx != null){
+            return split(value, ctx.getConfiguration().getOrDefault(
+                    '_' + ctx.getKey() + ".item-separator", ","));
+        }
+        return split(value, ",");
     }
 
     /**
@@ -82,16 +84,19 @@ final class ItemTokenizer {
     }
 
     /**
-     * plits the given String value as a map entry, splitting it into key and 
value part with the given separator.
+     * Splits the given String value as a map entry, splitting it into key and 
value part with the given separator.
      * If the value cannot be split then {@code key = value = mapEntry} is 
used for further processing. key or value
-     * parts are normally trimmed, unless they are enmcosed with brackets 
{@code []}.
+     * parts are normally trimmed, unless they are enclosed with brackets 
{@code []}.
      * @param mapEntry the entry, not null.
-     * @param context the conversion context.
      * @return an array of length 2, with the trimmed and parsed key/value 
pair.
      */
-    public static String[] splitMapEntry(String mapEntry, ConversionContext 
context){
-        return splitMapEntry(mapEntry, 
ConfigurationProvider.getConfiguration().getOrDefault(
-                '_' + context.getKey()+".map-entry-separator", "::"));
+    public static String[] splitMapEntry(String mapEntry){
+        ConversionContext ctx = ConversionContext.current();
+        if(ctx != null){
+            return splitMapEntry(mapEntry, ctx.getConfiguration().getOrDefault(
+                    '_' + ctx.getKey() + ".map-entry-separator", "="));
+        }
+        return splitMapEntry(mapEntry, "=");
     }
 
     /**
@@ -128,42 +133,48 @@ final class ItemTokenizer {
     /**
      * Parses the given value into the required collection target type, 
defined by the context.
      * @param value the raw String value.
-     * @param context the context
      * @return the parsed value, or null.
      */
-    public static Object convertValue(String value, ConversionContext context) 
{
-        String converterClass = context.getConfiguration().get('_' + 
context.getKey() + ".item-converters");
-        List<PropertyConverter<Object>> valueConverters = new ArrayList<>(1);
-        if (converterClass != null) {
-            try {
-                valueConverters.add((PropertyConverter<Object>) 
Class.forName(converterClass).newInstance());
-            } catch (Exception e) {
-                LOG.log(Level.SEVERE, "Error convertion config to ArrayList 
type.", e);
-            }
-        }
-        if 
(TypeLiteral.getTypeParameters(context.getTargetType().getType()).length>0) {
-            
valueConverters.addAll(context.getConfigurationContext().getPropertyConverters(
-                    
TypeLiteral.of(TypeLiteral.getTypeParameters(context.getTargetType().getType())[0])));
-        }
-        ConversionContext ctx = new 
ConversionContext.Builder(context.getConfiguration(),
-                context.getConfigurationContext(), context.getKey(),
-                TypeLiteral.of(context.getTargetType().getType())).build();
-        Object result = null;
-        if (valueConverters.isEmpty()) {
-            return value;
-        } else {
-            for (PropertyConverter<Object> conv : valueConverters) {
+    public static Object convertValue(String value) {
+        ConversionContext context = ConversionContext.current();
+        if (context != null) {
+            String converterClass = context.getConfiguration().get('_' + 
context.getKey() + ".item-converters");
+            List<PropertyConverter<Object>> valueConverters = new 
ArrayList<>(1);
+            if (converterClass != null) {
                 try {
-                    result = conv.convert(value, ctx);
-                    if (result != null) {
-                        return result;
-                    }
+                    valueConverters.add((PropertyConverter<Object>) 
Class.forName(converterClass).newInstance());
                 } catch (Exception e) {
                     LOG.log(Level.SEVERE, "Error convertion config to 
ArrayList type.", e);
                 }
             }
+            if 
(TypeLiteral.getTypeParameters(context.getTargetType().getType()).length > 0) {
+                
valueConverters.addAll(context.getConfigurationContext().getPropertyConverters(
+                        
TypeLiteral.of(TypeLiteral.getTypeParameters(context.getTargetType().getType())[0])));
+            }
+
+            try{
+                ConversionContext.set(new 
ConversionContext.Builder(context.getConfiguration(), context.getKey(),
+                        
TypeLiteral.of(context.getTargetType().getType())).build());
+                Object result = null;
+                if (valueConverters.isEmpty()) {
+                    return value;
+                } else {
+                    for (PropertyConverter<Object> conv : valueConverters) {
+                        try {
+                            result = conv.convert(value);
+                            if (result != null) {
+                                return result;
+                            }
+                        } catch (Exception e) {
+                            LOG.log(Level.SEVERE, "Error convertion config to 
ArrayList type.", e);
+                        }
+                    }
+                }
+                LOG.log(Level.SEVERE, "Failed to convert collection value type 
for '" + value + "'.");
+            }finally {
+                ConversionContext.set(context);
+            }
         }
-        LOG.log(Level.SEVERE, "Failed to convert collection value type for '" 
+ value + "'.");
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
 
b/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
index 3846ac2..459ab77 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.LinkedList;
@@ -44,12 +43,12 @@ public class LinkedListConverter implements 
PropertyConverter<LinkedList> {
     }
 
     @Override
-    public LinkedList convert(String value, ConversionContext context) {
-        List<String> rawList = ItemTokenizer.split(value, context);
+    public LinkedList convert(String value) {
+        List<String> rawList = ItemTokenizer.split(value);
         LinkedList<Object> result = new LinkedList<>();
         for(String raw:rawList){
-            String[] items = ItemTokenizer.splitMapEntry(raw, context);
-            Object convValue = ItemTokenizer.convertValue(items[1], context);
+            String[] items = ItemTokenizer.splitMapEntry(raw);
+            Object convValue = ItemTokenizer.convertValue(items[1]);
             if(convValue!=null){
                 result.add(convValue);
                 continue;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java 
b/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java
index 54aae36..45ab932 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java
@@ -18,8 +18,8 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.spi.ConversionContext;
 
 import java.util.Collections;
 import java.util.List;
@@ -30,25 +30,32 @@ import java.util.List;
 public class ListConverter implements PropertyConverter<List> {
 
     @Override
-    public List convert(String value, ConversionContext context) {
-        String collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey()+".collection-type", "List");
-        if(collectionType.startsWith("java.util.")){
-            collectionType = collectionType.substring("java.util.".length());
+    public List convert(String value) {
+        ConversionContext context = ConversionContext.current();
+        String collectionType = null;
+        if(context!=null) {
+            collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey() + ".collection-type", "List");
+            if (collectionType.startsWith("java.util.")) {
+                collectionType = 
collectionType.substring("java.util.".length());
+            }
         }
         List result = null;
         switch(collectionType){
             case "LinkedList":
-                result = LinkedListConverter.getInstance().convert(value, 
context);
+                result = LinkedListConverter.getInstance().convert(value);
                 break;
             case "List":
             case "ArrayList":
             default:
-                result = ArrayListConverter.getInstance().convert(value, 
context);
+                result = ArrayListConverter.getInstance().convert(value);
                 break;
         }
-        if(context.getConfiguration().getOrDefault('_' + 
context.getKey()+".read-only",
-                Boolean.class, Boolean.TRUE)){
-            return Collections.unmodifiableList(result);
+        ConversionContext ctx = ConversionContext.current();
+        if(ctx != null){
+            if(ctx.getConfiguration().getOrDefault(
+                    '_' + ctx.getKey() + ".read-only", Boolean.class, true)){
+                return Collections.unmodifiableList(result);
+            }
         }
         return result;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java 
b/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java
index 559c9eb..70cc22e 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java
@@ -18,8 +18,8 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.spi.ConversionContext;
 
 import java.util.Collections;
 import java.util.Map;
@@ -30,28 +30,35 @@ import java.util.Map;
 public class MapConverter implements PropertyConverter<Map> {
 
     @Override
-    public Map convert(String value, ConversionContext context) {
-        String collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey()+".collection-type", "Map");
-        if(collectionType.startsWith("java.util.")){
-            collectionType = collectionType.substring("java.util.".length());
+    public Map convert(String value) {
+        ConversionContext context = ConversionContext.current();
+        String collectionType = null;
+        if(context!=null) {
+            collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey() + ".collection-type", "Map");
+            if (collectionType.startsWith("java.util.")) {
+                collectionType = 
collectionType.substring("java.util.".length());
+            }
         }
         Map result = null;
         switch(collectionType){
             case "TreeMap":
-                result = TreeMapConverter.getInstance().convert(value, 
context);
+                result = TreeMapConverter.getInstance().convert(value);
                 break;
             case "ConcurrentHashMap":
-                result = 
ConcurrentHashMapConverter.getInstance().convert(value, context);
+                result = 
ConcurrentHashMapConverter.getInstance().convert(value);
                 break;
             case "Map":
             case "HashMap":
             default:
-                result = HashMapConverter.getInstance().convert(value, 
context);
+                result = HashMapConverter.getInstance().convert(value);
                 break;
         }
-        if(context.getConfiguration().getOrDefault('_' + 
context.getKey()+".read-only",
-                Boolean.class, Boolean.TRUE)){
-            return Collections.unmodifiableMap(result);
+        ConversionContext ctx = ConversionContext.current();
+        if(ctx != null){
+            if(ctx.getConfiguration().getOrDefault(
+                    '_' + ctx.getKey() + ".read-only", Boolean.class, true)){
+                return Collections.unmodifiableMap(result);
+            }
         }
         return result;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java 
b/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java
index b6e9ae6..aa7e6ba 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java
@@ -18,8 +18,8 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.spi.ConversionContext;
 
 import java.util.Collections;
 import java.util.Set;
@@ -30,25 +30,32 @@ import java.util.Set;
 public class SetConverter implements PropertyConverter<Set> {
 
     @Override
-    public Set convert(String value, ConversionContext context) {
-        String collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey()+".collection-type", "Set");
-        if(collectionType.startsWith("java.util.")){
-            collectionType = collectionType.substring("java.util.".length());
+    public Set convert(String value) {
+        ConversionContext context = ConversionContext.current();
+        String collectionType = null;
+        if(context!=null) {
+            collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey() + ".collection-type", "Set");
+            if (collectionType.startsWith("java.util.")) {
+                collectionType = 
collectionType.substring("java.util.".length());
+            }
         }
         Set result = null;
         switch(collectionType){
             case "TreeSet":
-                result = TreeSetConverter.getInstance().convert(value, 
context);
+                result = TreeSetConverter.getInstance().convert(value);
                 break;
             case "Set":
             case "HashSet":
             default:
-                result = HashSetConverter.getInstance().convert(value, 
context);
+                result = HashSetConverter.getInstance().convert(value);
                 break;
         }
-        if(context.getConfiguration().getOrDefault('_' + 
context.getKey()+".read-only",
-                Boolean.class, Boolean.TRUE)){
-            return Collections.unmodifiableSet(result);
+        ConversionContext ctx = ConversionContext.current();
+        if(ctx != null){
+            if(ctx.getConfiguration().getOrDefault(
+                    '_' + ctx.getKey() + ".read-only", Boolean.class, true)){
+                return Collections.unmodifiableSet(result);
+            }
         }
         return result;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
 
b/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
index 5416e28..972c72c 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.Collections;
@@ -30,7 +29,7 @@ import java.util.SortedMap;
 public class SortedMapConverter implements PropertyConverter<SortedMap> {
 
     @Override
-    public SortedMap convert(String value, ConversionContext context) {
-        return 
Collections.unmodifiableSortedMap(TreeMapConverter.getInstance().convert(value, 
context));
+    public SortedMap convert(String value) {
+        return 
Collections.unmodifiableSortedMap(TreeMapConverter.getInstance().convert(value));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
 
b/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
index 5ea2a14..d71af91 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.Collections;
@@ -30,7 +29,7 @@ import java.util.SortedSet;
 public class SortedSetConverter implements PropertyConverter<SortedSet> {
 
     @Override
-    public SortedSet convert(String value, ConversionContext context) {
-        return 
Collections.unmodifiableSortedSet(TreeSetConverter.getInstance().convert(value, 
context));
+    public SortedSet convert(String value) {
+        return 
Collections.unmodifiableSortedSet(TreeSetConverter.getInstance().convert(value));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java 
b/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java
index 67391ab..26b35ca 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.List;
@@ -45,12 +44,12 @@ public class TreeMapConverter implements 
PropertyConverter<TreeMap> {
     }
 
     @Override
-    public TreeMap convert(String value, ConversionContext context) {
-        List<String> rawList = ItemTokenizer.split(value, context);
+    public TreeMap convert(String value) {
+        List<String> rawList = ItemTokenizer.split(value);
         TreeMap result = new TreeMap();
         for(String raw:rawList){
-            String[] items = ItemTokenizer.splitMapEntry(raw, context);
-            Object convValue = ItemTokenizer.convertValue(items[1], context);
+            String[] items = ItemTokenizer.splitMapEntry(raw);
+            Object convValue = ItemTokenizer.convertValue(items[1]);
             if(convValue!=null){
                 result.put(items[0], convValue);
             }else{

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java 
b/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java
index 1b049c2..94bd8d7 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.List;
@@ -45,12 +44,12 @@ public class TreeSetConverter implements 
PropertyConverter<TreeSet> {
     }
 
     @Override
-    public TreeSet convert(String value, ConversionContext context) {
-        List<String> rawList = ItemTokenizer.split(value, context);
+    public TreeSet convert(String value) {
+        List<String> rawList = ItemTokenizer.split(value);
         TreeSet<Object> result = new TreeSet<>();
         for(String raw:rawList){
-            String[] items = ItemTokenizer.splitMapEntry(raw, context);
-            Object convValue = ItemTokenizer.convertValue(items[1], context);
+            String[] items = ItemTokenizer.splitMapEntry(raw);
+            Object convValue = ItemTokenizer.convertValue(items[1]);
             if(convValue!=null){
                 result.add(convValue);
                 continue;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
----------------------------------------------------------------------
diff --git 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
index 43f1f4f..1c6d4b2 100644
--- 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
+++ 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
@@ -19,7 +19,6 @@
 package org.apache.tamaya.collections;
 
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.TypeLiteral;
 import org.junit.Test;
 
@@ -46,7 +45,7 @@ public class CollectionAdvancedTests {
      */
     @Test
     public void testCustomSeparator(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = config.get("sep-list", new 
TypeLiteral<List<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -65,7 +64,7 @@ public class CollectionAdvancedTests {
      */
     @Test
     public void testTypedContent(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<Currency> items = config.get("currency-list", new 
TypeLiteral<List<Currency>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -85,7 +84,7 @@ public class CollectionAdvancedTests {
      */
     @Test
     public void testCustomParser(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = config.get("parser-list", new 
TypeLiteral<List<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -105,7 +104,7 @@ public class CollectionAdvancedTests {
      */
     @Test
     public void testCustomMapParser(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = config.get("redefined-map", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/test/java/org/apache/tamaya/collections/CollectionsBaseTests.java
----------------------------------------------------------------------
diff --git 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionsBaseTests.java
 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionsBaseTests.java
index 34c82cb..8a531e3 100644
--- 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionsBaseTests.java
+++ 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionsBaseTests.java
@@ -19,7 +19,6 @@
 package org.apache.tamaya.collections;
 
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.TypeLiteral;
 import org.junit.Test;
 
@@ -39,7 +38,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testList_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = config.get("base.items", new 
TypeLiteral<List<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -52,7 +51,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testArrayList_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         ArrayList<String> items = config.get("base.items", new 
TypeLiteral<ArrayList<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -65,7 +64,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testLinkedList_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         LinkedList<String> items = config.get("base.items", new 
TypeLiteral<LinkedList<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -78,7 +77,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = config.get("base.items", new 
TypeLiteral<Set<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -91,7 +90,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testSortedSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = config.get("base.items", new 
TypeLiteral<SortedSet<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -104,7 +103,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testHashSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = config.get("base.items", new 
TypeLiteral<HashSet<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -117,7 +116,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testTreeSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         TreeSet<String> items = config.get("base.items", new 
TypeLiteral<TreeSet<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -130,7 +129,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = config.get("base.map", new 
TypeLiteral<Map<String,String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -151,7 +150,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testHashMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = config.get("base.map", new 
TypeLiteral<HashMap<String,String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -172,7 +171,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testSortedMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = config.get("base.map", new 
TypeLiteral<SortedMap<String,String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -193,7 +192,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testTreeMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         TreeMap<String,String> items = config.get("base.map", new 
TypeLiteral<TreeMap<String,String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -214,7 +213,7 @@ public class CollectionsBaseTests {
 
     @Test
     public void testCollection_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Collection<String> items = config.get("base.items", new 
TypeLiteral<Collection<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedReadOnlyTests.java
----------------------------------------------------------------------
diff --git 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedReadOnlyTests.java
 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedReadOnlyTests.java
index 7882512..e8a94db 100644
--- 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedReadOnlyTests.java
+++ 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedReadOnlyTests.java
@@ -19,8 +19,8 @@
 package org.apache.tamaya.collections;
 
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.TypeLiteral;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import java.util.*;
@@ -34,11 +34,12 @@ import static org.junit.Assert.*;
  * base.map=1::a, 2::b, 3::c, [4:: ]
  * </pre>
  */
+//@Ignore("Readonly support has been deactivated as of now.")
 public class CollectionsTypedReadOnlyTests {
 
     @Test(expected=UnsupportedOperationException.class)
     public void testArrayListList_1(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = config.get("typed.arraylist", new 
TypeLiteral<List<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -48,7 +49,7 @@ public class CollectionsTypedReadOnlyTests {
 
     @Test(expected=UnsupportedOperationException.class)
     public void testArrayListList_2(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = (List<String>) config.get("typed.arraylist", 
List.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -58,7 +59,7 @@ public class CollectionsTypedReadOnlyTests {
 
     @Test(expected=UnsupportedOperationException.class)
     public void testLinkedListList_1(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = config.get("typed.linkedlist", new 
TypeLiteral<List<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -68,7 +69,7 @@ public class CollectionsTypedReadOnlyTests {
 
     @Test(expected=UnsupportedOperationException.class)
     public void testLinkedListList_2(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = (List<String>) config.get("typed.linkedlist", 
List.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -79,7 +80,7 @@ public class CollectionsTypedReadOnlyTests {
 
     @Test(expected=UnsupportedOperationException.class)
     public void testHashSet_1(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = config.get("typed.hashset", new 
TypeLiteral<Set<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -88,7 +89,7 @@ public class CollectionsTypedReadOnlyTests {
     }
     @Test(expected=UnsupportedOperationException.class)
     public void testHashSet_2(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = (Set<String>) config.get("typed.hashset", 
Set.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -98,7 +99,7 @@ public class CollectionsTypedReadOnlyTests {
 
     @Test(expected=UnsupportedOperationException.class)
     public void testTreeSet_1(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = config.get("typed.treeset", new 
TypeLiteral<Set<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -107,7 +108,7 @@ public class CollectionsTypedReadOnlyTests {
     }
     @Test(expected=UnsupportedOperationException.class)
     public void testTreeSet_2(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = items = (Set<String>) config.get("typed.treeset", 
Set.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -117,7 +118,7 @@ public class CollectionsTypedReadOnlyTests {
 
     @Test(expected=UnsupportedOperationException.class)
     public void testHashMap_1(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = config.get("typed.hashmap", new 
TypeLiteral<Map<String,String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -130,7 +131,7 @@ public class CollectionsTypedReadOnlyTests {
     }
     @Test(expected=UnsupportedOperationException.class)
     public void testHashMap_2(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = (Map<String,String>) 
config.get("typed.hashmap", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -145,7 +146,7 @@ public class CollectionsTypedReadOnlyTests {
 
     @Test(expected=UnsupportedOperationException.class)
     public void testTreeMap_1(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = config.get("typed.treemap", new 
TypeLiteral<Map<String,String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -158,7 +159,7 @@ public class CollectionsTypedReadOnlyTests {
     }
     @Test(expected=UnsupportedOperationException.class)
     public void testTreeMap_2(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = (Map<String,String>) 
config.get("typed.treemap", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedTests.java
----------------------------------------------------------------------
diff --git 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedTests.java
 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedTests.java
index b4e4d52..92c592e 100644
--- 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedTests.java
+++ 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionsTypedTests.java
@@ -19,7 +19,6 @@
 package org.apache.tamaya.collections;
 
 import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.TypeLiteral;
 import org.junit.Test;
 
@@ -40,7 +39,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testArrayListList_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = config.get("typed2.arraylist", new 
TypeLiteral<List<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -55,7 +54,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testLinkedListList_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         List<String> items = config.get("typed2.linkedlist", new 
TypeLiteral<List<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -71,7 +70,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testHashSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = config.get("typed2.hashset", new 
TypeLiteral<Set<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -86,7 +85,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testTreeSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Set<String> items = config.get("typed2.treeset", new 
TypeLiteral<Set<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -101,7 +100,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testHashMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = config.get("typed2.hashmap", new 
TypeLiteral<Map<String,String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -124,7 +123,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testTreeMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Map<String,String> items = config.get("typed2.treemap", new 
TypeLiteral<Map<String,String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -147,7 +146,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testCollection_HashSet(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Collection<String> items = config.get("typed2.hashset", new 
TypeLiteral<Collection<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -162,7 +161,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testCollection_TreeSet(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Collection<String> items = config.get("typed2.treeset", new 
TypeLiteral<Collection<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -177,7 +176,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testCollection_ArrayList(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Collection<String> items = config.get("typed2.arraylist", new 
TypeLiteral<Collection<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());
@@ -192,7 +191,7 @@ public class CollectionsTypedTests {
 
     @Test
     public void testCollection_LinkedList(){
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Collection<String> items = config.get("typed2.linkedlist", new 
TypeLiteral<Collection<String>>(){});
         assertNotNull(items);
         assertFalse(items.isEmpty());

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
----------------------------------------------------------------------
diff --git 
a/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
 
b/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
index 1c95261..221b9a1 100644
--- 
a/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
+++ 
b/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 /**
@@ -27,7 +26,7 @@ import org.apache.tamaya.spi.PropertyConverter;
  */
 public class MyUpperCaseConverter implements PropertyConverter<String>{
     @Override
-    public String convert(String value, ConversionContext context) {
+    public String convert(String value) {
         return "("+value.toUpperCase()+")";
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/collections/src/test/resources/META-INF/javaconfiguration.properties
----------------------------------------------------------------------
diff --git 
a/collections/src/test/resources/META-INF/javaconfiguration.properties 
b/collections/src/test/resources/META-INF/javaconfiguration.properties
index 787d0d4..1521809 100644
--- a/collections/src/test/resources/META-INF/javaconfiguration.properties
+++ b/collections/src/test/resources/META-INF/javaconfiguration.properties
@@ -20,7 +20,7 @@
 
 # Config for base tests (no combination policy)
 base.items=1,2,3,4,5,6,7,8,9,0
-base.map=1::a, 2::b, 3::c, [4:: ]
+base.map=1=a, 2=b, 3=c, [4= ]
 
 # Config for tests with explcit implementation types
 typed2.arraylist=1,2,3,4,5,6,7,8,9,0
@@ -35,10 +35,10 @@ _typed2.hashset.read-only=false
 typed2.treeset=1,2,3,4,5,6,7,8,9,0
 _typed2.treeset.collection-type=TreeSet
 _typed2.treeset.read-only=false
-typed2.hashmap=1::a, 2::b, 3::c, [4:: ]
+typed2.hashmap=1=a, 2=b, 3=c, [4= ]
 _typed2.hashmap.collection-type=java.util.HashMap
 _typed2.hashmap.read-only=false
-typed2.treemap=1::a, 2::b, 3::c, [4:: ]
+typed2.treemap=1=a, 2=b, 3=c, [4= ]
 _typed2.treemap.collection-type=TreeMap
 _typed2.treemap.read-only=false
 
@@ -51,9 +51,9 @@ typed.hashset=1,2,3,4,5,6,7,8,9,0
 _typed.hashset.collection-type=HashSet
 typed.treeset=1,2,3,4,5,6,7,8,9,0
 _typed.treeset.collection-type=TreeSet
-typed.hashmap=1::a, 2::b, 3::c, [4:: ]
+typed.hashmap=1=a, 2=b, 3=c, [4= ]
 _typed.hashmap.collection-type=java.util.HashMap
-typed.treemap=1::a, 2::b, 3::c, [4:: ]
+typed.treemap=1=a, 2=b, 3=c, [4= ]
 _typed.treemap.collection-type=TreeMap
 
 # Config for advanced tests

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/configjsr/src/main/java/org/apache/tamaya/jsr382/cdi/JavaConfigConfigurationProducer.java
----------------------------------------------------------------------
diff --git 
a/configjsr/src/main/java/org/apache/tamaya/jsr382/cdi/JavaConfigConfigurationProducer.java
 
b/configjsr/src/main/java/org/apache/tamaya/jsr382/cdi/JavaConfigConfigurationProducer.java
index 5794c31..01893c8 100644
--- 
a/configjsr/src/main/java/org/apache/tamaya/jsr382/cdi/JavaConfigConfigurationProducer.java
+++ 
b/configjsr/src/main/java/org/apache/tamaya/jsr382/cdi/JavaConfigConfigurationProducer.java
@@ -81,14 +81,14 @@ public class JavaConfigConfigurationProducer {
 
     static ConversionContext createConversionContext(String key, 
InjectionPoint injectionPoint) {
         final Type targetType = injectionPoint.getAnnotated().getBaseType();
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         ConversionContext.Builder builder = new 
ConversionContext.Builder(config,
-                ConfigurationProvider.getConfiguration().getContext(), key, 
TypeLiteral.of(targetType));
+                Configuration.current().getContext(), key, 
TypeLiteral.of(targetType));
         if(targetType instanceof ParameterizedType){
             ParameterizedType pt = (ParameterizedType)targetType;
             if(pt.getRawType().equals(Provider.class)) {
                 builder = new ConversionContext.Builder(config,
-                        ConfigurationProvider.getConfiguration().getContext(), 
key,
+                        Configuration.current().getContext(), key,
                         TypeLiteral.of(pt.getActualTypeArguments()[0]));
             }
         }
@@ -120,7 +120,7 @@ public class JavaConfigConfigurationProducer {
         Object value = null;
         if (textValue != null || 
Optional.class.equals(context.getTargetType().getRawType())) {
             LOGGER.log(Level.FINEST, () -> "Converting KEY: " + 
context.getKey() + "("+context.getTargetType()+"), textValue: " + textValue);
-            List<PropertyConverter> converters = 
ConfigurationProvider.getConfiguration().getContext()
+            List<PropertyConverter> converters = 
Configuration.current().getContext()
                     
.getPropertyConverters((TypeLiteral)context.getTargetType());
             for (PropertyConverter<Object> converter : converters) {
                 try {
@@ -141,7 +141,7 @@ public class JavaConfigConfigurationProducer {
 
     @Produces
     public Config getConfiguration(){
-        return ConfigProvider.getConfig();
+        return Configuration.current();
     }
 
     @Produces

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java
----------------------------------------------------------------------
diff --git 
a/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java 
b/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java
index 019aac0..60533da 100644
--- 
a/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java
+++ 
b/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigAdapterTest.java
@@ -39,7 +39,7 @@ import static org.junit.Assert.*;
 public class JavaConfigAdapterTest {
     @Test
     public void toConfig() throws Exception {
-        Configuration config = ConfigurationProvider.getConfiguration();
+        Configuration config = Configuration.current();
         Config mpConfig = JavaConfigAdapter.toConfig(config);
         assertNotNull(mpConfig);
         assertEquals(config.getProperties().keySet(), 
mpConfig.getPropertyNames());
@@ -60,7 +60,7 @@ public class JavaConfigAdapterTest {
 
     @Test
     public void toConfiguration() throws Exception {
-        Config mpConfig = ConfigProvider.getConfig();
+        Config mpConfig = Configuration.current();
         Configuration config = JavaConfigAdapter.toConfiguration(mpConfig);
         assertNotNull(config);
         assertEquals(mpConfig.getPropertyNames(), 
config.getProperties().keySet());

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigProviderTest.java
----------------------------------------------------------------------
diff --git 
a/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigProviderTest.java
 
b/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigProviderTest.java
index 9c39821..bde67bf 100644
--- 
a/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigProviderTest.java
+++ 
b/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigProviderTest.java
@@ -34,7 +34,7 @@ public class JavaConfigConfigProviderTest {
 
     @Test
     public void testDefaultConfigAccess(){
-        Config config = ConfigProvider.getConfig();
+        Config config = Configuration.current();
         assertNotNull(config);
         Iterable<String> names = config.getPropertyNames();
         assertNotNull(names);
@@ -43,12 +43,12 @@ public class JavaConfigConfigProviderTest {
             count++;
             System.out.println(count + ": " +name);
         }
-        
assertTrue(ConfigurationProvider.getConfiguration().getProperties().size() <= 
count);
+        assertTrue(Configuration.current().getProperties().size() <= count);
     }
 
     @Test
     public void testClassloaderAccess(){
-        Config config = 
ConfigProvider.getConfig(Thread.currentThread().getContextClassLoader());
+        Config config = 
Configuration.current(Thread.currentThread().getContextClassLoader());
         assertNotNull(config);
         Iterable<String> names = config.getPropertyNames();
         assertNotNull(names);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/af319373/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigTest.java
----------------------------------------------------------------------
diff --git 
a/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigTest.java 
b/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigTest.java
index 06685e1..69cba64 100644
--- a/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigTest.java
+++ b/configjsr/src/test/java/org/apache/tamaya/jsr382/JavaConfigConfigTest.java
@@ -35,7 +35,7 @@ public class JavaConfigConfigTest {
 
     @Test
     public void testDefaultConfigAccess() {
-        Config config = ConfigProvider.getConfig();
+        Config config = Configuration.current();
         Iterable<ConfigSource> sources = config.getConfigSources();
         int count = 0;
         for (ConfigSource cs : sources) {
@@ -46,7 +46,7 @@ public class JavaConfigConfigTest {
 
     @Test
     public void testOptionalAccess(){
-        Config config = ConfigProvider.getConfig();
+        Config config = Configuration.current();
         int count = 0;
         for(String key:config.getPropertyNames()){
             Optional<String> val = config.getOptionalValue(key, String.class);
@@ -59,7 +59,7 @@ public class JavaConfigConfigTest {
 
     @Test
     public void testGetValue(){
-        Config config = ConfigProvider.getConfig();
+        Config config = Configuration.current();
         int count = 0;
         for(String key:config.getPropertyNames()){
             String val = config.getValue(key, String.class);
@@ -69,26 +69,26 @@ public class JavaConfigConfigTest {
 
     @Test(expected = NoSuchElementException.class)
     public void testGetValue_NoValue(){
-        Config config = ConfigProvider.getConfig();
+        Config config = Configuration.current();
         config.getValue("fooBar", String.class);
     }
 
     @Test(expected = IllegalArgumentException.class)
     public void testGetValue_InvalidType(){
-        Config config = ConfigProvider.getConfig();
+        Config config = Configuration.current();
         config.getValue("java.version", Integer.class);
     }
 
     @Test
     public void testEmptySystemProperty(){
         System.setProperty("my.empty.property", "");
-        Config config = ConfigProvider.getConfig();
+        Config config = Configuration.current();
         assertEquals("", config.getValue("my.empty.property", String.class));
     }
 
     @Test
     public void testEmptyConfigProperty(){
-        Config config = ConfigProvider.getConfig();
+        Config config = Configuration.current();
         assertEquals("", config.getValue("my.empty.property.in.config.file", 
String.class));
     }
 


Reply via email to