Adapted to comply with JSR API.

Signed-off-by: Anatole Tresch <[email protected]>


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

Branch: refs/heads/configjsr
Commit: db6b909a67eed1e64269c956566b9212b0cd67eb
Parents: 54b627b
Author: Anatole Tresch <[email protected]>
Authored: Sat Feb 3 21:02:07 2018 +0100
Committer: Anatole Tresch <[email protected]>
Committed: Sat Feb 3 21:02:10 2018 +0100

----------------------------------------------------------------------
 .../tamaya/camel/TamayaPropertiesComponent.java |   9 +-
 .../tamaya/camel/TamayaPropertyResolver.java    |   8 +-
 .../resources/META-INF/javaconfig.properties    |  19 +
 .../META-INF/javaconfiguration.properties       |  19 -
 collections/pom.xml                             |  15 +-
 .../collections/AdaptiveCombinationPolicy.java  |  47 +-
 .../tamaya/collections/ArrayListConverter.java  |  12 +-
 .../tamaya/collections/CollectionConverter.java |  27 +-
 .../collections/ConcurrentHashMapConverter.java |  14 +-
 .../tamaya/collections/HashMapConverter.java    |  14 +-
 .../tamaya/collections/HashSetConverter.java    |  14 +-
 .../tamaya/collections/ItemTokenizer.java       |  88 ++--
 .../tamaya/collections/LinkedListConverter.java |  14 +-
 .../tamaya/collections/ListConverter.java       |  23 +-
 .../apache/tamaya/collections/MapConverter.java |  25 +-
 .../apache/tamaya/collections/SetConverter.java |  21 +-
 .../tamaya/collections/SortedMapConverter.java  |  10 +-
 .../tamaya/collections/SortedSetConverter.java  |   9 +-
 .../tamaya/collections/TreeMapConverter.java    |  14 +-
 .../tamaya/collections/TreeSetConverter.java    |  18 +-
 .../services/javax.config.spi.Converter         |  31 ++
 ...ache.tamaya.spi.ConfigValueCombinationPolicy |  19 +
 .../org.apache.tamaya.spi.PropertyConverter     |  31 --
 ...he.tamaya.spi.PropertyValueCombinationPolicy |  19 -
 .../collections/CollectionAdvancedTests.java    |  27 +-
 .../collections/CollectionsBaseTests.java       | 133 ++++--
 .../CollectionsTypedReadOnlyTests.java          | 100 ++--
 .../collections/CollectionsTypedTests.java      | 108 +++--
 .../collections/MyUpperCaseConverter.java       |   7 +-
 configsources/bnd.bnd                           |  27 ++
 configsources/pom.xml                           |  61 +++
 .../ConfigDirConfigSourceProvider.java          |  75 +++
 .../propertysources/ConfigSourceBuilder.java    | 119 +++++
 .../MetainfConfigConfigSourceProvider.java      |  56 +++
 ...MetainfConfigPropertySourceProviderTest.java |  37 ++
 .../sysprops/ConfiguredSystemProperties.java    |  12 +-
 etcd/bnd.bnd                                    |   8 +-
 .../apache/tamaya/management/ManagedConfig.java |  41 +-
 .../META-INF/javaconfiguration.properties       |  19 -
 .../management/internal/ManagedConfigTest.java  |   1 +
 .../resources/META-INF/javaconfig.properties    |  19 +
 meta/bnd.bnd                                    |  30 ++
 meta/pom.xml                                    |  48 ++
 .../org/apache/tamaya/meta/MetaProperties.java  | 179 +++++++
 .../internal/DefaultMetaPropertyMapping.java    |  60 +++
 .../meta/internal/EtcdMetaPropertyMapping.java  |  55 +++
 .../tamaya/meta/spi/MetaPropertyMapping.java    |  44 ++
 metamodel/pom.xml                               |  26 +-
 .../apache/tamaya/metamodel/CachedFilter.java   |  34 +-
 .../tamaya/metamodel/EnabledConfigSource.java   | 113 +++++
 .../tamaya/metamodel/EnabledPropertySource.java | 121 -----
 .../org/apache/tamaya/metamodel/HideFilter.java |  19 +-
 .../tamaya/metamodel/ImmutableFilter.java       |  27 +-
 .../org/apache/tamaya/metamodel/MaskFilter.java |  15 +-
 .../tamaya/metamodel/MetaConfiguration.java     |  39 +-
 .../apache/tamaya/metamodel/SecuredFilter.java  |  19 +-
 .../ext/EnabledConfigSourceProvider.java        | 112 +++++
 .../ext/EnabledPropertySourceProvider.java      | 113 -----
 .../metamodel/ext/FilteredConfigSource.java     | 173 +++++++
 .../metamodel/ext/FilteredPropertySource.java   | 177 -------
 .../metamodel/ext/RefreshableConfigSource.java  | 146 ++++++
 .../ext/RefreshableConfigSourceProvider.java    | 110 +++++
 .../ext/RefreshablePropertySource.java          | 152 ------
 .../ext/RefreshablePropertySourceProvider.java  | 107 -----
 .../internal/CombinationPolicyReader.java       |  13 +-
 .../internal/ConfigSourceOrderingReader.java    |  65 +++
 .../metamodel/internal/ConfigSourceReader.java  | 194 ++++++++
 .../metamodel/internal/ConverterReader.java     |  85 ++++
 .../internal/DSLBasedConfigFactory.java         |  54 +++
 .../DSLLoadingConfigurationProviderSpi.java     | 110 -----
 .../internal/FilterOrderingReader.java          |  65 +++
 .../tamaya/metamodel/internal/FilterReader.java |  85 ++++
 .../metamodel/internal/MetaContextReader.java   |   4 +-
 .../internal/PropertyConverterReader.java       |  87 ----
 .../internal/PropertyFilterOrderingReader.java  |  65 ---
 .../internal/PropertyFilterReader.java          |  82 ----
 .../internal/PropertySourceOrderingReader.java  |  66 ---
 .../internal/PropertySourceReader.java          | 186 --------
 .../tamaya/metamodel/internal/SourceConfig.java | 466 +++++++++----------
 .../internal/factories/CLIArgumentsFactory.java |  14 +-
 .../factories/EnvPropertiesFactory.java         |  14 +-
 .../factories/FilePropertySourceFactory.java    |   2 +-
 .../factories/ResourceConfigSourceFactory.java  |  55 +++
 .../ResourcePropertySourceFactory.java          |  55 ---
 .../ResourcePropertySourceProviderFactory.java  |  23 +-
 .../factories/SysPropertiesFactory.java         |  14 +-
 .../factories/URLConfigSourceFactory.java       | 151 ++++++
 .../factories/URLPropertySourceFactory.java     | 151 ------
 .../metamodel/spi/MetaConfigurationReader.java  |   7 +-
 ...e.TamayaConfigProviderResolver$ConfigFactory |  19 +
 .../org.apache.tamaya.metamodel.spi.ItemFactory |   4 +-
 ...tamaya.metamodel.spi.MetaConfigurationReader |  11 +-
 ...g.apache.tamaya.spi.ConfigurationProviderSpi |  20 -
 .../tamaya/metamodel/ext/IntegrationTest.java   | 230 ++++-----
 .../tamaya/metamodel/ext/MyConfigSource.java    |  72 +++
 .../tamaya/metamodel/ext/MyConverter.java       |   7 +-
 .../apache/tamaya/metamodel/ext/MyFilter.java   |   5 +-
 .../tamaya/metamodel/ext/MyPropertySource.java  |  73 ---
 .../factories/CLIArgumentsFactoryTest.java      |   8 +-
 .../factories/EnvPropertiesFactoryTest.java     |   8 +-
 .../FilePropertySourceFactoryTest.java          |   7 +-
 .../ResourcePropertySourceFactoryTest.java      |   9 +-
 ...sourcePropertySourceProviderFactoryTest.java |   8 +-
 .../factories/SysPropertiesFactoryTest.java     |   8 +-
 .../factories/URLPropertySourceFactoryTest.java |   9 +-
 .../internal/resolver/LoggingReader.java        |  12 +-
 .../default-propertyconverters-test.xml         |   4 +-
 .../default-propertyfilters-test.xml            |   4 +-
 .../default-propertysources-test.xml            |   4 +-
 .../propertyconverter-config-test.xml           |   4 +-
 .../propertyconverters-test.xml                 |   4 +-
 .../propertyfilter-config-test.xml              |   4 +-
 .../IntegrationTests/propertyfilters-test.xml   |   4 +-
 .../propertysource-config-test.xml              |   8 +-
 .../IntegrationTests/propertysources-test.xml   |   6 +-
 .../services/org.apache.tamaya.spi.Filter       |  19 +
 .../org.apache.tamaya.spi.PropertyFilter        |  19 -
 metamodel/src/test/resources/tamaya-config.xml  |  14 +-
 pom.xml                                         |   3 +-
 propertysources/bnd.bnd                         |  27 --
 propertysources/pom.xml                         |  61 ---
 .../ConfigDirConfigSourceProvider.java          |  82 ----
 .../MetainfConfigConfigSourceProvider.java      |  63 ---
 .../propertysources/PropertySourceBuilder.java  | 122 -----
 ...MetainfConfigPropertySourceProviderTest.java |  37 --
 .../tamaya/remote/BaseRemotePropertySource.java |  47 +-
 uom/pom.xml                                     |   5 +
 .../org/apache/tamaya/uom/UnitConverter.java    |  17 +-
 .../services/javax.config.spi.Converter         |  19 +
 .../org.apache.tamaya.spi.PropertyConverter     |  19 -
 .../apache/tamaya/uom/UnitConverterTest.java    |   6 +-
 .../vertx/AbstractConfiguredVerticle.java       |  38 +-
 .../org/apache/tamaya/vertx/ConfigVerticle.java |  23 +-
 .../apache/tamaya/vertx/ConfigVerticleTest.java |  22 +-
 .../org/apache/tamaya/vertx/TestVerticle.java   |   9 +-
 .../resources/META-INF/javaconfig.properties    |  19 +
 .../META-INF/javaconfiguration.properties       |  19 -
 137 files changed, 3576 insertions(+), 3068 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..01d3fe1 100644
