Repository: incubator-tamaya
Updated Branches:
  refs/heads/master d441521e4 -> 45087eeba


TAMAYA-63: Aligned API with Java 8. Fixed issues.
TAMAYA 61: Implemented value combination interface logic.


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

Branch: refs/heads/master
Commit: a95b0ba24d20365463f91b14542e1e6973a39d78
Parents: d441521
Author: anatole <[email protected]>
Authored: Sun Jan 25 23:42:48 2015 +0100
Committer: anatole <[email protected]>
Committed: Mon Jan 26 00:09:58 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/tamaya/Configuration.java   | 29 ++++++-
 .../org/apache/tamaya/PropertyConverter.java    | 41 ++++++++++
 .../java/org/apache/tamaya/TypeLiteral.java     |  6 +-
 .../apache/tamaya/spi/ConfigurationContext.java | 20 +++--
 .../apache/tamaya/spi/PropertyConverter.java    | 41 ----------
 .../core/internal/DefaultConfiguration.java     | 46 ++++++++---
 .../internal/DefaultConfigurationContext.java   | 85 +++++++++++++++++---
 .../core/internal/PropertyConverterManager.java | 45 +++++++----
 .../converters/BigDecimalConverter.java         |  2 +-
 .../converters/BigIntegerConverter.java         |  2 +-
 .../internal/converters/BooleanConverter.java   |  2 +-
 .../core/internal/converters/ByteConverter.java |  2 +-
 .../core/internal/converters/CharConverter.java |  2 +-
 .../internal/converters/CurrencyConverter.java  |  2 +-
 .../internal/converters/DoubleConverter.java    |  2 +-
 .../core/internal/converters/EnumConverter.java |  2 +-
 .../internal/converters/FloatConverter.java     |  2 +-
 .../internal/converters/IntegerConverter.java   |  2 +-
 .../core/internal/converters/LongConverter.java |  2 +-
 .../internal/converters/NumberConverter.java    |  2 +-
 .../internal/converters/ShortConverter.java     |  2 +-
 .../org.apache.tamaya.PropertyConverter         | 30 +++++++
 .../org.apache.tamaya.spi.PropertyConverter     | 30 -------
 23 files changed, 269 insertions(+), 130 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/api/src/main/java/org/apache/tamaya/Configuration.java
----------------------------------------------------------------------
diff --git a/java7/api/src/main/java/org/apache/tamaya/Configuration.java 
b/java7/api/src/main/java/org/apache/tamaya/Configuration.java
index 25ecaec..c9a012e 100644
--- a/java7/api/src/main/java/org/apache/tamaya/Configuration.java
+++ b/java7/api/src/main/java/org/apache/tamaya/Configuration.java
@@ -19,6 +19,7 @@
 package org.apache.tamaya;
 
 import java.util.Map;
