You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2016/02/15 01:51:44 UTC

[2/2] incubator-tamaya git commit: Added test and fixes for collection support.

Added test and fixes for collection support.


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

Branch: refs/heads/master
Commit: 609b476485fc75aafbc099c2a6678004b7e76f67
Parents: 30ad130
Author: anatole <an...@apache.org>
Authored: Mon Feb 15 01:51:23 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Mon Feb 15 01:51:23 2016 +0100

----------------------------------------------------------------------
 .../java/org/apache/tamaya/TypeLiteral.java     | 10 ++++----
 .../core/internal/PropertyConverterManager.java | 13 ++++++++++
 .../internal/AdaptiveCombinationPolicy.java     |  7 +++++
 .../collections/internal/HashMapConverter.java  | 27 ++++++++++++++++----
 .../internal/LinkedListConverter.java           |  2 +-
 .../collections/internal/SetConverter.java      |  2 +-
 .../collections/internal/TreeMapConverter.java  |  6 ++---
 .../collections/internal/TreeSetConverter.java  |  4 +--
 8 files changed, 54 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/609b4764/code/api/src/main/java/org/apache/tamaya/TypeLiteral.java
----------------------------------------------------------------------
diff --git a/code/api/src/main/java/org/apache/tamaya/TypeLiteral.java b/code/api/src/main/java/org/apache/tamaya/TypeLiteral.java
index 597c27c..729f2b6 100644
--- a/code/api/src/main/java/org/apache/tamaya/TypeLiteral.java
+++ b/code/api/src/main/java/org/apache/tamaya/TypeLiteral.java
@@ -48,14 +48,14 @@ public class TypeLiteral<T> implements Serializable {
      * Constructor.
      * @param definedType the defined type.
      */
-    protected TypeLiteral(Type definedType) {
+    public TypeLiteral(Type definedType) {
         this.definedType = definedType;
     }
 
     /**
      * Constructor only for directly implemeting a TypeLiteral hereby dynamically implementing a generic interface.
      */
-    protected TypeLiteral() {
+    public TypeLiteral() {
         this.definedType = getDefinedType(this.getClass());
     }
 
@@ -140,9 +140,7 @@ public class TypeLiteral<T> implements Serializable {
 
         Type superClazz = clazz.getGenericSuperclass();
 
-        if (superClazz.equals(Object.class)) {
-            throw new RuntimeException("Super class must be parametrized type");
-        } else if (superClazz instanceof ParameterizedType) {
+        if (superClazz instanceof ParameterizedType) {
             ParameterizedType pt = (ParameterizedType) superClazz;
             Type[] actualArgs = pt.getActualTypeArguments();
 
@@ -153,6 +151,8 @@ public class TypeLiteral<T> implements Serializable {
                 throw new RuntimeException("More than one parametric type");
             }
 
+        } else if (superClazz.equals(Object.class)) {
+            throw new RuntimeException("Super class must be parametrized type");
         } else {
             type = getDefinedType((Class<?>) superClazz);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/609b4764/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java b/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
index eb18cfb..72facc4 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/PropertyConverterManager.java
@@ -273,6 +273,19 @@ public class PropertyConverterManager {
                 converterList.addAll(converters);
             }
         }
+        // check for parametrized types, ignoring param type
+        // direct mapped converters
+        if(targetType.getType()!=null) {
+            try {
+                readLock.lock();
+                converters = List.class.cast(this.converters.get(TypeLiteral.of(targetType.getRawType())));
+            } finally {
+                readLock.unlock();
+            }
+            if (converters != null) {
+                converterList.addAll(converters);
+            }
+        }
         return converterList;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/609b4764/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/AdaptiveCombinationPolicy.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/AdaptiveCombinationPolicy.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/AdaptiveCombinationPolicy.java
index 9170eb3..161e874 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/AdaptiveCombinationPolicy.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/AdaptiveCombinationPolicy.java
@@ -43,6 +43,13 @@ public class AdaptiveCombinationPolicy implements PropertyValueCombinationPolicy
 
     @Override
     public Map<String,String> collect(Map<String,String> currentValue, String key, PropertySource propertySource){
+        if(key.startsWith("_")){
+            PropertyValue newValue = propertySource.get(key);
+            if(newValue!=null){
+                return newValue.getConfigEntries();
+            }
+            return currentValue;
+        }
         String adaptiveCombinationPolicyClass  = ConfigurationProvider.getConfiguration().get('_' + key+".combinationPolicy");
         if(adaptiveCombinationPolicyClass!=null){
             PropertyValueCombinationPolicy delegatePolicy = null;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/609b4764/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashMapConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashMapConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashMapConverter.java
index 76ded4f..8091dc6 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashMapConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashMapConverter.java
@@ -24,6 +24,7 @@ import org.apache.tamaya.spi.PropertyConverter;
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -68,13 +69,29 @@ public class HashMapConverter implements PropertyConverter<HashMap> {
                 LOG.log(Level.SEVERE, "Error convertion config to HashMap type.", e);
             }
         }
-        return null;
+        HashMap<String,String> result = new HashMap<>();
+        for(String raw:rawList){
+            String[] items = splitItems(raw);
+            if(items!=null){
+                result.put(items[0], items[1]);
+            }
+        }
+        return result;
     }
 
     static String[] splitItems(String raw) {
-        String[] items = new String[2];
-        // check for '[]'
-        // else split with ':'
-        return raw.split("::");
+        String[] items = raw.split("::");
+        if(items[0].trim().startsWith("[")){
+            items[0]= items[0].trim();
+            items[0] = items[0].substring(1);
+        }else{
+            items[0]= items[0].trim();
+        }
+        if(items[1].trim().endsWith("]")){
+            items[1] = items[1].substring(0,items[1].length()-1);
+        }else{
+            items[1]= items[1].trim();
+        }
+        return items;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/609b4764/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/LinkedListConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/LinkedListConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/LinkedListConverter.java
index d41211c..f1c2514 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/LinkedListConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/LinkedListConverter.java
@@ -56,7 +56,7 @@ public class LinkedListConverter implements PropertyConverter<LinkedList> {
                 LOG.log(Level.SEVERE, "Error convertion config to ArrayList type.", e);
             }
         }
-        return null;
+        return new LinkedList(rawList);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/609b4764/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/SetConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/SetConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/SetConverter.java
index ddf19ad..27fdee9 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/SetConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/SetConverter.java
@@ -27,7 +27,7 @@ import java.util.Set;
 /**
  *  PropertyConverter for gnerating a LIST representation of values.
  */
-public class SetConverter implements PropertyConverter<Set<?>> {
+public class SetConverter implements PropertyConverter<Set> {
 
     @Override
     public Set convert(String value, ConversionContext context) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/609b4764/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeMapConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeMapConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeMapConverter.java
index 08b92fd..b350944 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeMapConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeMapConverter.java
@@ -26,7 +26,7 @@ import java.util.TreeMap;
 /**
  *  PropertyConverter for gnerating HashMap representation of a values.
  */
-public class TreeMapConverter implements PropertyConverter<TreeMap<?,?>> {
+public class TreeMapConverter implements PropertyConverter<TreeMap> {
 
     /** The shared instance, used by other collection converters in this package.*/
     private static TreeMapConverter INSTANCE = new TreeMapConverter();
@@ -40,7 +40,7 @@ public class TreeMapConverter implements PropertyConverter<TreeMap<?,?>> {
     }
 
     @Override
-    public TreeMap<?, ?> convert(String value, ConversionContext context) {
-        return null;
+    public TreeMap convert(String value, ConversionContext context) {
+        return new TreeMap<>(HashMapConverter.getInstance().convert(value, context));
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/609b4764/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeSetConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeSetConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeSetConverter.java
index fca00de..32fee83 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeSetConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/TreeSetConverter.java
@@ -30,7 +30,7 @@ import java.util.logging.Logger;
 /**
  *  PropertyConverter for gnerating HashSet representation of a values.
  */
-public class TreeSetConverter implements PropertyConverter<TreeSet<?>> {
+public class TreeSetConverter implements PropertyConverter<TreeSet> {
 
     private static final Logger LOG = Logger.getLogger(TreeSetConverter.class.getName());
 
@@ -68,6 +68,6 @@ public class TreeSetConverter implements PropertyConverter<TreeSet<?>> {
                 LOG.log(Level.SEVERE, "Error convertion config to HashSet type.", e);
             }
         }
-        return null;
+        return new TreeSet<>(rawList);
     }
 }