--- a/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertiesComponent.java
+++ b/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertiesComponent.java
@@ -21,7 +21,9 @@ package org.apache.tamaya.camel;
 import java.util.Properties;
 
 import org.apache.camel.component.properties.PropertiesComponent;
-import org.apache.tamaya.ConfigurationProvider;
+
+import javax.config.Config;
+import javax.config.ConfigProvider;
 
 /**
  * Default Camel PropertiesComponent that additionally has cfg and tamaya 
prefixes configured for resolution of
@@ -69,7 +71,10 @@ public class TamayaPropertiesComponent extends 
PropertiesComponent{
     public void setTamayaOverrides(boolean enabled){
         if(enabled){
             final Properties props = new Properties();
-            
props.putAll(ConfigurationProvider.getConfiguration().getProperties());
+            Config config = ConfigProvider.getConfig();
+            for(String key:config.getPropertyNames()) {
+                props.put(key, config.getValue(key, String.class));
+            }
             setOverrideProperties(props);
         } else{
             setOverrideProperties(null);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..5049c65 100644
--- a/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertyResolver.java
+++ b/camel/src/main/java/org/apache/tamaya/camel/TamayaPropertyResolver.java
@@ -19,9 +19,9 @@
 package org.apache.tamaya.camel;
 
 import org.apache.camel.component.properties.PropertiesFunction;
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
 
+import javax.config.Config;
+import javax.config.ConfigProvider;
 import java.util.Objects;
 
 
@@ -47,7 +47,7 @@ public class TamayaPropertyResolver implements 
PropertiesFunction{
 
     @Override
     public String apply(String remainder) {
-        Configuration config = ConfigurationProvider.getConfiguration();
-        return config.get(remainder);
+        Config config = ConfigProvider.getConfig();
+        return config.getOptionalValue(remainder, String.class).orElse(null);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/camel/src/test/resources/META-INF/javaconfig.properties
----------------------------------------------------------------------
diff --git a/camel/src/test/resources/META-INF/javaconfig.properties 
b/camel/src/test/resources/META-INF/javaconfig.properties
new file mode 100644
index 0000000..fbe9178
--- /dev/null
+++ b/camel/src/test/resources/META-INF/javaconfig.properties
@@ -0,0 +1,19 @@
+#
+# 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 current 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.
+#
+message=Good Bye from Apache Tamaya!
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/camel/src/test/resources/META-INF/javaconfiguration.properties
----------------------------------------------------------------------
diff --git a/camel/src/test/resources/META-INF/javaconfiguration.properties 
b/camel/src/test/resources/META-INF/javaconfiguration.properties
deleted file mode 100644
index fbe9178..0000000
--- a/camel/src/test/resources/META-INF/javaconfiguration.properties
+++ /dev/null
@@ -1,19 +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 current 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.
-#
-message=Good Bye from Apache Tamaya!
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/collections/pom.xml
----------------------------------------------------------------------
diff --git a/collections/pom.xml b/collections/pom.xml
index f729e6b..b7c214c 100644
--- a/collections/pom.xml
+++ b/collections/pom.xml
@@ -21,7 +21,7 @@ under the License.
 
     <parent>
         <groupId>org.apache.tamaya.ext</groupId>
-        <artifactId>tamaya-extensions</artifactId>
+        <artifactId>tamaya-sandbox</artifactId>
         <version>0.4-incubating-SNAPSHOT</version>
     </parent>
 
@@ -31,16 +31,25 @@ under the License.
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.tamaya.ext</groupId>
+            <artifactId>tamaya-meta</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.tamaya</groupId>
             <artifactId>tamaya-core</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
+            <version>${tamaya-apicore.version}</version>
+            <scope>runtime</scope>
         </dependency>
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>java-hamcrest</artifactId>
+        </dependency>
     </dependencies>
 
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..90e6d47 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/AdaptiveCombinationPolicy.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/AdaptiveCombinationPolicy.java
@@ -18,12 +18,12 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.ConfigurationProvider;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-import org.apache.tamaya.spi.PropertyValueCombinationPolicy;
+import org.apache.tamaya.meta.MetaProperties;
+import org.apache.tamaya.spi.ConfigValueCombinationPolicy;
 
 import javax.annotation.Priority;
+import javax.config.ConfigProvider;
+import javax.config.spi.ConfigSource;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
@@ -35,7 +35,7 @@ import java.util.logging.Logger;
  * {@code _key.combination-policy=collect|override|fqPolicyClassName}.
  */
 @Priority(100)
