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 2018/11/18 21:20:41 UTC
[08/16] incubator-tamaya-sandbox git commit: TAMAYA-355 Enable
mapping of lists and arrays into internal datastructures,
reestablished conversion/filter context (backward compatible).
TAMAYA-355 Enable mapping of lists and arrays into internal datastructures, reestablished conversion/filter context (backward compatible).
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/1fbe9a15
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/1fbe9a15
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/1fbe9a15
Branch: refs/heads/master
Commit: 1fbe9a1589ecc591164d7457f0c74fdd2bb3f20a
Parents: 70980cc
Author: Anatole Tresch <at...@gmail.com>
Authored: Sat Nov 3 21:27:53 2018 +0100
Committer: Anatole Tresch <at...@gmail.com>
Committed: Sat Nov 3 21:27:53 2018 +0100
----------------------------------------------------------------------
.../tamaya/collections/ArrayListConverter.java | 9 +--
.../tamaya/collections/CollectionConverter.java | 71 +++++++++---------
.../collections/ConcurrentHashMapConverter.java | 19 +----
.../tamaya/collections/HashMapConverter.java | 8 +--
.../tamaya/collections/HashSetConverter.java | 19 +----
.../tamaya/collections/ItemTokenizer.java | 75 ++++++++------------
.../tamaya/collections/LinkedListConverter.java | 20 +-----
.../tamaya/collections/ListConverter.java | 7 +-
.../apache/tamaya/collections/MapConverter.java | 9 ++-
.../apache/tamaya/collections/SetConverter.java | 7 +-
.../tamaya/collections/SortedMapConverter.java | 5 +-
.../tamaya/collections/SortedSetConverter.java | 4 +-
.../tamaya/collections/TreeMapConverter.java | 19 +----
.../tamaya/collections/TreeSetConverter.java | 16 +----
.../collections/MyUpperCaseConverter.java | 3 +-
.../hazelcast/HazelcastPropertySource.java | 5 --
.../tamaya/jodatime/DateTimeConverter.java | 6 +-
.../tamaya/jodatime/DateTimeZoneConverter.java | 12 +---
.../tamaya/jodatime/DurationConverter.java | 40 ++++-------
.../tamaya/jodatime/InstantConverter.java | 6 +-
.../tamaya/jodatime/LocalDateConverter.java | 6 +-
.../tamaya/jodatime/LocalTimeConverter.java | 6 +-
.../apache/tamaya/jodatime/PeriodConverter.java | 12 +---
.../tamaya/jodatime/DateTimeConverterTest.java | 26 +++----
.../jodatime/DateTimeZoneConverterTest.java | 22 +++---
.../tamaya/jodatime/DurationConverterTest.java | 24 +++----
.../tamaya/jodatime/PeriodConverterTest.java | 21 +++---
.../apache/tamaya/metamodel/CachedFilter.java | 3 +-
.../org/apache/tamaya/metamodel/HideFilter.java | 3 +-
.../tamaya/metamodel/ImmutableFilter.java | 5 +-
.../org/apache/tamaya/metamodel/MapFilter.java | 3 +-
.../org/apache/tamaya/metamodel/MaskFilter.java | 3 +-
.../apache/tamaya/metamodel/SecuredFilter.java | 3 +-
.../metamodel/ext/FilteredPropertySource.java | 43 ++++-------
.../tamaya/metamodel/ext/MyConverter.java | 3 +-
.../apache/tamaya/metamodel/ext/MyFilter.java | 3 +-
.../org/apache/tamaya/uom/UnitConverter.java | 9 +--
.../apache/tamaya/uom/UnitConverterTest.java | 5 +-
.../internal/UsageTrackerFilter.java | 5 +-
39 files changed, 201 insertions(+), 364 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 616b22a..2715cfc 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/ArrayListConverter.java
@@ -43,13 +43,8 @@ public class ArrayListConverter implements PropertyConverter<ArrayList> {
}
@Override
- public ArrayList convert(String value) {
- ConversionContext context = ConversionContext.current();
- if(context!=null){
- // Use configurable mechanism
- return CollectionConverter.convertList(context, ArrayList::new);
- }
- return CollectionConverter.convertSimpleList(value);
+ public ArrayList convert(String value, ConversionContext context) {
+ return CollectionConverter.convertList(context, ArrayList::new);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 69aa99e..215d128 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/CollectionConverter.java
@@ -68,23 +68,23 @@ public final class CollectionConverter implements PropertyConverter<Collection>
T result = collectionSupplier.get();
switch (mappingType) {
case node_all:
- return convertListByNodes(context.getValues(), context.getConfiguration(),
+ return convertListByNodes(context.getValues(), context,
collectionTargetType, result, true);
case node:
- return convertListByNodes(context.getValues(), context.getConfiguration(),
+ return convertListByNodes(context.getValues(), context,
collectionTargetType, result, false);
case value:
- return convertListByValues(context.getValues(), context.getConfiguration(),
+ return convertListByValues(context.getValues(), context,
collectionTargetType, result, false);
default:
case value_all:
- return convertListByValues(context.getValues(), context.getConfiguration(),
+ return convertListByValues(context.getValues(), context,
collectionTargetType, result, true);
}
}
private static <T extends Collection> T convertListByValues(List<PropertyValue> values,
- Configuration config,
+ ConversionContext context,
TypeLiteral<?> targetType,
T result,
boolean combine) {
@@ -92,9 +92,9 @@ public final class CollectionConverter implements PropertyConverter<Collection>
values = Collections.singletonList(values.get(0));
}
for (PropertyValue val : values) {
- List<String> tokenList = ItemTokenizer.split(val.getValue());
+ List<String> tokenList = ItemTokenizer.split(val.getValue(), context);
for (String token : tokenList) {
- Object o = ItemTokenizer.convertValue(token, targetType);
+ Object o = ItemTokenizer.convertValue(token, targetType, context);
if (o != null) {
result.add(o);
}else{
@@ -107,7 +107,7 @@ public final class CollectionConverter implements PropertyConverter<Collection>
}
private static <T extends Collection> T convertListByNodes(List<PropertyValue> values,
- Configuration config,
+ ConversionContext context,
TypeLiteral<?> targetType,
T result,
boolean combine) {
@@ -119,7 +119,7 @@ public final class CollectionConverter implements PropertyConverter<Collection>
if(targetType.equals(TypeLiteral.of(String.class))){
result.add(itemNode.getValue());
}else {
- Object o = ItemTokenizer.convertValue(itemNode.getValue(), targetType);
+ Object o = ItemTokenizer.convertValue(itemNode.getValue(), targetType, context);
if (o != null) {
result.add(o);
}else{
@@ -147,35 +147,35 @@ public final class CollectionConverter implements PropertyConverter<Collection>
T result = collectionSupplier.get();
switch (mappingType) {
case node_all:
- return convertMapByNodes(context.getValues(), context.getConfiguration(),
+ return convertMapByNodes(context.getValues(), context,
collectionTargetType, result, true);
case node:
- return convertMapByNodes(context.getValues(), context.getConfiguration(),
+ return convertMapByNodes(context.getValues(), context,
collectionTargetType, result, false);
case value:
- return convertMapByValues(context.getValues(), context.getConfiguration(),
+ return convertMapByValues(context.getValues(), context,
collectionTargetType, result, false);
default:
case value_all:
- return convertMapByValues(context.getValues(), context.getConfiguration(),
+ return convertMapByValues(context.getValues(), context,
collectionTargetType, result, true);
}
}
private static <T extends Map> T convertMapByValues(List<PropertyValue> values,
- Configuration config,
- TypeLiteral<?> targetType,
- T result,
- boolean combine) {
+ ConversionContext context,
+ TypeLiteral<?> targetType,
+ T result,
+ boolean combine) {
if(!combine){
values = Collections.singletonList(values.get(0));
}
for (PropertyValue val : values) {
- List<String> tokenList = ItemTokenizer.split(val.getValue());
+ List<String> tokenList = ItemTokenizer.split(val.getValue(), context);
for(String token:tokenList) {
- String[] keyValue = ItemTokenizer.splitMapEntry(token);
- Object o = ItemTokenizer.convertValue(keyValue[1], targetType);
+ String[] keyValue = ItemTokenizer.splitMapEntry(token, context);
+ Object o = ItemTokenizer.convertValue(keyValue[1], targetType, context);
if (o != null) {
result.put(keyValue[0], o);
}else{
@@ -188,16 +188,16 @@ public final class CollectionConverter implements PropertyConverter<Collection>
}
private static <T extends Map> T convertMapByNodes(List<PropertyValue> values,
- Configuration config,
- TypeLiteral<?> targetType,
- T result,
- boolean combine) {
+ ConversionContext context,
+ TypeLiteral<?> targetType,
+ T result,
+ boolean combine) {
if(!combine){
values = Collections.singletonList(values.get(0));
}
for (PropertyValue val : values) {
for(PropertyValue itemNode:val) {
- Object o = ItemTokenizer.convertValue(itemNode.getValue(), targetType);
+ Object o = ItemTokenizer.convertValue(itemNode.getValue(), targetType, context);
if (o != null) {
result.put(itemNode.getKey(), o);
}else{
@@ -210,8 +210,8 @@ public final class CollectionConverter implements PropertyConverter<Collection>
}
- public static ArrayList<String> convertSimpleList(String value) {
- List<String> rawList = ItemTokenizer.split(value);
+ public static ArrayList<String> convertSimpleList(String value, ConversionContext context) {
+ List<String> rawList = ItemTokenizer.split(value, context);
ArrayList<String> mlist = new ArrayList<>();
for(String raw:rawList){
String convValue = raw;
@@ -222,11 +222,11 @@ public final class CollectionConverter implements PropertyConverter<Collection>
return mlist;
}
- public static Map<String,String> convertSimpleMap(String value) {
- List<String> rawList = ItemTokenizer.split(value);
+ public static Map<String,String> convertSimpleMap(String value, ConversionContext context) {
+ List<String> rawList = ItemTokenizer.split(value, context);
HashMap<String,String> result = new HashMap(rawList.size());
for(String raw:rawList){
- String[] items = ItemTokenizer.splitMapEntry(raw);
+ String[] items = ItemTokenizer.splitMapEntry(raw, context);
if(items.length==1){
result.put(items[0], items[0]);
}else{
@@ -237,8 +237,7 @@ public final class CollectionConverter implements PropertyConverter<Collection>
}
@Override
- public Collection convert(String value) {
- ConversionContext context = ConversionContext.current();
+ public Collection convert(String value, ConversionContext context) {
String collectionType = "List";
if(context!=null) {
collectionType = (String)context.getMeta().getOrDefault("collection-type", "List");
@@ -249,20 +248,20 @@ public final class CollectionConverter implements PropertyConverter<Collection>
Collection result = null;
switch (collectionType) {
case "LinkedList":
- result = LinkedListConverter.getInstance().convert(value);
+ result = LinkedListConverter.getInstance().convert(value, context);
break;
case "Set":
case "HashSet":
- result = HashSetConverter.getInstance().convert(value);
+ result = HashSetConverter.getInstance().convert(value, context);
break;
case "SortedSet":
case "TreeSet":
- result = TreeSetConverter.getInstance().convert(value);
+ result = TreeSetConverter.getInstance().convert(value, context);
break;
case "List":
case "ArrayList":
default:
- result = ArrayListConverter.getInstance().convert(value);
+ result = ArrayListConverter.getInstance().convert(value, context);
break;
}
return result;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 3c56749..506ac00 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/ConcurrentHashMapConverter.java
@@ -45,23 +45,8 @@ public class ConcurrentHashMapConverter implements PropertyConverter<ConcurrentH
}
@Override
- public ConcurrentHashMap convert(String value) {
- ConversionContext context = ConversionContext.current();
- if(context!=null){
- return CollectionConverter.convertMap(context, ConcurrentHashMap::new);
- }
- List<String> rawList = ItemTokenizer.split(value);
- ConcurrentHashMap result = new ConcurrentHashMap(rawList.size());
- for(String raw:rawList){
- String[] items = ItemTokenizer.splitMapEntry(raw);
- Object convValue = ItemTokenizer.convertValue(items[1], TypeLiteral.of(String.class));
- if(convValue!=null){
- result.put(items[0], convValue);
- }else{
- LOG.log(Level.SEVERE, "Failed to convert collection createValue type for '"+raw+"'.");
- }
- }
- return result;
+ public ConcurrentHashMap convert(String value, ConversionContext context) {
+ return CollectionConverter.convertMap(context, ConcurrentHashMap::new);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 3e27b5d..19ecb46 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/HashMapConverter.java
@@ -42,12 +42,8 @@ public class HashMapConverter implements PropertyConverter<HashMap> {
}
@Override
- public HashMap convert(String value) {
- ConversionContext context = ConversionContext.current();
- if(context!=null){
- return CollectionConverter.convertMap(context, HashMap::new);
- }
- return (HashMap)CollectionConverter.convertSimpleMap(value);
+ public HashMap convert(String value, ConversionContext context) {
+ return CollectionConverter.convertMap(context, HashMap::new);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 b7ca65e..47a5044 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/HashSetConverter.java
@@ -46,22 +46,7 @@ public class HashSetConverter implements PropertyConverter<HashSet> {
}
@Override
- public HashSet convert(String value) {
- ConversionContext context = ConversionContext.current();
- if(context!=null){
- return CollectionConverter.convertList(context, HashSet::new);
- }
- List<String> rawList = ItemTokenizer.split(value);
- HashSet<Object> result = new HashSet<>();
- for(String raw:rawList){
- String[] items = ItemTokenizer.splitMapEntry(raw);
- Object convValue = ItemTokenizer.convertValue(items[1], TypeLiteral.of(String.class));
- if(convValue!=null){
- result.add(convValue);
- }else{
- LOG.log(Level.SEVERE, "Failed to convert collection createValue type for '"+raw+"'.");
- }
- }
- return result;
+ public HashSet convert(String value, ConversionContext context) {
+ return CollectionConverter.convertList(context, HashSet::new);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 4267c24..7cd043b 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/ItemTokenizer.java
@@ -46,13 +46,9 @@ final class ItemTokenizer {
* @param value the createValue, not null.
* @return the tokenized createValue as createList, in order of occurrence.
*/
- public static List<String> split(String value){
- ConversionContext ctx = ConversionContext.current();
- if(ctx != null){
- String itemSeparator = (String)ctx.getMeta().getOrDefault("item-separator", ",");
- return split(value, itemSeparator);
- }
- return split(value, ",");
+ public static List<String> split(String value, ConversionContext ctx){
+ String itemSeparator = (String)ctx.getMeta().getOrDefault("item-separator", ",");
+ return split(value, itemSeparator);
}
/**
@@ -87,13 +83,9 @@ final class ItemTokenizer {
* @param mapEntry the entry, not null.
* @return an array of length 2, with the trimmed and parsed key/createValue pair.
*/
- public static String[] splitMapEntry(String mapEntry){
- ConversionContext ctx = ConversionContext.current();
- if(ctx != null){
- String entrySeparator = (String)ctx.getMeta().getOrDefault("map-entry-separator", "=");
- return splitMapEntry(mapEntry, entrySeparator);
- }
- return splitMapEntry(mapEntry, "=");
+ public static String[] splitMapEntry(String mapEntry, ConversionContext ctx){
+ String entrySeparator = (String)ctx.getMeta().getOrDefault("map-entry-separator", "=");
+ return splitMapEntry(mapEntry, entrySeparator);
}
/**
@@ -132,42 +124,35 @@ final class ItemTokenizer {
* @param value the raw String createValue.
* @return the parsed createValue, or null.
*/
- public static <T> T convertValue(String value, TypeLiteral<T> targetType) {
- ConversionContext context = ConversionContext.current();
- if (context != null) {
- String converterClass = context.getMeta().get("item-converter");
- List<PropertyConverter<T>> valueConverters = new ArrayList<>(1);
- if (converterClass != null) {
+ public static <T> T convertValue(String value, TypeLiteral<T> targetType, ConversionContext context) {
+ String converterClass = context.getMeta().get("item-converter");
+ List<PropertyConverter<T>> valueConverters = new ArrayList<>(1);
+ if (converterClass != null) {
+ try {
+ valueConverters.add((PropertyConverter<T>) Class.forName(converterClass).newInstance());
+ } catch (Exception e) {
+ LOG.log(Level.SEVERE, "Error convertion config to ArrayList type.", e);
+ }
+ }
+ valueConverters.addAll(context.getConfigurationContext().getPropertyConverters(targetType));
+ if (valueConverters.isEmpty()) {
+ if(targetType.getRawType().equals(String.class)) {
+ return (T)value;
+ }
+ } else {
+ ConversionContext newContext = new ConversionContext.Builder(context.getConfiguration(), context.getKey(),
+ targetType).build();
+ T result = null;
+ for (PropertyConverter<T> conv : valueConverters) {
try {
- valueConverters.add((PropertyConverter<T>) Class.forName(converterClass).newInstance());
+ result = conv.convert(value, newContext);
+ if (result != null) {
+ return result;
+ }
} catch (Exception e) {
LOG.log(Level.SEVERE, "Error convertion config to ArrayList type.", e);
}
}
- valueConverters.addAll(context.getConfigurationContext().getPropertyConverters(targetType));
- try{
- if (valueConverters.isEmpty()) {
- if(targetType.getRawType().equals(String.class)) {
- return (T)value;
- }
- } else {
- ConversionContext.set(new ConversionContext.Builder(context.getConfiguration(), context.getKey(),
- targetType).build());
- T result = null;
- for (PropertyConverter<T> conv : valueConverters) {
- try {
- result = conv.convert(value);
- if (result != null) {
- return result;
- }
- } catch (Exception e) {
- LOG.log(Level.SEVERE, "Error convertion config to ArrayList type.", e);
- }
- }
- }
- }finally {
- ConversionContext.set(context);
- }
}
LOG.log(Level.SEVERE, "Failed to convert collection createValue type for '" + value + "'.");
return null;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 6c3fa3d..b769ab6 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/LinkedListConverter.java
@@ -45,24 +45,8 @@ public class LinkedListConverter implements PropertyConverter<LinkedList> {
}
@Override
- public LinkedList convert(String value) {
- ConversionContext context = ConversionContext.current();
- if(context!=null){
- return CollectionConverter.convertList(context, LinkedList::new);
- }
- List<String> rawList = ItemTokenizer.split(value);
- LinkedList<Object> result = new LinkedList<>();
- for(String raw:rawList){
- String[] items = ItemTokenizer.splitMapEntry(raw);
- Object convValue = ItemTokenizer.convertValue(items[1], TypeLiteral.of(String.class));
- if(convValue!=null){
- result.add(convValue);
- continue;
- }else{
- LOG.log(Level.SEVERE, "Failed to convert collection createValue type for '"+raw+"'.");
- }
- }
- return result;
+ public LinkedList convert(String value, ConversionContext context) {
+ return CollectionConverter.convertList(context, LinkedList::new);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 1a97132..769be12 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/ListConverter.java
@@ -31,8 +31,7 @@ import java.util.function.Supplier;
public class ListConverter implements PropertyConverter<List> {
@Override
- public List convert(String value) {
- ConversionContext context = ConversionContext.current();
+ public List convert(String value, ConversionContext context) {
String collectionType = "ArrayList";
boolean readOnly = false;
if(context!=null) {
@@ -45,12 +44,12 @@ public class ListConverter implements PropertyConverter<List> {
List result = null;
switch(collectionType){
case "LinkedList":
- result = LinkedListConverter.getInstance().convert(value);
+ result = LinkedListConverter.getInstance().convert(value, context);
break;
case "List":
case "ArrayList":
default:
- result = ArrayListConverter.getInstance().convert(value);
+ result = ArrayListConverter.getInstance().convert(value, context);
break;
}
if(readOnly){
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 d7e149e..08fefff 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/MapConverter.java
@@ -30,8 +30,7 @@ import java.util.Map;
public class MapConverter implements PropertyConverter<Map> {
@Override
- public Map convert(String value) {
- ConversionContext context = ConversionContext.current();
+ public Map convert(String value, ConversionContext context) {
String collectionType = "HashMap";
boolean readOnly = false;
if(context!=null) {
@@ -45,15 +44,15 @@ public class MapConverter implements PropertyConverter<Map> {
switch(collectionType){
case "TreeMap":
case "SortedMap":
- result = TreeMapConverter.getInstance().convert(value);
+ result = TreeMapConverter.getInstance().convert(value, context);
break;
case "ConcurrentHashMap":
- result = ConcurrentHashMapConverter.getInstance().convert(value);
+ result = ConcurrentHashMapConverter.getInstance().convert(value, context);
break;
case "Map":
case "HashMap":
default:
- result = HashMapConverter.getInstance().convert(value);
+ result = HashMapConverter.getInstance().convert(value, context);
break;
}
if(readOnly){
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 c9a70b5..b66ef5b 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/SetConverter.java
@@ -30,8 +30,7 @@ import java.util.Set;
public class SetConverter implements PropertyConverter<Set> {
@Override
- public Set convert(String value) {
- ConversionContext context = ConversionContext.current();
+ public Set convert(String value, ConversionContext context) {
String collectionType = "Set";
boolean readOnly = false;
if(context!=null) {
@@ -44,12 +43,12 @@ public class SetConverter implements PropertyConverter<Set> {
Set result;
switch(collectionType){
case "TreeSet":
- result = TreeSetConverter.getInstance().convert(value);
+ result = TreeSetConverter.getInstance().convert(value, context);
break;
case "Set":
case "HashSet":
default:
- result = HashSetConverter.getInstance().convert(value);
+ result = HashSetConverter.getInstance().convert(value, context);
break;
}
if(readOnly){
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 972c72c..5416e28 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/SortedMapConverter.java
@@ -18,6 +18,7 @@
*/
package org.apache.tamaya.collections;
+import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
import java.util.Collections;
@@ -29,7 +30,7 @@ import java.util.SortedMap;
public class SortedMapConverter implements PropertyConverter<SortedMap> {
@Override
- public SortedMap convert(String value) {
- return Collections.unmodifiableSortedMap(TreeMapConverter.getInstance().convert(value));
+ public SortedMap convert(String value, ConversionContext context) {
+ return Collections.unmodifiableSortedMap(TreeMapConverter.getInstance().convert(value, context));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 6ae4f5b..acac96c 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/SortedSetConverter.java
@@ -31,7 +31,7 @@ import java.util.TreeSet;
public class SortedSetConverter implements PropertyConverter<SortedSet> {
@Override
- public SortedSet convert(String value) {
- return TreeSetConverter.getInstance().convert(value);
+ public SortedSet convert(String value, ConversionContext context) {
+ return TreeSetConverter.getInstance().convert(value, context);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 08378a6..b287dd9 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/TreeMapConverter.java
@@ -46,22 +46,7 @@ public class TreeMapConverter implements PropertyConverter<TreeMap> {
}
@Override
- public TreeMap convert(String value) {
- ConversionContext context = ConversionContext.current();
- if(context!=null){
- return CollectionConverter.convertMap(context, TreeMap::new);
- }
- List<String> rawList = ItemTokenizer.split(value);
- TreeMap result = new TreeMap();
- for(String raw:rawList){
- String[] items = ItemTokenizer.splitMapEntry(raw);
- Object convValue = ItemTokenizer.convertValue(items[1], TypeLiteral.of(String.class));
- if(convValue!=null){
- result.put(items[0], convValue);
- }else{
- LOG.log(Level.SEVERE, "Failed to convert collection createValue type for '"+raw+"'.");
- }
- }
- return result;
+ public TreeMap convert(String value, ConversionContext context) {
+ return CollectionConverter.convertMap(context, TreeMap::new);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/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 0625957..c5651f5 100644
--- a/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java
+++ b/collections/src/main/java/org/apache/tamaya/collections/TreeSetConverter.java
@@ -46,19 +46,7 @@ public class TreeSetConverter implements PropertyConverter<TreeSet> {
}
@Override
- public TreeSet convert(String value) {
- TreeSet result = null;
- ConversionContext context = ConversionContext.current();
- if(context!=null) {
- result = CollectionConverter.convertList(context, TreeSet::new);
- }
- else {
- List<String> rawList = ItemTokenizer.split(value);
- result = new TreeSet<>();
- for (String raw : rawList) {
- result.add(raw);
- }
- }
- return result;
+ public TreeSet convert(String value, ConversionContext context) {
+ return CollectionConverter.convertList(context, TreeSet::new);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
----------------------------------------------------------------------
diff --git a/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java b/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
index 221b9a1..1c95261 100644
--- a/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
+++ b/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
@@ -18,6 +18,7 @@
*/
package org.apache.tamaya.collections;
+import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
/**
@@ -26,7 +27,7 @@ import org.apache.tamaya.spi.PropertyConverter;
*/
public class MyUpperCaseConverter implements PropertyConverter<String>{
@Override
- public String convert(String value) {
+ public String convert(String value, ConversionContext context) {
return "("+value.toUpperCase()+")";
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java
----------------------------------------------------------------------
diff --git a/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java b/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java
index 2da7739..1a716d3 100644
--- a/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java
+++ b/hazelcast/src/main/java/org/apache/tamaya/hazelcast/HazelcastPropertySource.java
@@ -179,11 +179,6 @@ implements MutablePropertySource{
return PropertyValue.map(this.configMap, getName(), meta);
}
- @Override
- public boolean isScannable() {
- return true;
- }
-
/**
* Reloads the configuration map from Hazelcast completely.
*/
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeConverter.java
----------------------------------------------------------------------
diff --git a/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeConverter.java b/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeConverter.java
index 5942f8c..864eb32 100644
--- a/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeConverter.java
+++ b/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeConverter.java
@@ -90,10 +90,8 @@ public class DateTimeConverter implements PropertyConverter<DateTime> {
}
@Override
- public DateTime convert(String value) {
- ConversionContext.doOptional(context -> {
- context.addSupportedFormats(DateTimeConverter.class, PARSER_FORMATS);
- });
+ public DateTime convert(String value, ConversionContext context) {
+ context.addSupportedFormats(DateTimeConverter.class, PARSER_FORMATS);
String trimmed = Objects.requireNonNull(value).trim();
DateTime result = null;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeZoneConverter.java
----------------------------------------------------------------------
diff --git a/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeZoneConverter.java b/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeZoneConverter.java
index ba13442..b4d4e0e 100644
--- a/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeZoneConverter.java
+++ b/jodatime/src/main/java/org/apache/tamaya/jodatime/DateTimeZoneConverter.java
@@ -42,9 +42,10 @@ public class DateTimeZoneConverter implements PropertyConverter<DateTimeZone> {
private static final Pattern IS_INTEGER_VALUE = Pattern.compile(PATTERN_REGEX);
@Override
- public DateTimeZone convert(String value) {
+ public DateTimeZone convert(String value, ConversionContext context) {
String trimmed = requireNonNull(value).trim();
- addSupportedFormats();
+ context.addSupportedFormats(DateTimeZoneConverter.class, "Time zone in the form [+-]hh:mm via the regex " + PATTERN_REGEX);
+ context.addSupportedFormats(DateTimeZoneConverter.class, "All time zone ids supported by Joda Time");
DateTimeZone result = null;
@@ -63,13 +64,6 @@ public class DateTimeZoneConverter implements PropertyConverter<DateTimeZone> {
return result;
}
- private void addSupportedFormats() {
- ConversionContext.doOptional(context -> {
- context.addSupportedFormats(DateTimeZoneConverter.class, "Time zone in the form [+-]hh:mm via the regex " + PATTERN_REGEX);
- context.addSupportedFormats(DateTimeZoneConverter.class, "All time zone ids supported by Joda Time");
- });
- }
-
private boolean isSingleIntegerValue(String value) {
boolean match = IS_INTEGER_VALUE.matcher(value).matches();
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/main/java/org/apache/tamaya/jodatime/DurationConverter.java
----------------------------------------------------------------------
diff --git a/jodatime/src/main/java/org/apache/tamaya/jodatime/DurationConverter.java b/jodatime/src/main/java/org/apache/tamaya/jodatime/DurationConverter.java
index 32fdc7f..efefd25 100644
--- a/jodatime/src/main/java/org/apache/tamaya/jodatime/DurationConverter.java
+++ b/jodatime/src/main/java/org/apache/tamaya/jodatime/DurationConverter.java
@@ -43,40 +43,28 @@ public class DurationConverter implements PropertyConverter<Duration> {
private PeriodConverter periodConverter = new PeriodConverter();
@Override
- public Duration convert(String value) {
+ public Duration convert(String value, ConversionContext context) {
String trimmed = Objects.requireNonNull(value).trim();
- addSupportedFormats();
+ context.addSupportedFormats(getClass(), "PTa.bS");
+ context.addSupportedFormats(getClass(), "PdDThHmMsS");
+ context.addSupportedFormats(getClass(), "ddThh:mm:ss");
try {
return Duration.parse(value);
}catch(Exception e){
+ ConversionContext subContext = new ConversionContext.Builder(context.getConfiguration(), context.getKey(), context.getTargetType())
+ .setValues(context.getValues()).build();
Period period = null;
- ConversionContext ctx = ConversionContext.current();
- try {
- ConversionContext.reset();
- if (value.startsWith("P")) {
- period = periodConverter.convert("P0Y0M0W" + value.substring(1));
- }
- if (period == null) {
- period = periodConverter.convert("P0000-00-" + value);
- }
- if (period != null) {
- return period.toStandardDuration();
- }
- }finally{
- if(ctx!=null){
- ConversionContext.set(ctx);
- }
+ if (value.startsWith("P")) {
+ period = periodConverter.convert("P0Y0M0W" + value.substring(1), subContext);
+ }
+ if (period == null) {
+ period = periodConverter.convert("P0000-00-" + value, subContext);
+ }
+ if (period != null) {
+ return period.toStandardDuration();
}
}
return null;
}
- private void addSupportedFormats() {
- ConversionContext.doOptional(context -> {
- context.addSupportedFormats(getClass(), "PTa.bS");
- context.addSupportedFormats(getClass(), "PdDThHmMsS");
- context.addSupportedFormats(getClass(), "ddThh:mm:ss");
- });
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/main/java/org/apache/tamaya/jodatime/InstantConverter.java
----------------------------------------------------------------------
diff --git a/jodatime/src/main/java/org/apache/tamaya/jodatime/InstantConverter.java b/jodatime/src/main/java/org/apache/tamaya/jodatime/InstantConverter.java
index b1d6f53..3295fbc 100644
--- a/jodatime/src/main/java/org/apache/tamaya/jodatime/InstantConverter.java
+++ b/jodatime/src/main/java/org/apache/tamaya/jodatime/InstantConverter.java
@@ -87,10 +87,8 @@ public class InstantConverter implements PropertyConverter<Instant> {
}
@Override
- public Instant convert(String value) {
- ConversionContext.doOptional(context -> {
- context.addSupportedFormats(InstantConverter.class, PARSER_FORMATS);
- });
+ public Instant convert(String value, ConversionContext context) {
+ context.addSupportedFormats(InstantConverter.class, PARSER_FORMATS);
String trimmed = Objects.requireNonNull(value).trim();
try {
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalDateConverter.java
----------------------------------------------------------------------
diff --git a/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalDateConverter.java b/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalDateConverter.java
index d4c5cd6..0739e93 100644
--- a/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalDateConverter.java
+++ b/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalDateConverter.java
@@ -66,10 +66,8 @@ public class LocalDateConverter implements PropertyConverter<LocalDate> {
}
@Override
- public LocalDate convert(String value) {
- ConversionContext.doOptional(context -> {
- context.addSupportedFormats(LocalDateConverter.class, PARSER_FORMATS);
- });
+ public LocalDate convert(String value, ConversionContext context) {
+ context.addSupportedFormats(LocalDateConverter.class, PARSER_FORMATS);
String trimmed = Objects.requireNonNull(value).trim();
LocalDate result = null;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalTimeConverter.java
----------------------------------------------------------------------
diff --git a/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalTimeConverter.java b/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalTimeConverter.java
index 7784308..22593c0 100644
--- a/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalTimeConverter.java
+++ b/jodatime/src/main/java/org/apache/tamaya/jodatime/LocalTimeConverter.java
@@ -50,10 +50,8 @@ public class LocalTimeConverter implements PropertyConverter<LocalTime> {
};
@Override
- public LocalTime convert(String value) {
- ConversionContext.doOptional(context -> {
- context.addSupportedFormats(LocalTimeConverter.class, PARSER_FORMATS);
- });
+ public LocalTime convert(String value, ConversionContext context) {
+ context.addSupportedFormats(LocalTimeConverter.class, PARSER_FORMATS);
String trimmed = Objects.requireNonNull(value).trim();
try {
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java
----------------------------------------------------------------------
diff --git a/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java b/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java
index 0b8e22d..dfe18e1 100644
--- a/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java
+++ b/jodatime/src/main/java/org/apache/tamaya/jodatime/PeriodConverter.java
@@ -57,10 +57,11 @@ public class PeriodConverter implements PropertyConverter<org.joda.time.Period>
private final static Pattern ALTERNATIVE_PATTERN = Pattern.compile(ALTERNATIVE_REGEX);
@Override
- public Period convert(String value) {
+ public Period convert(String value, ConversionContext context) {
String trimmed = Objects.requireNonNull(value).trim();
- addSupportedFormats();
+ context.addSupportedFormats(PeriodConverter.class, "PyYmMwWdDThHmMsS");
+ context.addSupportedFormats(PeriodConverter.class, "Pyyyy-mm-ddThh:mm:ss");
MutablePeriod result = null;
PeriodParser format = null;
@@ -83,13 +84,6 @@ public class PeriodConverter implements PropertyConverter<org.joda.time.Period>
return result != null ? result.toPeriod() : null;
}
- private void addSupportedFormats() {
- ConversionContext.doOptional(context -> {
- context.addSupportedFormats(PeriodConverter.class, "PyYmMwWdDThHmMsS");
- context.addSupportedFormats(PeriodConverter.class, "Pyyyy-mm-ddThh:mm:ss");
- });
- }
-
private boolean isISOFormat(String value) {
return ISO_PATTERN.matcher(value).matches();
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeConverterTest.java
----------------------------------------------------------------------
diff --git a/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeConverterTest.java b/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeConverterTest.java
index 7283cb2..58b4587 100644
--- a/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeConverterTest.java
+++ b/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeConverterTest.java
@@ -68,9 +68,9 @@ public class DateTimeConverterTest {
{" 2007-08-31T16:47:01.123+00:00", FORMATTER.parseDateTime("2007-08-31T16:47:01.123+00:00")},
{"2007-08-31T16:47:01+00:00 ", FORMATTER.parseDateTime("2007-08-31T16:47:01.0+00:00")},
};
-
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(DateTime.class)).build();
for (Object[] pair : inputResultPairs) {
- DateTime date = converter.convert((String)pair[0]);
+ DateTime date = converter.convert((String)pair[0], context);
assertThat("Converter failed to convert input createValue " + pair[0], date, notNullValue());
assertThat(date.isEqual((DateTime)pair[1]), is(true));
@@ -83,8 +83,9 @@ public class DateTimeConverterTest {
"00:00", "a", "-", "+ :00", "+00:"
};
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(DateTime.class)).build();
for (String input : inputValues) {
- DateTime date = converter.convert(input);
+ DateTime date = converter.convert(input, context);
assertThat(date, nullValue());
}
@@ -93,18 +94,13 @@ public class DateTimeConverterTest {
@Test
public void allSupportedFormatsAreAddedToTheConversionContext() {
ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(DateTime.class)).build();
- try {
- ConversionContext.set(context);
- converter.convert("2007-08-31T16+00:00");
-
- assertThat(context.getSupportedFormats(), hasSize(DateTimeConverter.PARSER_FORMATS.length));
-
- for (String format : DateTimeConverter.PARSER_FORMATS) {
- String expected = format + " (" + DateTimeConverter.class.getSimpleName() + ")";
- assertThat(context.getSupportedFormats(), hasItem(expected));
- }
- }finally {
- ConversionContext.reset();
+ converter.convert("2007-08-31T16+00:00", context);
+
+ assertThat(context.getSupportedFormats(), hasSize(DateTimeConverter.PARSER_FORMATS.length));
+
+ for (String format : DateTimeConverter.PARSER_FORMATS) {
+ String expected = format + " (" + DateTimeConverter.class.getSimpleName() + ")";
+ assertThat(context.getSupportedFormats(), hasItem(expected));
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeZoneConverterTest.java
----------------------------------------------------------------------
diff --git a/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeZoneConverterTest.java b/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeZoneConverterTest.java
index 6061d29..7bc3adb 100644
--- a/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeZoneConverterTest.java
+++ b/jodatime/src/test/java/org/apache/tamaya/jodatime/DateTimeZoneConverterTest.java
@@ -55,9 +55,9 @@ public class DateTimeZoneConverterTest {
{" +00:00 ", DateTimeZone.forID("+00:00")},
{"+04:00", DateTimeZone.forID("+04:00")},
};
-
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(DateTimeZone.class)).build();
for (Object[] pair : inputResultPairs) {
- DateTimeZone zone = converter.convert((String) pair[0]);
+ DateTimeZone zone = converter.convert((String) pair[0], context);
assertThat("Converter failed to convert input createValue " + pair[0], zone, notNullValue());
assertThat(zone, equalTo((DateTimeZone)pair[1]));
@@ -74,8 +74,9 @@ public class DateTimeZoneConverterTest {
"2007-08-01+00:00"
};
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(DateTimeZone.class)).build();
for (String input : inputValues) {
- DateTimeZone date = converter.convert(input);
+ DateTimeZone date = converter.convert(input, context);
assertThat(date, nullValue());
}
@@ -87,17 +88,12 @@ public class DateTimeZoneConverterTest {
String secondFormat = "All time zone ids supported by Joda Time (DateTimeZoneConverter)";
ConversionContext context = new Builder(TypeLiteral.of(DateTimeZone.class)).build();
- try {
- ConversionContext.set(context);
- DateTimeZone result = converter.convert("+01:00");
+ DateTimeZone result = converter.convert("+01:00", context);
- assertThat(result, notNullValue());
- assertThat(context.getSupportedFormats(), hasSize(2));
- assertThat(context.getSupportedFormats(), hasItem(firstFormat));
- assertThat(context.getSupportedFormats(), hasItem(secondFormat));
- }finally{
- ConversionContext.reset();
- }
+ assertThat(result, notNullValue());
+ assertThat(context.getSupportedFormats(), hasSize(2));
+ assertThat(context.getSupportedFormats(), hasItem(firstFormat));
+ assertThat(context.getSupportedFormats(), hasItem(secondFormat));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/test/java/org/apache/tamaya/jodatime/DurationConverterTest.java
----------------------------------------------------------------------
diff --git a/jodatime/src/test/java/org/apache/tamaya/jodatime/DurationConverterTest.java b/jodatime/src/test/java/org/apache/tamaya/jodatime/DurationConverterTest.java
index 07270d1..7ddf6da 100644
--- a/jodatime/src/test/java/org/apache/tamaya/jodatime/DurationConverterTest.java
+++ b/jodatime/src/test/java/org/apache/tamaya/jodatime/DurationConverterTest.java
@@ -58,8 +58,9 @@ public class DurationConverterTest {
};
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(Duration.class)).build();
for (Object[] pair : inputResultPairs) {
- Duration duration = converter.convert((String) pair[0]);
+ Duration duration = converter.convert((String) pair[0], context);
assertThat("Converter failed to convert input createValue " + pair[0], duration, notNullValue());
assertThat(duration, equalTo((Duration) pair[1]));
@@ -75,9 +76,9 @@ public class DurationConverterTest {
"-",
"fooBar",
};
-
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(Duration.class)).build();
for (String input : inputValues) {
- Duration duration = converter.convert(input);
+ Duration duration = converter.convert(input, context);
assertThat(duration, nullValue());
}
@@ -88,16 +89,11 @@ public class DurationConverterTest {
String name = DurationConverter.class.getSimpleName();
ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(Duration.class)).build();
- try {
- ConversionContext.set(context);
- converter.convert("P0DT0H0M0S");
-
- assertThat(context.getSupportedFormats(), hasSize(3));
- assertThat(context.getSupportedFormats(), hasItem("PdDThHmMsS (" + name + ")"));
- assertThat(context.getSupportedFormats(), hasItem("ddThh:mm:ss (" + name + ")"));
- assertThat(context.getSupportedFormats(), hasItem("PTa.bS (" + name + ")"));
- }finally{
- ConversionContext.reset();
- }
+ converter.convert("P0DT0H0M0S", context);
+
+ assertThat(context.getSupportedFormats(), hasSize(3));
+ assertThat(context.getSupportedFormats(), hasItem("PdDThHmMsS (" + name + ")"));
+ assertThat(context.getSupportedFormats(), hasItem("ddThh:mm:ss (" + name + ")"));
+ assertThat(context.getSupportedFormats(), hasItem("PTa.bS (" + name + ")"));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java
----------------------------------------------------------------------
diff --git a/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java b/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java
index 15e0018..9ed7724 100644
--- a/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java
+++ b/jodatime/src/test/java/org/apache/tamaya/jodatime/PeriodConverterTest.java
@@ -62,8 +62,9 @@ public class PeriodConverterTest {
{"P0002-03-00T00:00:05", FORMATTER.parsePeriod("P2Y3M0W0DT0H0M5S")}
};
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(Period.class)).build();
for (Object[] pair : inputResultPairs) {
- Period period = converter.convert((String) pair[0]);
+ Period period = converter.convert((String) pair[0], context);
assertThat("Converter failed to convert input createValue " + pair[0], period, notNullValue());
assertThat(period, equalTo((Period)pair[1]));
@@ -78,8 +79,9 @@ public class PeriodConverterTest {
"P0002T00:05"
};
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(Period.class)).build();
for (String input : inputValues) {
- Period period = converter.convert(input);
+ Period period = converter.convert(input, context);
assertThat(period, nullValue());
}
@@ -90,15 +92,10 @@ public class PeriodConverterTest {
String name = PeriodConverter.class.getSimpleName();
ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(Period.class)).build();
- try {
- ConversionContext.set(context);
- converter.convert("P7Y0M0W0DT0H0M0S");
-
- assertThat(context.getSupportedFormats(), hasSize(2));
- assertThat(context.getSupportedFormats(), hasItem("PyYmMwWdDThHmMsS (" + name + ")"));
- assertThat(context.getSupportedFormats(), hasItem("Pyyyy-mm-ddThh:mm:ss (" + name + ")"));
- }finally{
- ConversionContext.reset();
- }
+ converter.convert("P7Y0M0W0DT0H0M0S", context);
+
+ assertThat(context.getSupportedFormats(), hasSize(2));
+ assertThat(context.getSupportedFormats(), hasItem("PyYmMwWdDThHmMsS (" + name + ")"));
+ assertThat(context.getSupportedFormats(), hasItem("Pyyyy-mm-ddThh:mm:ss (" + name + ")"));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/main/java/org/apache/tamaya/metamodel/CachedFilter.java
----------------------------------------------------------------------
diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/CachedFilter.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/CachedFilter.java
index 52e92c4..45d4b0a 100644
--- a/metamodel/src/main/java/org/apache/tamaya/metamodel/CachedFilter.java
+++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/CachedFilter.java
@@ -19,6 +19,7 @@
package org.apache.tamaya.metamodel;
import org.apache.tamaya.metamodel.spi.ItemFactory;
+import org.apache.tamaya.spi.FilterContext;
import org.apache.tamaya.spi.PropertyFilter;
import org.apache.tamaya.spi.PropertyValue;
@@ -68,7 +69,7 @@ public class CachedFilter implements PropertyFilter{
}
@Override
- public PropertyValue filterProperty(PropertyValue value) {
+ public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
if(matches !=null){
if(value.getKey().matches(matches)){
return resolveCachedEntry(value);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/main/java/org/apache/tamaya/metamodel/HideFilter.java
----------------------------------------------------------------------
diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/HideFilter.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/HideFilter.java
index 431b72e..b100906 100644
--- a/metamodel/src/main/java/org/apache/tamaya/metamodel/HideFilter.java
+++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/HideFilter.java
@@ -21,6 +21,7 @@ package org.apache.tamaya.metamodel;
import java.util.Map;
import org.apache.tamaya.metamodel.spi.ItemFactory;
+import org.apache.tamaya.spi.FilterContext;
import org.apache.tamaya.spi.PropertyFilter;
import org.apache.tamaya.spi.PropertyValue;
@@ -63,7 +64,7 @@ public class HideFilter implements PropertyFilter{
}
@Override
- public PropertyValue filterProperty(PropertyValue value) {
+ public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
if(matches !=null){
if(value.getKey().matches(matches)){
return null;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/main/java/org/apache/tamaya/metamodel/ImmutableFilter.java
----------------------------------------------------------------------
diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/ImmutableFilter.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/ImmutableFilter.java
index 0b957a3..0a2acad 100644
--- a/metamodel/src/main/java/org/apache/tamaya/metamodel/ImmutableFilter.java
+++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/ImmutableFilter.java
@@ -56,10 +56,9 @@ public class ImmutableFilter implements PropertyFilter{
private Map<String,PropertyValue> map = new ConcurrentHashMap<>();
@Override
- public PropertyValue filterProperty(PropertyValue value) {
+ public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
String key = value.getKey();
- FilterContext context = FilterContext.get();
- if(context!=null && !context.isSinglePropertyScoped()) {
+ if(!context.isSinglePropertyScoped()) {
key = value.getKey() + "_all";
}
PropertyValue val = map.get(key);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/main/java/org/apache/tamaya/metamodel/MapFilter.java
----------------------------------------------------------------------
diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/MapFilter.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/MapFilter.java
index f7ed5a7..9bf7d15 100644
--- a/metamodel/src/main/java/org/apache/tamaya/metamodel/MapFilter.java
+++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/MapFilter.java
@@ -19,6 +19,7 @@
package org.apache.tamaya.metamodel;
import org.apache.tamaya.metamodel.spi.ItemFactory;
+import org.apache.tamaya.spi.FilterContext;
import org.apache.tamaya.spi.PropertyFilter;
import org.apache.tamaya.spi.PropertyValue;
@@ -83,7 +84,7 @@ public class MapFilter implements PropertyFilter{
}
@Override
- public PropertyValue filterProperty(PropertyValue value) {
+ public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
value = value.mutable();
String key = value.getKey();
if(matches !=null){
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/main/java/org/apache/tamaya/metamodel/MaskFilter.java
----------------------------------------------------------------------
diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/MaskFilter.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/MaskFilter.java
index cb63a25..9d356b2 100644
--- a/metamodel/src/main/java/org/apache/tamaya/metamodel/MaskFilter.java
+++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/MaskFilter.java
@@ -19,6 +19,7 @@
package org.apache.tamaya.metamodel;
import org.apache.tamaya.metamodel.spi.ItemFactory;
+import org.apache.tamaya.spi.FilterContext;
import org.apache.tamaya.spi.PropertyFilter;
import org.apache.tamaya.spi.PropertyValue;
@@ -112,7 +113,7 @@ public class MaskFilter implements PropertyFilter{
}
@Override
- public PropertyValue filterProperty(PropertyValue value) {
+ public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
if(matches !=null){
if(value.getKey().matches(matches)){
return null;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/main/java/org/apache/tamaya/metamodel/SecuredFilter.java
----------------------------------------------------------------------
diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/SecuredFilter.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/SecuredFilter.java
index bfa3672..7d41f68 100644
--- a/metamodel/src/main/java/org/apache/tamaya/metamodel/SecuredFilter.java
+++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/SecuredFilter.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.metamodel;
import org.apache.tamaya.ConfigException;
import org.apache.tamaya.metamodel.spi.ItemFactory;
+import org.apache.tamaya.spi.FilterContext;
import org.apache.tamaya.spi.PropertyFilter;
import org.apache.tamaya.spi.PropertyValue;
@@ -91,7 +92,7 @@ public class SecuredFilter implements PropertyFilter{
}
@Override
- public PropertyValue filterProperty(PropertyValue value) {
+ public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
if(matches !=null){
if(!value.getKey().matches(matches)) {
return value;
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java
----------------------------------------------------------------------
diff --git a/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java b/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java
index 1fe93ff..856ef56 100644
--- a/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java
+++ b/metamodel/src/main/java/org/apache/tamaya/metamodel/ext/FilteredPropertySource.java
@@ -85,18 +85,13 @@ public final class FilteredPropertySource extends BasePropertySource {
PropertyValue value = wrapped.get(key);
if(value != null && value.getValue()!=null){
if(filters!=null){
- try{
- FilterContext fc = new FilterContext(value, dummyContext);
- FilterContext.set(fc);
- PropertyValue filteredValue = value;
- for(PropertyFilter pf:filters){
- filteredValue = pf.filterProperty(filteredValue);
- }
- if(filteredValue!=null){
- return filteredValue;
- }
- }finally {
- FilterContext.reset();
+ FilterContext fc = new FilterContext(value, dummyContext);
+ PropertyValue filteredValue = value;
+ for(PropertyFilter pf:filters){
+ filteredValue = pf.filterProperty(filteredValue, fc);
+ }
+ if(filteredValue!=null){
+ return filteredValue;
}
}
}
@@ -110,18 +105,13 @@ public final class FilteredPropertySource extends BasePropertySource {
Map<String, PropertyValue> result = new HashMap<>();
synchronized (filters) {
for (PropertyValue value : props.values()) {
- try{
- FilterContext fc = new FilterContext(value, dummyContext);
- FilterContext.set(fc);
- PropertyValue filteredValue = value;
- for (PropertyFilter pf : filters) {
- filteredValue = pf.filterProperty(filteredValue);
- }
- if (filteredValue != null) {
- result.put(filteredValue.getKey(), filteredValue);
- }
- }finally {
- FilterContext.reset();
+ FilterContext fc = new FilterContext(value, dummyContext);
+ PropertyValue filteredValue = value;
+ for (PropertyFilter pf : filters) {
+ filteredValue = pf.filterProperty(filteredValue, fc);
+ }
+ if (filteredValue != null) {
+ result.put(filteredValue.getKey(), filteredValue);
}
}
}
@@ -130,11 +120,6 @@ public final class FilteredPropertySource extends BasePropertySource {
return Collections.emptyMap();
}
- @Override
- public boolean isScannable() {
- return wrapped.isScannable();
- }
-
/**
* Adds the given filters to this property source.
* @param filter the filters, not null.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyConverter.java
----------------------------------------------------------------------
diff --git a/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyConverter.java b/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyConverter.java
index d19b3c3..038fcd2 100644
--- a/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyConverter.java
+++ b/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyConverter.java
@@ -18,6 +18,7 @@
*/
package org.apache.tamaya.metamodel.ext;
+import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
/**
@@ -31,7 +32,7 @@ public class MyConverter implements PropertyConverter<String> {
private String overrideValue;
@Override
- public String convert(String value) {
+ public String convert(String value, ConversionContext conversionContext) {
return value;
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyFilter.java
----------------------------------------------------------------------
diff --git a/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyFilter.java b/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyFilter.java
index 938a48d..e6ab7e6 100644
--- a/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyFilter.java
+++ b/metamodel/src/test/java/org/apache/tamaya/metamodel/ext/MyFilter.java
@@ -18,6 +18,7 @@
*/
package org.apache.tamaya.metamodel.ext;
+import org.apache.tamaya.spi.FilterContext;
import org.apache.tamaya.spi.PropertyFilter;
import org.apache.tamaya.spi.PropertyValue;
@@ -32,7 +33,7 @@ public class MyFilter implements PropertyFilter{
private String overrideValue;
@Override
- public PropertyValue filterProperty(PropertyValue value) {
+ public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
return value;
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java
----------------------------------------------------------------------
diff --git a/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java b/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java
index 0fb69f4..7c41aa0 100644
--- a/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java
+++ b/uom/src/main/java/org/apache/tamaya/uom/UnitConverter.java
@@ -40,9 +40,9 @@ public class UnitConverter implements PropertyConverter<Unit> {
private static final Pattern IS_INTEGER_VALUE = Pattern.compile(PATTERN_REGEX);
@Override
- public Unit convert(String value) {
+ public Unit convert(String value, ConversionContext context) {
String trimmed = requireNonNull(value).trim();
- addSupportedFormats();
+ context.addSupportedFormats(UnitConverter.class, "All Units supported by JSR 363");
UnitFormat format = ServiceProvider.current().getUnitFormatService().getUnitFormat();
Unit result = null;
@@ -58,9 +58,4 @@ public class UnitConverter implements PropertyConverter<Unit> {
return result;
}
- private void addSupportedFormats() {
- ConversionContext.doOptional(context -> {
- context.addSupportedFormats(UnitConverter.class, "All Units supported by JSR 363");
- });
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java
----------------------------------------------------------------------
diff --git a/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java b/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java
index 0afe8c9..7852693 100644
--- a/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java
+++ b/uom/src/test/java/org/apache/tamaya/uom/UnitConverterTest.java
@@ -18,6 +18,8 @@
*/
package org.apache.tamaya.uom;
+import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.spi.ConversionContext;
import org.junit.Test;
import tec.units.ri.unit.Units;
@@ -34,7 +36,8 @@ public class UnitConverterTest {
@Test
public void canConvertUnitInformation() {
- Unit<?> unit = converter.convert("m");
+ ConversionContext context = new ConversionContext.Builder(TypeLiteral.of(Unit.class)).build();
+ Unit<?> unit = converter.convert("m", context);
assertThat("Converter failed to convert input createValue " + unit, notNullValue());
assertEquals(unit, Units.METRE);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/1fbe9a15/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java
----------------------------------------------------------------------
diff --git a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java
index 0c67354..f3811d5 100644
--- a/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java
+++ b/usagetracker/src/main/java/org/apache/tamaya/usagetracker/internal/UsageTrackerFilter.java
@@ -36,10 +36,9 @@ import java.util.logging.Filter;
public class UsageTrackerFilter implements PropertyFilter{
@Override
- public PropertyValue filterProperty(PropertyValue value) {
+ public PropertyValue filterProperty(PropertyValue value, FilterContext context) {
ConfigUsageSpi tracker = ServiceContextManager.getServiceContext().getService(ConfigUsageSpi.class);
- FilterContext context = FilterContext.get();
- if (context == null || context.isSinglePropertyScoped()) {
+ if (context.isSinglePropertyScoped()) {
tracker.recordSingleKeyAccess(value, context.current());
} else {
tracker.recordAllPropertiesAccess(context.current());