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());