-public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy {
+public class AdaptiveCombinationPolicy implements ConfigValueCombinationPolicy 
{
     /** Logger. */
     private static final Logger LOG = 
Logger.getLogger(AdaptiveCombinationPolicy.class.getName());
 
@@ -43,22 +43,18 @@ public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy
      * Collecting combination policy using (optional) {@code item-separator} 
parameter for determining the separator
      * to combine multiple config entries found.
      */
-    private static final PropertyValueCombinationPolicy COLLECTING_POLICY = 
new PropertyValueCombinationPolicy(){
+    private static final ConfigValueCombinationPolicy COLLECTING_POLICY = new 
ConfigValueCombinationPolicy(){
         @Override
-        public PropertyValue collect(PropertyValue currentValue, String key, 
PropertySource propertySource) {
+        public String collect(String currentValue, String key, ConfigSource 
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);
+            String newValue = propertySource.getValue(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;
+                final String separator = 
MetaProperties.getOptionalMetaEntry(ConfigProvider.getConfig(),
+                        key, "item-separator").orElse(",");
+                return currentValue + separator + newValue;
             }else{
                 if(currentValue!=null){
                     return currentValue;
@@ -69,20 +65,21 @@ public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy
     };
 
     /** Cache for loaded custom combination policies. */
-    private Map<Class, PropertyValueCombinationPolicy> configuredPolicies = 
new ConcurrentHashMap<>();
+    private Map<Class, ConfigValueCombinationPolicy> configuredPolicies = new 
ConcurrentHashMap<>();
 
     @Override
-    public PropertyValue collect(PropertyValue currentValue, String key, 
PropertySource propertySource){
-        if(key.startsWith("_")){
-            PropertyValue newValue = propertySource.get(key);
+    public String collect(String currentValue, String key, ConfigSource 
propertySource){
+        if(MetaProperties.isMetaEntry(key)){
+            String newValue = propertySource.getValue(key);
             if(newValue!=null){
                 return newValue;
             }
             return currentValue;
         }
-        String adaptiveCombinationPolicyClass  = 
ConfigurationProvider.getConfiguration().getOrDefault(
-                '_' + key+".combination-policy", "override");
-        PropertyValueCombinationPolicy combinationPolicy = null;
+        String adaptiveCombinationPolicyClass  = 
MetaProperties.getOptionalMetaEntry(
+                ConfigProvider.getConfig(),
+                key, "combination-policy").orElse("override");
+        ConfigValueCombinationPolicy combinationPolicy = null;
         switch(adaptiveCombinationPolicyClass){
             case "collect":
             case "COLLECT":
@@ -96,11 +93,11 @@ public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy
                 if(LOG.isLoggable(Level.FINEST)){
                     LOG.finest("Using default (overriding) combination policy 
for key: " + key + "");
                 }
-                combinationPolicy = 
PropertyValueCombinationPolicy.DEFAULT_OVERRIDING_POLICY;
+                combinationPolicy = 
ConfigValueCombinationPolicy.DEFAULT_OVERRIDING_POLICY;
                 break;
             default:
                 try{
-                    Class<PropertyValueCombinationPolicy> clazz = 
(Class<PropertyValueCombinationPolicy>)
+                    Class<ConfigValueCombinationPolicy> clazz = 
(Class<ConfigValueCombinationPolicy>)
                             Class.forName(adaptiveCombinationPolicyClass);
                     combinationPolicy = configuredPolicies.get(clazz);
                     if(combinationPolicy==null){
@@ -114,7 +111,7 @@ public class AdaptiveCombinationPolicy implements 
PropertyValueCombinationPolicy
                 } catch(Exception e){
                     LOG.log(Level.SEVERE, "Error loading configured 
PropertyValueCombinationPolicy for " +
                             "key: " + key + ", using default (overriding) 
policy.", e);
-                    combinationPolicy = 
PropertyValueCombinationPolicy.DEFAULT_OVERRIDING_POLICY;
+                    combinationPolicy = 
ConfigValueCombinationPolicy.DEFAULT_OVERRIDING_POLICY;
                 }
         }
         return combinationPolicy.collect(currentValue, key, propertySource);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..4507a63 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
@@ -18,9 +18,7 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
+import javax.config.spi.Converter;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
@@ -29,7 +27,7 @@ import java.util.logging.Logger;
 /**
  *  PropertyConverter for gnerating ArrayList representation of a values.
  */
-public class ArrayListConverter implements PropertyConverter<ArrayList> {
+public class ArrayListConverter implements Converter<ArrayList> {
 
     private static final Logger LOG = 
Logger.getLogger(ArrayListConverter.class.getName());
 
@@ -45,11 +43,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/db6b909a/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..4d410cc 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
@@ -18,44 +18,49 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.meta.MetaProperties;
 
+import javax.config.spi.Converter;
 import java.util.Collection;
 import java.util.Collections;
 
 /**
  *  PropertyConverter for gnerating a LIST representation of values.
  */
-public class CollectionConverter implements PropertyConverter<Collection> {
+public class CollectionConverter implements Converter<Collection> {
 
     @Override
-    public Collection convert(String value, ConversionContext context) {
-        String collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey()+".collection-type", "List");
+    public Collection convert(String value) {
+        String collectionType = MetaProperties.getOptionalMetaEntry(
+                ItemTokenizer.config(),
+                ItemTokenizer.key(),
+                "collection-type").orElse("List");
         if(collectionType.startsWith("java.util.")){
             collectionType = collectionType.substring("java.util.".length());
         }
         Collection result = null;
         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)){
+        if(MetaProperties.getOptionalMetaEntry(
+                ItemTokenizer.config(),
+                ItemTokenizer.key(),
+                "read-only", boolean.class).orElse(true)){
             return Collections.unmodifiableCollection(result);
         }
         return result;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..66dcd6f 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
@@ -18,9 +18,7 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
+import javax.config.spi.Converter;
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.logging.Level;
@@ -29,7 +27,7 @@ import java.util.logging.Logger;
 /**
  *  PropertyConverter for gnerating ConcurrentHashMap representation of a 
values.
  */
-public class ConcurrentHashMapConverter implements 
PropertyConverter<ConcurrentHashMap> {
+public class ConcurrentHashMapConverter implements 
Converter<ConcurrentHashMap> {
     private static final Logger LOG = 
Logger.getLogger(ConcurrentHashMapConverter.class.getName());
 
     /** The shared instance, used by other collection converters in this 
package.*/
@@ -44,12 +42,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/db6b909a/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..9eb4609 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java
@@ -18,9 +18,7 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
+import javax.config.spi.Converter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.logging.Level;
@@ -29,7 +27,7 @@ import java.util.logging.Logger;
 /**
  *  PropertyConverter for gnerating HashMap representation of a values.
  */
-public class HashMapConverter implements PropertyConverter<HashMap> {
+public class HashMapConverter implements Converter<HashMap> {
     private static final Logger LOG = 
Logger.getLogger(HashMapConverter.class.getName());
 
     /** The shared instance, used by other collection converters in this 
package.*/
@@ -44,12 +42,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/db6b909a/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..cac78dc 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java
@@ -18,9 +18,7 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
+import javax.config.spi.Converter;
 import java.util.HashSet;
 import java.util.List;
 import java.util.logging.Level;
@@ -29,7 +27,7 @@ import java.util.logging.Logger;
 /**
  *  PropertyConverter for gnerating HashSet representation of a values.
  */
-public class HashSetConverter implements PropertyConverter<HashSet> {
+public class HashSetConverter implements Converter<HashSet> {
 
     private static final Logger LOG = 
Logger.getLogger(HashSetConverter.class.getName());
 
@@ -45,12 +43,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/db6b909a/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 8d9a18d..505463d 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java
@@ -18,11 +18,16 @@
  */
 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.base.convert.ConversionContext;
+import org.apache.tamaya.base.convert.ConverterManager;
+import org.apache.tamaya.meta.MetaProperties;
+import org.apache.tamaya.spi.ConfigContextSupplier;
+import org.apache.tamaya.spi.TypeLiteral;
 
+import javax.config.Config;
+import javax.config.ConfigProvider;
+import javax.config.spi.Converter;
+import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
@@ -45,13 +50,13 @@ 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){
+        return split(value,
+                MetaProperties.getOptionalMetaEntry(
+                    config(),
+                key(),"item-separator").orElse( ","));
     }
 
     /**
@@ -87,12 +92,12 @@ final class ItemTokenizer {
      * 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 []}.
      * @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){
+        return splitMapEntry(mapEntry, MetaProperties.getOptionalMetaEntry(
+                config(),
+                key(),".map-entry-separator").orElse( "::"));
     }
 
     /**
@@ -129,33 +134,40 @@ 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);
+    public static Object convertValue(String value) {
+        String converterClass = MetaProperties.getOptionalMetaEntry(
+                config(),
+                key(),"item-converters").orElse(null);
+        List<Converter> valueConverters = new ArrayList<>(1);
         if (converterClass != null) {
             try {
-                valueConverters.add((PropertyConverter<Object>) 
Class.forName(converterClass).newInstance());
+                valueConverters.add((Converter<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])));
+        if (TypeLiteral.getTypeParameters(targetType()).length>0) {
+            if (config() instanceof ConfigContextSupplier) {
+                valueConverters.addAll(
+                        ((ConfigContextSupplier) 
config()).getConfigContext().getConverters(
+                                TypeLiteral.getTypeParameters(targetType())[0]
+                        ));
+            } else {
+                
valueConverters.addAll(ConverterManager.defaultInstance().getConverters(
+                        TypeLiteral.getTypeParameters(targetType())[0]));
+            }
         }
-        ConversionContext ctx = new 
ConversionContext.Builder(context.getConfiguration(),
-                context.getConfigurationContext(), context.getKey(),
-                TypeLiteral.of(context.getTargetType().getType())).build();
+        ConversionContext ctx = new ConversionContext.Builder(config(), key(), 
targetType()).build();
+        ConversionContext.setContext(ctx);
         Object result = null;
         if (valueConverters.isEmpty()) {
             return value;
         } else {
-            for (PropertyConverter<Object> conv : valueConverters) {
+            for (Converter<Object> conv : valueConverters) {
                 try {
-                    result = conv.convert(value, ctx);
+                    result = conv.convert(value);
                     if (result != null) {
                         return result;
                     }
@@ -168,4 +180,28 @@ final class ItemTokenizer {
         return null;
     }
 
+    static final Type targetType() {
+        ConversionContext ctx = ConversionContext.getContext();
+        if(ctx!=null){
+            return ctx.getTargetType();
+        }
+        return null;
+    }
+
+    static final Config config() {
+        ConversionContext ctx = ConversionContext.getContext();
+        if(ctx!=null){
+            return ctx.getConfiguration();
+        }
+        return ConfigProvider.getConfig();
+    }
+
+    static final String key() {
+        ConversionContext ctx = ConversionContext.getContext();
+        if(ctx!=null){
+            return ctx.getKey();
+        }
+        return null;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..e06c12d 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
@@ -18,9 +18,7 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
+import javax.config.spi.Converter;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.logging.Level;
@@ -29,7 +27,7 @@ import java.util.logging.Logger;
 /**
  *  PropertyConverter for gnerating LinkedList representation of a values.
  */
-public class LinkedListConverter implements PropertyConverter<LinkedList> {
+public class LinkedListConverter implements Converter<LinkedList> {
     private static final Logger LOG = 
Logger.getLogger(LinkedListConverter.class.getName());
 
     /** The shared instance, used by other collection converters in this 
package.*/
@@ -44,12 +42,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/db6b909a/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..e0d055c 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java
@@ -18,36 +18,41 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.meta.MetaProperties;
 
+import javax.config.spi.Converter;
 import java.util.Collections;
 import java.util.List;
 
 /**
  *  PropertyConverter for gnerating a LIST representation of values.
  */
-public class ListConverter implements PropertyConverter<List> {
+public class ListConverter implements Converter<List> {
 
     @Override
-    public List convert(String value, ConversionContext context) {
-        String collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey()+".collection-type", "List");
+    public List convert(String value) {
+        String collectionType = MetaProperties.getOptionalMetaEntry(
+                ItemTokenizer.config(),
+                ItemTokenizer.key(),
+                "collection-type").orElse("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)){
+        if(MetaProperties.getOptionalMetaEntry(
+                ItemTokenizer.config(),
+                ItemTokenizer.key(),
+                "read-only", boolean.class).orElse(true)){
             return Collections.unmodifiableList(result);
         }
         return result;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..1696519 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java
@@ -18,39 +18,44 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.meta.MetaProperties;
 
+import javax.config.spi.Converter;
 import java.util.Collections;
 import java.util.Map;
 
 /**
  *  PropertyConverter for gnerating HashMap representation of a values.
  */
-public class MapConverter implements PropertyConverter<Map> {
+public class MapConverter implements Converter<Map> {
 
     @Override
-    public Map convert(String value, ConversionContext context) {
-        String collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey()+".collection-type", "Map");
+    public Map convert(String value) {
+        String collectionType = MetaProperties.getOptionalMetaEntry(
+                ItemTokenizer.config(),
+                ItemTokenizer.key(),
+                "collection-type").orElse("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)){
+        if(MetaProperties.getOptionalMetaEntry(
+                ItemTokenizer.config(),
+                ItemTokenizer.key(),
+                "read-only", boolean.class).orElse(true)){
             return Collections.unmodifiableMap(result);
         }
         return result;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..2107c58 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java
@@ -18,36 +18,39 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.meta.MetaProperties;
 
+import javax.config.spi.Converter;
 import java.util.Collections;
 import java.util.Set;
 
 /**
  *  PropertyConverter for gnerating a LIST representation of values.
  */
-public class SetConverter implements PropertyConverter<Set> {
+public class SetConverter implements Converter<Set> {
 
     @Override
-    public Set convert(String value, ConversionContext context) {
-        String collectionType = context.getConfiguration().getOrDefault('_' + 
context.getKey()+".collection-type", "Set");
+    public Set convert(String value) {
+        String collectionType = 
MetaProperties.getOptionalMetaEntry(ItemTokenizer.config(),
+                ItemTokenizer.key(),"collection-type").orElse("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)){
+        if(MetaProperties.getOptionalMetaEntry(
+                ItemTokenizer.config(),
+                ItemTokenizer.key(),
+                "read-only", boolean.class).orElse(true)){
             return Collections.unmodifiableSet(result);
         }
         return result;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..d59ea02 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
@@ -18,19 +18,17 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
+import javax.config.spi.Converter;
 import java.util.Collections;
 import java.util.SortedMap;
 
 /**
  *  PropertyConverter for gnerating a LIST representation of values.
  */
-public class SortedMapConverter implements PropertyConverter<SortedMap> {
+public class SortedMapConverter implements Converter<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/db6b909a/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..5343523 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
@@ -18,19 +18,18 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
 
+import javax.config.spi.Converter;
 import java.util.Collections;
 import java.util.SortedSet;
 
 /**
  *  PropertyConverter for gnerating a LIST representation of values.
  */
-public class SortedSetConverter implements PropertyConverter<SortedSet> {
+public class SortedSetConverter implements Converter<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/db6b909a/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..8aa360e 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java
@@ -18,9 +18,7 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
+import javax.config.spi.Converter;
 import java.util.List;
 import java.util.TreeMap;
 import java.util.logging.Level;
@@ -29,7 +27,7 @@ import java.util.logging.Logger;
 /**
  *  PropertyConverter for gnerating HashMap representation of a values.
  */
-public class TreeMapConverter implements PropertyConverter<TreeMap> {
+public class TreeMapConverter implements Converter<TreeMap> {
     /** Logger used. */
     private static final Logger LOG = 
Logger.getLogger(HashMapConverter.class.getName());
 
@@ -45,12 +43,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/db6b909a/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..0e9dbed 100644
--- 
a/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java
+++ 
b/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java
@@ -18,9 +18,11 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.base.convert.ConversionContext;
 
+import javax.config.Config;
+import javax.config.ConfigProvider;
+import javax.config.spi.Converter;
 import java.util.List;
 import java.util.TreeSet;
 import java.util.logging.Level;
@@ -29,7 +31,7 @@ import java.util.logging.Logger;
 /**
  *  PropertyConverter for gnerating HashSet representation of a values.
  */
-public class TreeSetConverter implements PropertyConverter<TreeSet> {
+public class TreeSetConverter implements Converter<TreeSet> {
 
     private static final Logger LOG = 
Logger.getLogger(TreeSetConverter.class.getName());
 
@@ -45,12 +47,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;
@@ -60,4 +62,6 @@ public class TreeSetConverter implements 
PropertyConverter<TreeSet> {
         }
         return result;
     }
+
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/collections/src/main/resources/META-INF/services/javax.config.spi.Converter
----------------------------------------------------------------------
diff --git 
a/collections/src/main/resources/META-INF/services/javax.config.spi.Converter 
b/collections/src/main/resources/META-INF/services/javax.config.spi.Converter
new file mode 100644
index 0000000..167bc27
--- /dev/null
+++ 
b/collections/src/main/resources/META-INF/services/javax.config.spi.Converter
@@ -0,0 +1,31 @@
+#
+# 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 current 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.
+#
+org.apache.tamaya.collections.ArrayListConverter
+org.apache.tamaya.collections.CollectionConverter
+org.apache.tamaya.collections.HashMapConverter
+org.apache.tamaya.collections.ConcurrentHashMapConverter
+org.apache.tamaya.collections.HashSetConverter
+org.apache.tamaya.collections.LinkedListConverter
+org.apache.tamaya.collections.ListConverter
+org.apache.tamaya.collections.MapConverter
+org.apache.tamaya.collections.SetConverter
+org.apache.tamaya.collections.SortedSetConverter
+org.apache.tamaya.collections.SortedMapConverter
+org.apache.tamaya.collections.TreeMapConverter
+org.apache.tamaya.collections.TreeSetConverter

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigValueCombinationPolicy
----------------------------------------------------------------------
diff --git 
a/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigValueCombinationPolicy
 
b/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigValueCombinationPolicy
new file mode 100644
index 0000000..277c753
--- /dev/null
+++ 
b/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.ConfigValueCombinationPolicy
@@ -0,0 +1,19 @@
+#
+# 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 current 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.
+#
+org.apache.tamaya.collections.AdaptiveCombinationPolicy
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
----------------------------------------------------------------------
diff --git 
a/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
 
b/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
deleted file mode 100644
index 167bc27..0000000
--- 
a/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
+++ /dev/null
@@ -1,31 +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 current 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.
-#
-org.apache.tamaya.collections.ArrayListConverter
-org.apache.tamaya.collections.CollectionConverter
-org.apache.tamaya.collections.HashMapConverter
-org.apache.tamaya.collections.ConcurrentHashMapConverter
-org.apache.tamaya.collections.HashSetConverter
-org.apache.tamaya.collections.LinkedListConverter
-org.apache.tamaya.collections.ListConverter
-org.apache.tamaya.collections.MapConverter
-org.apache.tamaya.collections.SetConverter
-org.apache.tamaya.collections.SortedSetConverter
-org.apache.tamaya.collections.SortedMapConverter
-org.apache.tamaya.collections.TreeMapConverter
-org.apache.tamaya.collections.TreeSetConverter

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyValueCombinationPolicy
----------------------------------------------------------------------
diff --git 
a/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyValueCombinationPolicy
 
b/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyValueCombinationPolicy
deleted file mode 100644
index 277c753..0000000
--- 
a/collections/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyValueCombinationPolicy
+++ /dev/null
@@ -1,19 +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 current 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.
-#
-org.apache.tamaya.collections.AdaptiveCombinationPolicy
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..21b76e1 100644
--- 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
+++ 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
@@ -18,9 +18,11 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
-import org.apache.tamaya.TypeLiteral;
+import javax.config.Config;
+import javax.config.ConfigProvider;
+
+import org.apache.tamaya.base.convert.ConversionContext;
+import org.apache.tamaya.spi.TypeLiteral;
 import org.junit.Test;
 
 import java.util.Currency;
@@ -46,8 +48,8 @@ public class CollectionAdvancedTests {
      */
     @Test
     public void testCustomSeparator(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        List<String> items = config.get("sep-list", new 
TypeLiteral<List<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        List<String> items = config.getValue("sep-list", List.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(3, items.size());
@@ -65,8 +67,11 @@ public class CollectionAdvancedTests {
      */
     @Test
     public void testTypedContent(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        List<Currency> items = config.get("currency-list", new 
TypeLiteral<List<Currency>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "currency-list", new 
TypeLiteral<List<Currency>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        List<Currency> items = config.getValue("currency-list", List.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(3, items.size());
@@ -85,8 +90,8 @@ public class CollectionAdvancedTests {
      */
     @Test
     public void testCustomParser(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        List<String> items = config.get("parser-list", new 
TypeLiteral<List<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        List<String> items = config.getValue("parser-list", List.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(3, items.size());
@@ -105,8 +110,8 @@ public class CollectionAdvancedTests {
      */
     @Test
     public void testCustomMapParser(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        Map<String,String> items = config.get("redefined-map", Map.class);
+        Config config = ConfigProvider.getConfig();
+        Map<String,String> items = config.getValue("redefined-map", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(3, items.size());

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/db6b909a/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..124cc02 100644
--- 
a/collections/src/test/java/org/apache/tamaya/collections/CollectionsBaseTests.java
+++ 
b/collections/src/test/java/org/apache/tamaya/collections/CollectionsBaseTests.java
@@ -18,16 +18,18 @@
  */
 package org.apache.tamaya.collections;
 
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
-import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.base.convert.ConversionContext;
+import org.apache.tamaya.spi.TypeLiteral;
 import org.junit.Test;
 
+import javax.config.Config;
+import javax.config.ConfigProvider;
 import java.util.*;
 
 import static junit.framework.TestCase.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Basic tests for Tamaya collection support. Relevant configs for this tests:
@@ -39,12 +41,15 @@ public class CollectionsBaseTests {
 
     @Test
     public void testList_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        List<String> items = config.get("base.items", new 
TypeLiteral<List<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.items", new 
TypeLiteral<List<String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        List<String> items = config.getValue("base.items", List.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
-        items = (List<String>) config.get("base.items", List.class);
+        items = (List<String>) config.getValue("base.items", List.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
@@ -52,38 +57,51 @@ public class CollectionsBaseTests {
 
     @Test
     public void testArrayList_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        ArrayList<String> items = config.get("base.items", new 
TypeLiteral<ArrayList<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.items", new 
TypeLiteral<ArrayList<String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        List<String> items = config.getValue("base.items", ArrayList.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
-        items = (ArrayList<String>) config.get("base.items", ArrayList.class);
+        assertTrue(items instanceof ArrayList);
+        items = (ArrayList<String>) config.getValue("base.items", 
ArrayList.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
+        assertTrue(items instanceof ArrayList);
     }
 
     @Test
     public void testLinkedList_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        LinkedList<String> items = config.get("base.items", new 
TypeLiteral<LinkedList<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.items", new 
TypeLiteral<LinkedList<String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        List<String> items = config.getValue("base.items", List.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
+        assertTrue(items instanceof LinkedList);
         assertEquals(10, items.size());
-        items = (LinkedList<String>) config.get("base.items", 
LinkedList.class);
+        items = (LinkedList<String>) config.getValue("base.items", 
LinkedList.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
+        assertTrue(items instanceof LinkedList);
     }
 
     @Test
     public void testSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        Set<String> items = config.get("base.items", new 
TypeLiteral<Set<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.items", new 
TypeLiteral<Set<String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Set<String> items = config.getValue("base.items", Set.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
-        items = (Set<String>) config.get("base.items", Set.class);
+        items = (Set<String>) config.getValue("base.items", Set.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
@@ -91,47 +109,65 @@ public class CollectionsBaseTests {
 
     @Test
     public void testSortedSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        Set<String> items = config.get("base.items", new 
TypeLiteral<SortedSet<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.items", new 
TypeLiteral<SortedSet<String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Set<String> items = config.getValue("base.items", Set.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
+        assertTrue(items instanceof SortedSet);
         assertEquals(10, items.size());
-        items = (SortedSet<String>) config.get("base.items", SortedSet.class);
+        items = (SortedSet<String>) config.getValue("base.items", 
SortedSet.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
+        assertTrue(items instanceof SortedSet);
     }
 
     @Test
     public void testHashSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        Set<String> items = config.get("base.items", new 
TypeLiteral<HashSet<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.items", new 
TypeLiteral<HashSet<String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Set<String> items = config.getValue("base.items", Set.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
-        items = (HashSet<String>) config.get("base.items", HashSet.class);
+        assertTrue(items instanceof HashSet);
+        items = (HashSet<String>) config.getValue("base.items", HashSet.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
+        assertTrue(items instanceof HashSet);
     }
 
     @Test
     public void testTreeSet_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        TreeSet<String> items = config.get("base.items", new 
TypeLiteral<TreeSet<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.items", new 
TypeLiteral<TreeSet<String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Set<String> items = config.getValue("base.items", Set.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
-        items = (TreeSet<String>) config.get("base.items", TreeSet.class);
+        assertTrue(items instanceof TreeSet);
+        items = (TreeSet<String>) config.getValue("base.items", TreeSet.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
+        assertTrue(items instanceof TreeSet);
     }
 
     @Test
     public void testMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        Map<String,String> items = config.get("base.map", new 
TypeLiteral<Map<String,String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.map", new 
TypeLiteral<Map<String,String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Map<String,String> items = config.getValue("base.map", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(4, items.size());
@@ -139,7 +175,7 @@ public class CollectionsBaseTests {
         assertEquals("b", items.get("2"));
         assertEquals("c", items.get("3"));
         assertEquals(" ", items.get("4"));
-        items = (Map<String,String>) config.get("base.map", Map.class);
+        items = (Map<String,String>) config.getValue("base.map", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(4, items.size());
@@ -151,8 +187,11 @@ public class CollectionsBaseTests {
 
     @Test
     public void testHashMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        Map<String,String> items = config.get("base.map", new 
TypeLiteral<HashMap<String,String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.map", new 
TypeLiteral<HashMap<String,String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Map<String,String> items = config.getValue("base.map", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(4, items.size());
@@ -160,7 +199,8 @@ public class CollectionsBaseTests {
         assertEquals("b", items.get("2"));
         assertEquals("c", items.get("3"));
         assertEquals(" ", items.get("4"));
-        items = (HashMap<String,String>) config.get("base.map", HashMap.class);
+        assertTrue(items instanceof HashMap);
+        items = (HashMap<String,String>) config.getValue("base.map", 
HashMap.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(4, items.size());
@@ -168,12 +208,16 @@ public class CollectionsBaseTests {
         assertEquals("b", items.get("2"));
         assertEquals("c", items.get("3"));
         assertEquals(" ", items.get("4"));
+        assertTrue(items instanceof HashMap);
     }
 
     @Test
     public void testSortedMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        Map<String,String> items = config.get("base.map", new 
TypeLiteral<SortedMap<String,String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.map", new 
TypeLiteral<SortedMap<String,String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Map<String,String> items = config.getValue("base.map", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(4, items.size());
@@ -181,7 +225,8 @@ public class CollectionsBaseTests {
         assertEquals("b", items.get("2"));
         assertEquals("c", items.get("3"));
         assertEquals(" ", items.get("4"));
-        items = (Map<String,String>) config.get("base.map", SortedMap.class);
+        assertTrue(items instanceof SortedMap);
+        items = (Map<String,String>) config.getValue("base.map", 
SortedMap.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(4, items.size());
@@ -189,12 +234,16 @@ public class CollectionsBaseTests {
         assertEquals("b", items.get("2"));
         assertEquals("c", items.get("3"));
         assertEquals(" ", items.get("4"));
+        assertTrue(items instanceof SortedMap);
     }
 
     @Test
     public void testTreeMap_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        TreeMap<String,String> items = config.get("base.map", new 
TypeLiteral<TreeMap<String,String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.map", new 
TypeLiteral<TreeMap<String,String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Map<String,String> items = config.getValue("base.map", Map.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(4, items.size());
@@ -202,7 +251,8 @@ public class CollectionsBaseTests {
         assertEquals("b", items.get("2"));
         assertEquals("c", items.get("3"));
         assertEquals(" ", items.get("4"));
-        items =  config.get("base.map", TreeMap.class);
+        assertTrue(items instanceof TreeMap);
+        items =  config.getValue("base.map", TreeMap.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(4, items.size());
@@ -210,16 +260,21 @@ public class CollectionsBaseTests {
         assertEquals("b", items.get("2"));
         assertEquals("c", items.get("3"));
         assertEquals(" ", items.get("4"));
+        assertTrue(items instanceof TreeMap);
     }
 
     @Test
     public void testCollection_String(){
-        Configuration config = ConfigurationProvider.getConfiguration();
-        Collection<String> items = config.get("base.items", new 
TypeLiteral<Collection<String>>(){});
+        Config config = ConfigProvider.getConfig();
+        ConversionContext ctx = new ConversionContext.Builder(
+                "base.map", new 
TypeLiteral<List<String>>(){}.getType()).build();
+        ConversionContext.setContext(ctx);
+        Collection<String> items = config.getValue("base.items", 
Collection.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());
-        items = (Collection<String>) config.get("base.items", 
Collection.class);
+        assertTrue(items instanceof List);
+        items = (Collection<String>) config.getValue("base.items", 
Collection.class);
         assertNotNull(items);
         assertFalse(items.isEmpty());
         assertEquals(10, items.size());

Reply via email to