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