+import java.util.Objects;
 
 
 /**
@@ -50,7 +51,7 @@ public interface Configuration {
 
     /**
      * Get the property keys as type T. This will implicitly require a 
corresponding {@link
-     * org.apache.tamaya.spi.PropertyConverter} to be available that is 
capable current providing type T
+     * PropertyConverter} to be available that is capable current providing 
type T
      * fromMap the given String keys.
      *
      * @param key          the property's absolute, or relative path, e.g. 
@code
@@ -62,6 +63,32 @@ public interface Configuration {
     <T> T get(String key, Class<T> type);
 
     /**
+     * Get the property keys as type T. This will implicitly require a 
corresponding {@link
+     * PropertyConverter} to be available that is capable current providing 
type T
+     * fromMap the given String keys.
+     *
+     * @param key          the property's absolute, or relative path, e.g. 
@code
+     *                     a/b/c/d.myProperty}.
+     * @param type         The target type required, not null.
+     * @return the property value, never null..
+     * @throws ConfigException if the keys could not be converted to the 
required target type.
+     */
+    <T> T get(String key, TypeLiteral<T> type);
+
+    /**
+     * Get the property keys as type T. This will implicitly require a 
corresponding {@link
+     * PropertyConverter} to be available that is capable current providing 
type T
+     * fromMap the given String keys.
+     *
+     * @param key          the property's absolute, or relative path, e.g. 
@code
+     *                     a/b/c/d.myProperty}.
+     * @param converter         The target converter to be used, not null.
+     * @return the property value, never null..
+     * @throws ConfigException if the keys could not be converted to the 
required target type.
+     */
+    <T> T get(String key, PropertyConverter<T> converter);
+
+    /**
      * Access all current known Configuration properties as a full {@code 
Map<String,String>}.
      * Be aware that entries from non scannable parts of the registered {@link 
org.apache.tamaya.spi.PropertySource}
      * instances may not be contained in the result, but nevertheless be 
accessible calling one of the

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/api/src/main/java/org/apache/tamaya/PropertyConverter.java
----------------------------------------------------------------------
diff --git a/java7/api/src/main/java/org/apache/tamaya/PropertyConverter.java 
b/java7/api/src/main/java/org/apache/tamaya/PropertyConverter.java
new file mode 100644
index 0000000..bff85a3
--- /dev/null
+++ b/java7/api/src/main/java/org/apache/tamaya/PropertyConverter.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya;
+
+
+/**
+ * Interface for an property that converts a configured String into something 
else.
+ * This is used for implementing type conversion from a property (String) to a 
certain target
+ * type. Hereby the target type can be multivalued (eg collections) or complex 
if needed.
+ */
+public interface PropertyConverter<T>{
+
+    /**
+     * Convert the given configuration keys from it' String representation 
into the required target type.
+     * @param value the configuration keys
+     * @return converted keys
+     */
+    T convert(String value);
+
+    //X TODO probably add some diagnostic info which explains what kind of
+    //X format(s) is supported.
+    //X This could be useful if e.g. no converter in the chain felt responsible
+    //X because a wrongly formatted configuration string had been used.
+    //X This could probably also be handled via an additional Annotation on 
the converter.
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java
----------------------------------------------------------------------
diff --git a/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java 
b/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java
index 32c32a6..2e1ab31 100644
--- a/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java
+++ b/java7/api/src/main/java/org/apache/tamaya/TypeLiteral.java
@@ -46,7 +46,11 @@ public class TypeLiteral<T> implements Serializable {
 
     protected TypeLiteral() { }
 
-    public static <T> TypeLiteral<T> of(Type type){
+    public static <L> TypeLiteral<L> of(Type type){
+        return new TypeLiteral<>(type);
+    }
+
+    public static <L> TypeLiteral<L> of(Class<L> type){
         return new TypeLiteral<>(type);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationContext.java
----------------------------------------------------------------------
diff --git 
a/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationContext.java 
b/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationContext.java
index 6f5de4b..160194b 100644
--- a/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationContext.java
+++ b/java7/api/src/main/java/org/apache/tamaya/spi/ConfigurationContext.java
@@ -19,13 +19,16 @@
 package org.apache.tamaya.spi;
 
 
+import org.apache.tamaya.PropertyConverter;
+import org.apache.tamaya.TypeLiteral;
+
 import java.util.List;
 import java.util.Map;
 
 /**
  * Central SPI for programmatically dealing with the setup of the 
configuration system.
  * This includes adding and enlisting {@link 
org.apache.tamaya.spi.PropertySource}s,
- * managing {@link PropertyConverter}s, ConfigFilters, etc.
+ * managing {@link org.apache.tamaya.PropertyConverter}s, ConfigFilters, etc.
  */
 public interface ConfigurationContext {
 
@@ -53,13 +56,13 @@ public interface ConfigurationContext {
 
 
     /**
-     * This method can be used for programmatically adding {@link 
PropertyConverter}s.
+     * This method can be used for programmatically adding {@link 
org.apache.tamaya.PropertyConverter}s.
      * It is not needed for normal 'usage' by end users, but only for 
Extension Developers!
      *
      * @param typeToConvert the type which the converter is for
      * @param propertyConverter the PropertyConverters to add for this type
      */
-    <T> void addPropertyConverter(Class<T> typeToConvert, PropertyConverter<T> 
propertyConverter);
+    <T> void addPropertyConverter(TypeLiteral<T> typeToConvert, 
PropertyConverter<T> propertyConverter);
 
     /**
      * <p>
@@ -81,7 +84,7 @@ public interface ConfigurationContext {
      *
      * @return map with sorted list of registered PropertySources per type.
      */
-    Map<Class<?>, List<PropertyConverter<?>>> getPropertyConverters();
+    Map<TypeLiteral<?>, List<PropertyConverter<?>>> getPropertyConverters();
 
     /**
      * <p>
@@ -130,11 +133,18 @@ public interface ConfigurationContext {
      *
      * @return a sorted list of registered PropertySources per type.
      */
-    <T> List<PropertyConverter<T>> getPropertyConverters(Class<T> type);
+    <T> List<PropertyConverter<T>> getPropertyConverters(TypeLiteral<T> type);
 
     /**
      * Access the current PropertyFilter instances.
      * @return the list of registered PropertyFilters, never null.
      */
     List<PropertyFilter> getPropertyFilters();
+
+    /**
+     * Access the {@link org.apache.tamaya.spi.PropertyValueCombinationPolicy} 
used to evaluate the final
+     * property values.
+     * @return the {@link 
org.apache.tamaya.spi.PropertyValueCombinationPolicy} used, never null.
+     */
+    PropertyValueCombinationPolicy getPropertyValueCombinationPolicy();
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java 
b/java7/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java
deleted file mode 100644
index 167e0a8..0000000
--- a/java7/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.spi;
-
-
-/**
- * Interface for an property that converts a configured String into something 
else.
- * This is used for implementing type conversion from a property (String) to a 
certain target
- * type. Hereby the target type can be multivalued (eg collections) or complex 
if needed.
- */
-public interface PropertyConverter<T>{
-
-    /**
-     * Convert the given configuration keys from it' String representation 
into the required target type.
-     * @param value the configuration keys
-     * @return converted keys
-     */
-    T convert(String value);
-
-    //X TODO probably add some diagnostic info which explains what kind of
-    //X format(s) is supported.
-    //X This could be useful if e.g. no converter in the chain felt responsible
-    //X because a wrongly formatted configuration string had been used.
-    //X This could probably also be handled via an additional Annotation on 
the converter.
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
index 4215a73..9d8ad00 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
@@ -22,11 +22,12 @@ import org.apache.tamaya.ConfigException;
 import org.apache.tamaya.ConfigOperator;
 import org.apache.tamaya.ConfigQuery;
 import org.apache.tamaya.Configuration;
+import org.apache.tamaya.TypeLiteral;
 import org.apache.tamaya.spi.ConfigurationContext;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 import org.apache.tamaya.spi.PropertyFilter;
 import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.ServiceContextManager;
+import org.apache.tamaya.spi.PropertyValueCombinationPolicy;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -80,12 +81,10 @@ public class DefaultConfiguration implements Configuration {
     public String get(String key) {
         List<PropertySource> propertySources = 
configurationContext.getPropertySources();
         String unfilteredValue = null;
+        PropertyValueCombinationPolicy combinationPolicy = 
this.configurationContext
+                .getPropertyValueCombinationPolicy();
         for (PropertySource propertySource : propertySources) {
-            String value = propertySource.get(key);
-            if (value != null) {
-                unfilteredValue = value.length() > 0 ? value : null;
-                break;
-            }
+                unfilteredValue = combinationPolicy.collect(unfilteredValue, 
key, propertySource);
         }
         return applyFilter(key, unfilteredValue);
     }
@@ -166,13 +165,11 @@ public class DefaultConfiguration implements 
Configuration {
      * @return the filtered map.
      */
     private Map<String, String> applyFilters(Map<String, String> inputMap) {
-        final Map<String, String> resultMap = new HashMap<>();
+        Map<String, String> resultMap = new HashMap<>();
         // Apply filters to values, prevent values filtered to null!
         for (int i = 0; i < MAX_FILTER_LOOPS; i++) {
             AtomicInteger changes = new AtomicInteger();
             for (PropertyFilter filter : 
configurationContext.getPropertyFilters()) {
-
-
                 for (Map.Entry<String, String> entry : inputMap.entrySet()) {
                     final String k = entry.getKey();
                     final String v = entry.getValue();
@@ -189,6 +186,9 @@ public class DefaultConfiguration implements Configuration {
                     if (null != newValue) {
                         resultMap.put(k, newValue);
                     }
+                    else{
+                        resultMap.remove(k);
+                    }
                 }
             }
             if (changes.get() == 0) {
@@ -205,13 +205,12 @@ public class DefaultConfiguration implements 
Configuration {
                 changes.set(0);
             }
         }
-
         return resultMap;
     }
 
     /**
      * Accesses the current String value for the given key and tries to 
convert it
-     * using the {@link org.apache.tamaya.spi.PropertyConverter} instances 
provided by the current
+     * using the {@link org.apache.tamaya.PropertyConverter} instances 
provided by the current
      * {@link org.apache.tamaya.spi.ConfigurationContext}.
      *
      * @param key  the property's absolute, or relative path, e.g. @code
@@ -222,6 +221,22 @@ public class DefaultConfiguration implements Configuration 
{
      */
     @Override
     public <T> T get(String key, Class<T> type) {
+        return get(key, TypeLiteral.of(type));
+    }
+
+    /**
+     * Accesses the current String value for the given key and tries to 
convert it
+     * using the {@link org.apache.tamaya.PropertyConverter} instances 
provided by the current
+     * {@link org.apache.tamaya.spi.ConfigurationContext}.
+     *
+     * @param key  the property's absolute, or relative path, e.g. @code
+     *             a/b/c/d.myProperty}.
+     * @param type The target type required, not null.
+     * @param <T>  the value type
+     * @return the converted value, never null.
+     */
+    @Override
+    public <T> T get(String key, TypeLiteral<T> type) {
         String value = get(key);
         if (value != null) {
             List<PropertyConverter<T>> converters = 
configurationContext.getPropertyConverters(type);
@@ -235,12 +250,17 @@ public class DefaultConfiguration implements 
Configuration {
                     LOG.log(Level.FINEST, "PropertyConverter: " + converter + 
" failed to convert value: " + value, e);
                 }
             }
-            throw new ConfigException("Unparseable config value for type: " + 
type.getName() + ": " + key);
+            throw new ConfigException("Unparseable config value for type: " + 
type.getRawType().getName() + ": " + key);
         }
 
         return null;
     }
 
+    @Override
+    public <T> T get(String key, PropertyConverter<T> converter) {
+        return null;
+    }
+
     public Configuration with(ConfigOperator operator) {
         return operator.operate(this);
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
index 3abae9d..a754310 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfigurationContext.java
@@ -18,11 +18,14 @@
  */
 package org.apache.tamaya.core.internal;
 
+import org.apache.tamaya.TypeLiteral;
 import org.apache.tamaya.spi.ConfigurationContext;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 import org.apache.tamaya.spi.PropertyFilter;
 import org.apache.tamaya.spi.PropertySource;
 import org.apache.tamaya.spi.PropertySourceProvider;
+import org.apache.tamaya.spi.PropertyValueCombinationPolicy;
+import org.apache.tamaya.spi.ServiceContext;
 import org.apache.tamaya.spi.ServiceContextManager;
 
 import javax.annotation.Priority;
@@ -36,13 +39,16 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.logging.Logger;
 
 /**
  * Default Implementation of a simple ConfigurationContext.
  */
 public class DefaultConfigurationContext implements ConfigurationContext {
+    /** The logger used. */
+    private final static Logger LOG = 
Logger.getLogger(DefaultConfigurationContext.class.getName());
     /**
-     * Cubcomponent handling {@link org.apache.tamaya.spi.PropertyConverter} 
instances.
+     * Cubcomponent handling {@link org.apache.tamaya.PropertyConverter} 
instances.
      */
     private PropertyConverterManager propertyConverterManager = new 
PropertyConverterManager();
 
@@ -57,6 +63,12 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
     private List<PropertyFilter> immutablePropertyFilters;
 
     /**
+     * The overriding policy used when combining PropertySources registered to 
evalute the final configuration
+     * values.
+     */
+    private PropertyValueCombinationPolicy propertyValueCombinationPolicy;
+
+    /**
      * Lock for internal synchronization.
      */
     private ReentrantReadWriteLock propertySourceLock = new 
ReentrantReadWriteLock();
@@ -80,13 +92,41 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
         Collections.sort(propertySources, new PropertySourceComparator());
 
         immutablePropertySources = 
Collections.unmodifiableList(propertySources);
+        LOG.info("Registered " + immutablePropertySources.size() + " property 
sources: " +
+                createStringList(immutablePropertySources, new 
Function<PropertySource, String>() {
+                    @Override
+                    public String apply(PropertySource ps) {
+                        return ps.getName() + '[' + 
ps.getClass().getName()+']';
+                    }
+                }));
 
         // as next step we pick up the PropertyFilters pretty much the same way
         List<PropertyFilter> propertyFilters = new ArrayList<>();
         
propertyFilters.addAll(ServiceContextManager.getServiceContext().getServices(PropertyFilter.class));
         Collections.sort(propertyFilters, new PropertyFilterComparator());
+        immutablePropertyFilters = 
Collections.unmodifiableList(propertyFilters);
+        LOG.info("Registered " + immutablePropertyFilters.size() + " property 
filters: " +
+                createStringList(immutablePropertyFilters, new 
Function<PropertyFilter, String>() {
+                    @Override
+                    public String apply(PropertyFilter propertyFilter) {
+                        return propertyFilter.getClass().getName();
+                    }
+                }));
 
         immutablePropertyFilters = 
Collections.unmodifiableList(propertyFilters);
+        LOG.info("Registered " + immutablePropertyFilters.size() + " property 
filters: " +
+                createStringList(immutablePropertyFilters,new 
Function<PropertyFilter, String>() {
+                    @Override
+                    public String apply(PropertyFilter propertyFilter) {
+                        return propertyFilter.getClass().getName();
+                    }
+                }));
+
+        propertyValueCombinationPolicy = 
ServiceContextManager.getServiceContext().getService(PropertyValueCombinationPolicy.class);
+        if(propertyValueCombinationPolicy==null) {
+            propertyValueCombinationPolicy = 
PropertyValueCombinationPolicy.DEFAULT_OVERRIDING_COLLECTOR;
+        }
+        LOG.info("Using PropertyValueCombinationPolicy: " + 
propertyValueCombinationPolicy);
     }
 
     /**
@@ -97,7 +137,16 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
         List<PropertySource> propertySources = new ArrayList<>();
         List<PropertySourceProvider> propertySourceProviders = 
ServiceContextManager.getServiceContext().getServices(PropertySourceProvider.class);
         for (PropertySourceProvider propertySourceProvider : 
propertySourceProviders) {
-                
propertySources.addAll(propertySourceProvider.getPropertySources());
+            Collection<PropertySource> sources = 
propertySourceProvider.getPropertySources();
+            LOG.finer("PropertySourceProvider " + 
propertySourceProvider.getClass().getName() +
+                    " provided the following property sources: " +
+                    createStringList(sources,new Function<PropertySource, 
String>() {
+                        @Override
+                        public String apply(PropertySource ps) {
+                            return ps.getName() + '[' + 
ps.getClass().getName()+']';
+                        }
+                    }));
+                propertySources.addAll(sources);
         }
 
         return propertySources;
@@ -131,11 +180,11 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
          */
         private int comparePropertySources(PropertySource source1, 
PropertySource source2) {
             if (source1.getOrdinal() < source2.getOrdinal()) {
-                return 1;
-            } else if (source1.getOrdinal() > source2.getOrdinal()) {
                 return -1;
+            } else if (source1.getOrdinal() > source2.getOrdinal()) {
+                return 1;
             } else {
-                return 
source2.getClass().getName().compareTo(source1.getClass().getName());
+                return 
source1.getClass().getName().compareTo(source2.getClass().getName());
             }
         }
 
@@ -183,17 +232,18 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
     }
 
     @Override
-    public <T> void addPropertyConverter(Class<T> typeToConvert, 
PropertyConverter<T> propertyConverter) {
+    public <T> void addPropertyConverter(TypeLiteral<T> typeToConvert, 
PropertyConverter<T> propertyConverter) {
         propertyConverterManager.register(typeToConvert, propertyConverter);
+        LOG.info("Added PropertyConverter: " + 
propertyConverter.getClass().getName());
     }
 
     @Override
-    public Map<Class<?>, List<PropertyConverter<?>>> getPropertyConverters() {
+    public Map<TypeLiteral<?>, List<PropertyConverter<?>>> 
getPropertyConverters() {
         return propertyConverterManager.getPropertyConverters();
     }
 
     @Override
-    public <T> List<PropertyConverter<T>> getPropertyConverters(Class<T> 
targetType) {
+    public <T> List<PropertyConverter<T>> getPropertyConverters(TypeLiteral<T> 
targetType) {
         return propertyConverterManager.getPropertyConverters(targetType);
     }
 
@@ -202,4 +252,21 @@ public class DefaultConfigurationContext implements 
ConfigurationContext {
         return immutablePropertyFilters;
     }
 
+    @Override
+    public PropertyValueCombinationPolicy getPropertyValueCombinationPolicy(){
+        return propertyValueCombinationPolicy;
+    }
+
+    private <T> String createStringList(Collection<T> items, 
Function<T,String> mapper){
+        StringBuilder builder = new StringBuilder();
+        for(T t: items){
+            builder.append(mapper.apply(t));
+        }
+        return builder.toString();
+    }
+
+    private static interface Function<T,R>{
+        R apply(T t);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
index 67d77b6..3fa97b9 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
@@ -19,8 +19,9 @@
 package org.apache.tamaya.core.internal;
 
 import org.apache.tamaya.ConfigException;
+import org.apache.tamaya.TypeLiteral;
 import org.apache.tamaya.core.internal.converters.EnumConverter;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 import org.apache.tamaya.spi.ServiceContextManager;
 
 import java.lang.reflect.Constructor;
@@ -43,7 +44,7 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**
- * Manager that deals with {@link org.apache.tamaya.spi.PropertyConverter} 
instances.
+ * Manager that deals with {@link org.apache.tamaya.PropertyConverter} 
instances.
  * This class is thread-safe.
  */
 public class PropertyConverterManager {
@@ -54,7 +55,7 @@ public class PropertyConverterManager {
     /**
      * The registered converters.
      */
-    private Map<Class<?>, List<PropertyConverter<?>>> converters = new 
ConcurrentHashMap<>();
+    private Map<TypeLiteral<?>, List<PropertyConverter<?>>> converters = new 
ConcurrentHashMap<>();
     /**
      * The lock used.
      */
@@ -79,7 +80,7 @@ public class PropertyConverterManager {
                             conv.getClass().getName());
             } else {
                 Type targetType = type.getActualTypeArguments()[0];
-                register((Class<?>) targetType, conv);
+                register(TypeLiteral.of(targetType), conv);
             }
         }
     }
@@ -91,7 +92,7 @@ public class PropertyConverterManager {
      * @param converter  the converter, not null.
      * @param <T>        the type.
      */
-    public <T> void register(Class<T> targetType, PropertyConverter<T> 
converter) {
+    public <T> void register(TypeLiteral<T> targetType, PropertyConverter<T> 
converter) {
         Objects.requireNonNull(converter);
         Lock writeLock = lock.writeLock();
         try {
@@ -115,8 +116,18 @@ public class PropertyConverterManager {
      * @return true, if a converter for the given type is registered, or a 
default one can be created.
      */
     public boolean isTargetTypeSupported(Class<?> targetType) {
+        return isTargetTypeSupported(TypeLiteral.of(targetType));
+    }
+
+    /**
+     * Allows to evaluate if a given target type is supported.
+     *
+     * @param targetType the target type, not null.
+     * @return true, if a converter for the given type is registered, or a 
default one can be created.
+     */
+    public boolean isTargetTypeSupported(TypeLiteral<?> targetType) {
         return converters.containsKey(targetType)
-               || createDefaultPropertyConverter(targetType) != null;
+                || createDefaultPropertyConverter(targetType) != null;
     }
 
     /**
@@ -125,9 +136,9 @@ public class PropertyConverterManager {
      * factory methods taking a single String instance.
      *
      * @return the current map of instantiated and registered converters.
-     * @see #createDefaultPropertyConverter(Class)
+     * @see #createDefaultPropertyConverter(org.apache.tamaya.TypeLiteral)
      */
-    public Map<Class<?>, List<PropertyConverter<?>>> getPropertyConverters() {
+    public Map<TypeLiteral<?>, List<PropertyConverter<?>>> 
getPropertyConverters() {
         Lock readLock = lock.readLock();
         try {
             readLock.lock();
@@ -145,9 +156,9 @@ public class PropertyConverterManager {
      * @param targetType the target type, not null.
      * @param <T>        the type class
      * @return the ordered list of converters (may be empty for not 
convertible types).
-     * @see #createDefaultPropertyConverter(Class)
+     * @see #createDefaultPropertyConverter(org.apache.tamaya.TypeLiteral)
      */
-    public <T> List<PropertyConverter<T>> getPropertyConverters(Class<T> 
targetType) {
+    public <T> List<PropertyConverter<T>> getPropertyConverters(TypeLiteral<T> 
targetType) {
         Lock readLock = lock.readLock();
         List<PropertyConverter<T>> converters;
         try {
@@ -181,21 +192,21 @@ public class PropertyConverterManager {
      * @param <T>        the type class
      * @return a new converter, or null.
      */
-    protected <T> PropertyConverter<T> createDefaultPropertyConverter(final 
Class<T> targetType) {
-        if (Enum.class.isAssignableFrom(targetType)) {
-            return new EnumConverter<T>(targetType);
+    protected <T> PropertyConverter<T> createDefaultPropertyConverter(final 
TypeLiteral<T> targetType) {
+        if (Enum.class.isAssignableFrom(targetType.getRawType())) {
+            return new EnumConverter<T>(targetType.getRawType());
         }
         PropertyConverter<T> converter = null;
-        final Method factoryMethod = getFactoryMethod(targetType, "of", 
"valueOf", "instanceOf", "getInstance", "from", "fromString", "parse");
+        final Method factoryMethod = getFactoryMethod(targetType.getRawType(), 
"of", "valueOf", "instanceOf", "getInstance", "from", "fromString", "parse");
         if (factoryMethod != null) {
-            converter = new ViaMethodPropertyConverter<>(factoryMethod, 
targetType);
+            converter = new ViaMethodPropertyConverter<>(factoryMethod, 
targetType.getRawType());
         }
         if (converter == null) {
             try {
-                final Constructor<T> constr = 
targetType.getDeclaredConstructor(String.class);
+                final Constructor<T> constr = 
targetType.getRawType().getDeclaredConstructor(String.class);
                 converter = new ViaConstructorPropertyConverter<>(constr);
             } catch (Exception e) {
-                LOG.log(Level.FINEST, "Failed to construct instance of type: " 
+ targetType.getName(), e);
+                LOG.log(Level.FINEST, "Failed to construct instance of type: " 
+ targetType.getRawType().getName(), e);
             }
         }
         return converter;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
index f927e22..87f3d14 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.math.BigDecimal;
 import java.util.Objects;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
index f0eba47..4db9bcd 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.math.BigInteger;
 import java.util.Objects;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
index 6c33d7f..f07a8ee 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.util.Locale;
 import java.util.Objects;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
index 1d9bf65..191e9e5 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 import java.util.Objects;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
index 829c16b..f3773bb 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.util.Objects;
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
index c3c6e56..4d033eb 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.util.Currency;
 import java.util.Locale;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
index 8eb016b..1814cba 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.util.Objects;
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java
index 652c808..dbdabf6 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/EnumConverter.java
@@ -19,7 +19,7 @@
 package org.apache.tamaya.core.internal.converters;
 
 import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
index 839dbe0..955197b 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.util.Objects;
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
index c67e587..923b132 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.util.Objects;
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
index 600d875..67434d2 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.util.Objects;
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
index 6c8094f..3fdc68d 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.math.BigDecimal;
 import java.util.Objects;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
index 8a71ef7..e41c1d6 100644
--- 
a/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
+++ 
b/java7/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
@@ -18,7 +18,7 @@
  */
 package org.apache.tamaya.core.internal.converters;
 
-import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.PropertyConverter;
 
 import java.util.Objects;
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.PropertyConverter
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.PropertyConverter
 
b/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.PropertyConverter
new file mode 100644
index 0000000..0f0cb26
--- /dev/null
+++ 
b/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.PropertyConverter
@@ -0,0 +1,30 @@
+#
+# 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.core.internal.converters.BooleanConverter
+org.apache.tamaya.core.internal.converters.ByteConverter
+org.apache.tamaya.core.internal.converters.CharConverter
+org.apache.tamaya.core.internal.converters.DoubleConverter
+org.apache.tamaya.core.internal.converters.FloatConverter
+org.apache.tamaya.core.internal.converters.IntegerConverter
+org.apache.tamaya.core.internal.converters.LongConverter
+org.apache.tamaya.core.internal.converters.ShortConverter
+org.apache.tamaya.core.internal.converters.BigDecimalConverter
+org.apache.tamaya.core.internal.converters.BigIntegerConverter
+org.apache.tamaya.core.internal.converters.CurrencyConverter
+org.apache.tamaya.core.internal.converters.NumberConverter

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/a95b0ba2/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
----------------------------------------------------------------------
diff --git 
a/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
 
b/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
deleted file mode 100644
index 0f0cb26..0000000
--- 
a/java7/core/src/main/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
+++ /dev/null
@@ -1,30 +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.core.internal.converters.BooleanConverter
-org.apache.tamaya.core.internal.converters.ByteConverter
-org.apache.tamaya.core.internal.converters.CharConverter
-org.apache.tamaya.core.internal.converters.DoubleConverter
-org.apache.tamaya.core.internal.converters.FloatConverter
-org.apache.tamaya.core.internal.converters.IntegerConverter
-org.apache.tamaya.core.internal.converters.LongConverter
-org.apache.tamaya.core.internal.converters.ShortConverter
-org.apache.tamaya.core.internal.converters.BigDecimalConverter
-org.apache.tamaya.core.internal.converters.BigIntegerConverter
-org.apache.tamaya.core.internal.converters.CurrencyConverter
-org.apache.tamaya.core.internal.converters.NumberConverter

Reply via email to