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/17 01:21:06 UTC
[1/5] incubator-tamaya git commit: Added more complex scenarios and
features for configuring of collections. Refactored parsing logic into
separate utility class.
Repository: incubator-tamaya
Updated Branches:
refs/heads/master d35748875 -> f50397f3e
Added more complex scenarios and features for configuring of collections. Refactored parsing logic into separate utility class.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/de7bb744
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/de7bb744
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/de7bb744
Branch: refs/heads/master
Commit: de7bb744bcc464f2a48187c7497bad05473d3921
Parents: d357488
Author: anatole <an...@apache.org>
Authored: Wed Feb 17 00:31:16 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Wed Feb 17 00:31:16 2016 +0100
----------------------------------------------------------------------
.../internal/AdaptiveCombinationPolicy.java | 3 +-
.../internal/ArrayListConverter.java | 50 ++----
.../internal/CollectionConverter.java | 1 -
.../internal/ConcurrentHashMapConverter.java | 25 +--
.../collections/internal/HashMapConverter.java | 6 +-
.../collections/internal/HashSetConverter.java | 5 +-
.../collections/internal/ItemTokenizer.java | 170 +++++++++++++++++++
.../internal/LinkedListConverter.java | 5 +-
.../collections/internal/TreeSetConverter.java | 5 +-
.../collections/CollectionAdvancedTests.java | 78 +++++++++
.../collections/MyUpperCaseConverter.java | 33 ++++
.../META-INF/javaconfiguration.properties | 30 ++--
12 files changed, 324 insertions(+), 87 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/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 63fea76..ac5af36 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
@@ -68,6 +68,7 @@ public class AdaptiveCombinationPolicy implements PropertyValueCombinationPolicy
}
}
// check for default collection combination policies for lists, sets, maps etc.
+ final String SEPARATOR = ConfigurationProvider.getConfiguration().getOrDefault('_' + key+".collection-separator", ",");
String collectionType = ConfigurationProvider.getConfiguration().get('_' + key+".collection-type");
if(collectionType!=null) {
if (collectionType.startsWith("java.util.")) {
@@ -96,7 +97,7 @@ public class AdaptiveCombinationPolicy implements PropertyValueCombinationPolicy
String oldVal = newMapValue.get(key);
newMapValue.putAll(newValue.getConfigEntries());
if(oldVal!=null){
- newMapValue.put(key,oldVal + ',' + newValue.getValue());
+ newMapValue.put(key,oldVal + SEPARATOR + newValue.getValue());
}
return newMapValue;
}else{
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ArrayListConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ArrayListConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ArrayListConverter.java
index e55b44a..3e95438 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ArrayListConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ArrayListConverter.java
@@ -18,6 +18,7 @@
*/
package org.apache.tamaya.collections.internal;
+import org.apache.tamaya.ConfigurationProvider;
import org.apache.tamaya.TypeLiteral;
import org.apache.tamaya.spi.ConversionContext;
import org.apache.tamaya.spi.PropertyConverter;
@@ -47,47 +48,20 @@ public class ArrayListConverter implements PropertyConverter<ArrayList> {
@Override
public ArrayList convert(String value, ConversionContext context) {
- ArrayList<String> rawList = split(value);
- String converterClass = context.getConfiguration().get('_' + context.getKey()+".collection-parser");
- if(converterClass!=null){
- try {
- PropertyConverter<?> valueConverter = (PropertyConverter<?>) Class.forName(converterClass).newInstance();
- ArrayList<Object> mlist = new ArrayList<>();
- ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(), context.getKey(),
- TypeLiteral.of(context.getTargetType().getType())).build();
- for(String raw:rawList){
- Object convValue = valueConverter.convert(raw, ctx);
- if(convValue!=null){
- mlist.add(convValue);
- continue;
- }
- }
- return mlist;
+ final String SEPARATOR = ConfigurationProvider.getConfiguration().getOrDefault(
+ '_' + context.getKey()+".collection-separator", ",");
+ List<String> rawList = ItemTokenizer.split(value, SEPARATOR);
- } catch (Exception e) {
- LOG.log(Level.SEVERE, "Error convertion config to ArrayList type.", e);
- }
- }
- return rawList;
- }
-
- static ArrayList<String> split(String value) {
- ArrayList<String> result = new ArrayList<>();
- int start = 0;
- int end = value.indexOf(',',start);
- while(end>0) {
- if (end>0 && (value.charAt(end - 1) != '\\')) {
- result.add(value.substring(start, end));
- start = end + 1;
- end = value.indexOf(',',start);
+ ArrayList<Object> mlist = new ArrayList<>();
+ for(String raw:rawList){
+ Object convValue = ItemTokenizer.convertValue(raw, context);
+ if (convValue != null) {
+ mlist.add(convValue);
}else{
- end = value.indexOf(',',end + 1);
+ LOG.log(Level.SEVERE, "Failed to convert collection value type for '"+raw+"'.");
}
- end = value.indexOf(',',start);
- }
- if(start < value.length()){
- result.add(value.substring(start));
}
- return result;
+ return mlist;
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/CollectionConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/CollectionConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/CollectionConverter.java
index ecd2878..0d9a799 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/CollectionConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/CollectionConverter.java
@@ -23,7 +23,6 @@ import org.apache.tamaya.spi.PropertyConverter;
import java.util.Collection;
import java.util.Collections;
-import java.util.List;
/**
* PropertyConverter for gnerating a LIST representation of values.
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ConcurrentHashMapConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ConcurrentHashMapConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ConcurrentHashMapConverter.java
index f472c4c..07aecc8 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ConcurrentHashMapConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ConcurrentHashMapConverter.java
@@ -46,16 +46,17 @@ public class ConcurrentHashMapConverter implements PropertyConverter<ConcurrentH
@Override
public ConcurrentHashMap convert(String value, ConversionContext context) {
- List<String> rawList = ArrayListConverter.split(value);
+ List<String> rawList = ItemTokenizer.split(value, context);
String converterClass = context.getConfiguration().get('_' + context.getKey()+".collection-parser");
if(converterClass!=null){
try {
PropertyConverter<?> valueConverter = (PropertyConverter<?>) Class.forName(converterClass).newInstance();
ConcurrentHashMap<String,Object> mlist = new ConcurrentHashMap<>();
- ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(), context.getKey(),
+ ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(),
+ context.getConfigurationContext(), context.getKey(),
TypeLiteral.of(context.getTargetType().getType())).build();
for(String raw:rawList){
- String[] items = splitItems(raw);
+ String[] items = ItemTokenizer.splitMapEntry(raw, context);
Object convValue = valueConverter.convert(items[1], ctx);
if(convValue!=null){
mlist.put(items[0], convValue);
@@ -70,7 +71,7 @@ public class ConcurrentHashMapConverter implements PropertyConverter<ConcurrentH
}
ConcurrentHashMap<String,String> result = new ConcurrentHashMap<>();
for(String raw:rawList){
- String[] items = splitItems(raw);
+ String[] items = ItemTokenizer.splitMapEntry(raw, context);
if(items!=null){
result.put(items[0], items[1]);
}
@@ -78,19 +79,5 @@ public class ConcurrentHashMapConverter implements PropertyConverter<ConcurrentH
return result;
}
- static String[] splitItems(String raw) {
- 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/de7bb744/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 49defaa..29d7ad7 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,7 +24,6 @@ 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;
@@ -47,13 +46,14 @@ public class HashMapConverter implements PropertyConverter<HashMap> {
@Override
public HashMap convert(String value, ConversionContext context) {
- List<String> rawList = ArrayListConverter.split(value);
+ List<String> rawList = ItemTokenizer.split(value, context);
String converterClass = context.getConfiguration().get('_' + context.getKey()+".collection-parser");
if(converterClass!=null){
try {
PropertyConverter<?> valueConverter = (PropertyConverter<?>) Class.forName(converterClass).newInstance();
HashMap<String,Object> mlist = new HashMap<>();
- ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(), context.getKey(),
+ ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(),
+ context.getConfigurationContext(), context.getKey(),
TypeLiteral.of(context.getTargetType().getType())).build();
for(String raw:rawList){
String[] items = splitItems(raw);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashSetConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashSetConverter.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashSetConverter.java
index 0551549..47c32f6 100644
--- a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashSetConverter.java
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/HashSetConverter.java
@@ -49,13 +49,14 @@ public class HashSetConverter implements PropertyConverter<HashSet> {
@Override
public HashSet convert(String value, ConversionContext context) {
- List<String> rawList = ArrayListConverter.split(value);
+ List<String> rawList = ItemTokenizer.split(value, context);
String converterClass = context.getConfiguration().get('_' + context.getKey()+".collection-parser");
if(converterClass!=null){
try {
PropertyConverter<?> valueConverter = (PropertyConverter<?>) Class.forName(converterClass).newInstance();
HashSet<Object> mlist = new HashSet<>();
- ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(), context.getKey(),
+ ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(),
+ context.getConfigurationContext(), context.getKey(),
TypeLiteral.of(context.getTargetType().getType())).build();
for(String raw:rawList){
Object convValue = valueConverter.convert(raw, ctx);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ItemTokenizer.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ItemTokenizer.java b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ItemTokenizer.java
new file mode 100644
index 0000000..37f7cf1
--- /dev/null
+++ b/sandbox/collections/src/main/java/org/apache/tamaya/collections/internal/ItemTokenizer.java
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.collections.internal;
+
+import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.spi.ConversionContext;
+import org.apache.tamaya.spi.PropertyConverter;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Helper class that implements the tokenizing of the entries of a configuration value.
+ */
+final class ItemTokenizer {
+
+ private static final Logger LOG = Logger.getLogger(ItemTokenizer.class.getName());
+
+ /**
+ * Private singleton.
+ */
+ private ItemTokenizer(){}
+
+ /**
+ * Splits the given value using the given separator. Matcjhing is done by traversing the String value using
+ * {@code indexOf} calls, one by one. The last unresolvable item (without any next separator token)
+ * is added at the end of the list.
+ * @param value the value, not null.
+ * @param context the conversion context.
+ * @return the tokenized value as list, in order of occurrence.
+ */
+ public static List<String> split(String value, ConversionContext context){
+ return split(value, ConfigurationProvider.getConfiguration().getOrDefault(
+ '_' + context.getKey()+".collection-separator", ","));
+ }
+
+ /**
+ * Splits the given value using the given separator. Matcjhing is done by traversing the String value using
+ * {@code indexOf} calls, one by one. The last unresolvable item (without any next separator token)
+ * is added at the end of the list.
+ * @param value the value, not null.
+ * @param separator the separator to be used.
+ * @return the tokenized value as list, in order of occurrence.
+ */
+ public static List<String> split(String value, final String separator) {
+ ArrayList<String> result = new ArrayList<>();
+ int start = 0;
+ int end = value.indexOf(separator,start);
+ while(end>0) {
+ if (end>0 && (value.charAt(end - 1) != '\\')) {
+ result.add(value.substring(start, end));
+ start = end + separator.length();
+ end = value.indexOf(separator,start);
+ }else{
+ end = value.indexOf(separator,end + separator.length());
+ }
+ end = value.indexOf(separator,start);
+ }
+ if(start < value.length()){
+ result.add(value.substring(start));
+ }
+ return result;
+ }
+
+ /**
+ * plits the given String value as a map entry, splitting it into key and value part with the given separator.
+ * If the value cannot be split then {@code key = value = mapEntry} is used for further processing. key or value
+ * parts are normally trimmed, unless they are enmcosed with brackets {@code []}.
+ * @param mapEntry the entry, not null.
+ * @param context the conversion context.
+ * @return an array of length 2, with the trimmed and parsed key/value pair.
+ */
+ public static String[] splitMapEntry(String mapEntry, ConversionContext context){
+ return splitMapEntry(mapEntry, ConfigurationProvider.getConfiguration().getOrDefault(
+ '_' + context.getKey()+".collection-map-separator", ","));
+ }
+
+ /**
+ * Splits the given String value as a map entry, splitting it into key and value part with the given separator.
+ * If the value cannot be split then {@code key = value = mapEntry} is used for further processing. key or value
+ * parts are normally trimmed, unless they are enmcosed with brackets {@code []}.
+ * @param mapEntry the entry, not null.
+ * @param separator the separator, not null.
+ * @return an array of length 2, with the trimmed and parsed key/value pair.
+ */
+ public static String[] splitMapEntry(final String mapEntry, final String separator) {
+ int index = mapEntry.indexOf(separator);
+ String[] items;
+ if(index<0) {
+ items = new String[]{mapEntry, mapEntry};
+ }else {
+ items = new String[]{mapEntry.substring(0,index),
+ mapEntry.substring(index+separator.length())};
+ }
+ 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;
+ }
+
+ /**
+ * Parses the given value into the required collection target type, defined by the context.
+ * @param value the raw String value.
+ * @param context the context
+ * @return the parsed value, or null.
+ */
+ public static Object convertValue(String value, ConversionContext context) {
+ String converterClass = context.getConfiguration().get('_' + context.getKey() + ".item-converter");
+ List<PropertyConverter<Object>> valueConverters = new ArrayList<>(1);
+ if (converterClass != null) {
+ try {
+ valueConverters.add((PropertyConverter<Object>) Class.forName(converterClass).newInstance());
+ } catch (Exception e) {
+ LOG.log(Level.SEVERE, "Error convertion config to ArrayList type.", e);
+ }
+ }
+ if (TypeLiteral.getTypeParameters(context.getTargetType().getType()).length>0) {
+ valueConverters.addAll(context.getConfigurationContext().getPropertyConverters(
+ TypeLiteral.of(TypeLiteral.getTypeParameters(context.getTargetType().getType())[0])));
+ }
+ ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(),
+ context.getConfigurationContext(), context.getKey(),
+ TypeLiteral.of(context.getTargetType().getType())).build();
+ Object result = null;
+ if (valueConverters.isEmpty()) {
+ return value;
+ } else {
+ for (PropertyConverter<Object> conv : valueConverters) {
+ try {
+ result = conv.convert(value, ctx);
+ if (result != null) {
+ return result;
+ }
+ } catch (Exception e) {
+ LOG.log(Level.SEVERE, "Error convertion config to ArrayList type.", e);
+ }
+ }
+ }
+ LOG.log(Level.SEVERE, "Failed to convert collection value type for '" + value + "'.");
+ return null;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/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 f882c78..986a303 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
@@ -46,13 +46,14 @@ public class LinkedListConverter implements PropertyConverter<LinkedList> {
@Override
public LinkedList convert(String value, ConversionContext context) {
- List<String> rawList = ArrayListConverter.split(value);
+ List<String> rawList = ItemTokenizer.split(value, context);
String converterClass = context.getConfiguration().get('_' + context.getKey()+".collection-parser");
if(converterClass!=null){
try {
PropertyConverter<?> valueConverter = (PropertyConverter<?>) Class.forName(converterClass).newInstance();
LinkedList<Object> mlist = new LinkedList<>();
- ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(), context.getKey(),
+ ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(),
+ context.getConfigurationContext(), context.getKey(),
TypeLiteral.of(context.getTargetType().getType())).build();
for(String raw:rawList){
Object convValue = valueConverter.convert(raw, ctx);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/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 e9e2282..f9cba02 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
@@ -47,13 +47,14 @@ public class TreeSetConverter implements PropertyConverter<TreeSet> {
@Override
public TreeSet convert(String value, ConversionContext context) {
- List<String> rawList = ArrayListConverter.split(value);
+ List<String> rawList = ItemTokenizer.split(value, context);
String converterClass = context.getConfiguration().get('_' + context.getKey()+".collection-parser");
if(converterClass!=null){
try {
PropertyConverter<?> valueConverter = (PropertyConverter<?>) Class.forName(converterClass).newInstance();
TreeSet<Object> mlist = new TreeSet<>();
- ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(), context.getKey(),
+ ConversionContext ctx = new ConversionContext.Builder(context.getConfiguration(),
+ context.getConfigurationContext(), context.getKey(),
TypeLiteral.of(context.getTargetType().getType())).build();
for(String raw:rawList){
Object convValue = valueConverter.convert(raw, ctx);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/sandbox/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java b/sandbox/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
new file mode 100644
index 0000000..435ed5d
--- /dev/null
+++ b/sandbox/collections/src/test/java/org/apache/tamaya/collections/CollectionAdvancedTests.java
@@ -0,0 +1,78 @@
+package org.apache.tamaya.collections;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.TypeLiteral;
+import org.junit.Test;
+
+import java.util.Currency;
+import java.util.List;
+
+import static junit.framework.TestCase.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * Created by atsticks on 16.02.16.
+ */
+public class CollectionAdvancedTests {
+
+ /**
+ * Tests if a custom separator works, Config is
+ * <pre>
+ * sep-list=a,b,c|d,e,f|g,h,i
+ * _sep-list.collection-type=List
+ * _sep-list.collection-separator=|
+ * </pre>
+ */
+ @Test
+ public void testCustomSeparator(){
+ Configuration config = ConfigurationProvider.getConfiguration();
+ List<String> items = config.get("sep-list", new TypeLiteral<List<String>>(){});
+ assertNotNull(items);
+ assertFalse(items.isEmpty());
+ assertEquals(3, items.size());
+ assertEquals("a,b,c", items.get(0));
+ assertEquals("d,e,f", items.get(1));
+ assertEquals("g,h,i", items.get(2));
+ }
+
+ /**
+ * Test typed content.
+ * <pre>
+ * currency-list=CHF,USD,YEN
+ * _currency-list.collection-type=List
+ * </pre>
+ */
+ @Test
+ public void testTypedContent(){
+ Configuration config = ConfigurationProvider.getConfiguration();
+ List<Currency> items = config.get("currency-list", new TypeLiteral<List<Currency>>(){});
+ assertNotNull(items);
+ assertFalse(items.isEmpty());
+ assertEquals(3, items.size());
+ assertEquals("CHF", items.get(0).getCurrencyCode());
+ assertEquals("USD", items.get(1).getCurrencyCode());
+ assertEquals("USS", items.get(2).getCurrencyCode());
+ }
+
+ /**
+ * Tests if a custom parser works, Config is
+ * <pre>
+ * parser-list=a,b,c
+ * _parser-list.collection-type=List
+ * _parser-list.item-converter=org.apache.tamaya.collections.MyUpperCaseConverter
+ * </pre>
+ */
+ @Test
+ public void testCustomParser(){
+ Configuration config = ConfigurationProvider.getConfiguration();
+ List<String> items = config.get("parser-list", new TypeLiteral<List<String>>(){});
+ assertNotNull(items);
+ assertFalse(items.isEmpty());
+ assertEquals(3, items.size());
+ assertEquals("(A)", items.get(0));
+ assertEquals("(B)", items.get(1));
+ assertEquals("(C)", items.get(2));
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/sandbox/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java b/sandbox/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
new file mode 100644
index 0000000..1c95261
--- /dev/null
+++ b/sandbox/collections/src/test/java/org/apache/tamaya/collections/MyUpperCaseConverter.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.collections;
+
+import org.apache.tamaya.spi.ConversionContext;
+import org.apache.tamaya.spi.PropertyConverter;
+
+/**
+ * Example converter that is used for testing the custom parsing functionality. It sorrounds values with () and
+ * converts them to uppercase.
+ */
+public class MyUpperCaseConverter implements PropertyConverter<String>{
+ @Override
+ public String convert(String value, ConversionContext context) {
+ return "("+value.toUpperCase()+")";
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/de7bb744/sandbox/collections/src/test/resources/META-INF/javaconfiguration.properties
----------------------------------------------------------------------
diff --git a/sandbox/collections/src/test/resources/META-INF/javaconfiguration.properties b/sandbox/collections/src/test/resources/META-INF/javaconfiguration.properties
index 76e5e84..2bb8414 100644
--- a/sandbox/collections/src/test/resources/META-INF/javaconfiguration.properties
+++ b/sandbox/collections/src/test/resources/META-INF/javaconfiguration.properties
@@ -56,22 +56,14 @@ _typed.hashmap.collection-type=java.util.HashMap
typed.treemap=1::a, 2::b, 3::c, [4:: ]
_typed.treemap.collection-type=TreeMap
-# Config for tests with combination policy
-list=a,b,c
-_list.collection-type=List
-arrayList=d,e,f
-_arrayList.collection-type=java.util.ArrayList
-linkedList=g,h,i
-_linkedList.collection-type=java.util.LinkedList
-set=a,b,b
-_set.collection-type=java.util.Set
-sortedSet=a,c,b
-_sortedSet.collection-type=java.util.TreeSet
-map=1::a, 2::b, 3::c
-_map.collection-type=Map
-sortedmap=[3 :: c], 1 :: a, 2 :: b
-_sortedmap.collection-type=SorteedMap
-treemap=[3 :: c], 1 :: a, 2 :: b
-_treemap.collection-type=java.util.TreeMap
-concurrentMap=[3::c], 1::a, key::value
-_concurrentMap.collection-type=java.util.ConcurrentHashMap
\ No newline at end of file
+# Config for advanced tests
+sep-list=a,b,c|d,e,f|g,h,i
+_sep-list.collection-type=List
+_sep-list.collection-separator=|
+currency-list=CHF,USD,USS
+_currency-list.collection-type=List
+
+parser-list=a,b,c
+_parser-list.collection-type=List
+_parser-list.item-converter=org.apache.tamaya.collections.MyUpperCaseConverter
+
[3/5] incubator-tamaya git commit: Fixed duplicate converter in list
returned.
Posted by an...@apache.org.
Fixed duplicate converter in list returned.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/97f62557
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/97f62557
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/97f62557
Branch: refs/heads/master
Commit: 97f62557382598e4c19dfa967610c078eea40234
Parents: ce626a1
Author: anatole <an...@apache.org>
Authored: Wed Feb 17 00:52:15 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Wed Feb 17 00:52:15 2016 +0100
----------------------------------------------------------------------
.../core/internal/PropertyConverterManager.java | 44 ++++++++------------
1 file changed, 17 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/97f62557/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 72facc4..2ec48b4 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
@@ -31,13 +31,7 @@ import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.security.AccessController;
import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
@@ -227,35 +221,26 @@ public class PropertyConverterManager {
// direct mapped converters
try {
readLock.lock();
- converters = List.class.cast(this.converters.get(targetType));
+ addConvertersToList(List.class.cast(this.converters.get(targetType)), converterList);
} finally {
readLock.unlock();
}
- if (converters != null) {
- converterList.addAll(converters);
- }
// transitive converter
try {
readLock.lock();
- converters = List.class.cast(this.transitiveConverters.get(targetType));
+ addConvertersToList(List.class.cast(this.transitiveConverters.get(targetType)), converterList);
} finally {
readLock.unlock();
}
- if (converters != null) {
- converterList.addAll(converters);
- }
// handling of java.lang wrapper classes
TypeLiteral<T> boxedType = mapBoxedType(targetType);
if (boxedType != null) {
try {
readLock.lock();
- converters = List.class.cast(this.converters.get(boxedType));
+ addConvertersToList(List.class.cast(this.converters.get(boxedType)), converterList);
} finally {
readLock.unlock();
}
- if (converters != null) {
- converterList.addAll(converters);
- }
}
if (converterList.isEmpty()) {
// adding any converters created on the fly, e.g. for enum types.
@@ -264,31 +249,36 @@ public class PropertyConverterManager {
register(targetType, defaultConverter);
try {
readLock.lock();
- converters = List.class.cast(this.converters.get(targetType));
+ addConvertersToList(List.class.cast(this.converters.get(targetType)), converterList);
} finally {
readLock.unlock();
}
}
- if (converters != null) {
- 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())));
+ addConvertersToList(List.class.cast(this.converters.get(
+ TypeLiteral.of(targetType.getRawType()))), converterList);
} finally {
readLock.unlock();
}
- if (converters != null) {
- converterList.addAll(converters);
- }
}
return converterList;
}
+ private <T> void addConvertersToList(Collection<PropertyConverter<T>> converters, List<PropertyConverter<T>> converterList) {
+ if (converters != null) {
+ for(PropertyConverter<T> conv:converters) {
+ if(!converterList.contains(conv)) {
+ converterList.add(conv);
+ }
+ }
+ }
+ }
+
/**
* Maps native types to the corresponding boxed types.
*
[5/5] incubator-tamaya git commit: Fixed compile issues due to
extended constructor for ConversionContext.
Posted by an...@apache.org.
Fixed compile issues due to extended constructor for ConversionContext.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/f50397f3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/f50397f3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/f50397f3
Branch: refs/heads/master
Commit: f50397f3e1966b52cf243a564f21ff5725ebd81c
Parents: 370c44d
Author: anatole <an...@apache.org>
Authored: Wed Feb 17 01:20:47 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Wed Feb 17 01:20:47 2016 +0100
----------------------------------------------------------------------
.../org/aspache/tamaya/examples/fileobserver/TestConfigView.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/f50397f3/examples/6-fileobserver-example/src/test/java/org/aspache/tamaya/examples/fileobserver/TestConfigView.java
----------------------------------------------------------------------
diff --git a/examples/6-fileobserver-example/src/test/java/org/aspache/tamaya/examples/fileobserver/TestConfigView.java b/examples/6-fileobserver-example/src/test/java/org/aspache/tamaya/examples/fileobserver/TestConfigView.java
index 75752cf..060c61e 100644
--- a/examples/6-fileobserver-example/src/test/java/org/aspache/tamaya/examples/fileobserver/TestConfigView.java
+++ b/examples/6-fileobserver-example/src/test/java/org/aspache/tamaya/examples/fileobserver/TestConfigView.java
@@ -116,7 +116,7 @@ public class TestConfigView implements ConfigOperator{
List<PropertyConverter<T>> converters = ConfigurationProvider.getConfigurationContext()
.getPropertyConverters(type);
ConversionContext ctx = new ConversionContext.Builder(ConfigurationProvider.getConfiguration(),
- key, type).build();
+ ConfigurationProvider.getConfigurationContext(), key, type).build();
for (PropertyConverter<T> converter : converters) {
try {
T t = converter.convert(value, ctx);
[2/5] incubator-tamaya git commit: Added ConfigurationContext to
ConversionContext.
Posted by an...@apache.org.
Added ConfigurationContext to ConversionContext.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/ce626a1b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/ce626a1b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/ce626a1b
Branch: refs/heads/master
Commit: ce626a1b5181aca965b522046a6cdfd69dc8edfe
Parents: de7bb74
Author: anatole <an...@apache.org>
Authored: Wed Feb 17 00:33:30 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Wed Feb 17 00:33:30 2016 +0100
----------------------------------------------------------------------
.../apache/tamaya/spi/ConversionContext.java | 26 +++++++++++++++++---
.../core/internal/DefaultConfiguration.java | 4 +--
2 files changed, 25 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/ce626a1b/code/api/src/main/java/org/apache/tamaya/spi/ConversionContext.java
----------------------------------------------------------------------
diff --git a/code/api/src/main/java/org/apache/tamaya/spi/ConversionContext.java b/code/api/src/main/java/org/apache/tamaya/spi/ConversionContext.java
index 14e683f..4a470b0 100644
--- a/code/api/src/main/java/org/apache/tamaya/spi/ConversionContext.java
+++ b/code/api/src/main/java/org/apache/tamaya/spi/ConversionContext.java
@@ -40,6 +40,7 @@ public class ConversionContext {
private final TypeLiteral<?> targetType;
private final AnnotatedElement annotatedElement;
private final List<String> supportedFormats = new ArrayList<>();
+ private final ConfigurationContext configurationContext;
/**
* Private constructor used from builder.
@@ -51,6 +52,7 @@ public class ConversionContext {
this.targetType = builder.targetType;
this.supportedFormats.addAll(builder.supportedFormats);
this.configuration = builder.configuration;
+ this.configurationContext = builder.configurationContext;
}
/**
@@ -124,12 +126,18 @@ public class ConversionContext {
'}';
}
+ public ConfigurationContext getConfigurationContext() {
+ return configurationContext;
+ }
+
/**
* Builder to create new instances of {@link ConversionContext}.
*/
public static final class Builder{
/** The backing configuration. */
private Configuration configuration;
+ /** The configuration context. */
+ private ConfigurationContext configurationContext;
/** The accessed key, or null. */
private String key;
/** The target type. */
@@ -144,7 +152,7 @@ public class ConversionContext {
* @param targetType the target type
*/
public Builder(TypeLiteral<?> targetType) {
- this(null, null, targetType);
+ this(null, null, null, targetType);
}
/**
@@ -153,7 +161,7 @@ public class ConversionContext {
* @param targetType the target type
*/
public Builder(String key, TypeLiteral<?> targetType) {
- this(null, key, targetType);
+ this(null, null, key, targetType);
}
/**
@@ -162,9 +170,10 @@ public class ConversionContext {
* @param key the requested key, may be null.
* @param targetType the target type
*/
- public Builder(Configuration configuration, String key, TypeLiteral<?> targetType){
+ public Builder(Configuration configuration, ConfigurationContext context, String key, TypeLiteral<?> targetType){
this.key = key;
this.configuration = configuration;
+ this.configurationContext = context;
this.targetType = Objects.requireNonNull(targetType);
}
@@ -189,6 +198,16 @@ public class ConversionContext {
}
/**
+ * Sets the configuration.
+ * @param configurationContext the configuration, not null
+ * @return the builder instance, for chaining
+ */
+ public Builder setConfigurationContext(ConfigurationContext configurationContext){
+ this.configurationContext = Objects.requireNonNull(configurationContext);
+ return this;
+ }
+
+ /**
* Sets the annotated element, when configuration is injected.
* @param annotatedElement the annotated element, not null
* @return the builder instance, for chaining
@@ -224,6 +243,7 @@ public class ConversionContext {
public String toString() {
return "Builder{" +
"configuration=" + configuration +
+ "context=" + configurationContext +
", key='" + key + '\'' +
", targetType=" + targetType +
", annotatedElement=" + annotatedElement +
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/ce626a1b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
index 0f74628..9e50c87 100644
--- a/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
+++ b/code/core/src/main/java/org/apache/tamaya/core/internal/DefaultConfiguration.java
@@ -168,7 +168,7 @@ public class DefaultConfiguration implements Configuration {
protected <T> T convertValue(String key, String value, TypeLiteral<T> type) {
if (value != null) {
List<PropertyConverter<T>> converters = configurationContext.getPropertyConverters(type);
- ConversionContext context = new ConversionContext.Builder(this, key, type).build();
+ ConversionContext context = new ConversionContext.Builder(this, this.configurationContext, key, type).build();
for (PropertyConverter<T> converter : converters) {
try {
T t = converter.convert(value, context);
@@ -176,7 +176,7 @@ public class DefaultConfiguration implements Configuration {
return t;
}
} catch (Exception e) {
- LOG.log(Level.FINEST, "PropertyConverter: " + converter + " failed to convert value: " + value, e);
+ LOG.log(Level.INFO, "PropertyConverter: " + converter + " failed to convert value: " + value, e);
}
}
throw new ConfigException("Unparseable config value for type: " + type.getRawType().getName() + ": " + key +
[4/5] incubator-tamaya git commit: Fixed compile issues due to
extended constructor for ConversionContext.
Posted by an...@apache.org.
Fixed compile issues due to extended constructor for ConversionContext.
Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/commit/370c44d9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/tree/370c44d9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya/diff/370c44d9
Branch: refs/heads/master
Commit: 370c44d9b1e6f11dd7089657b0f3a1c065ae8e49
Parents: 97f6255
Author: anatole <an...@apache.org>
Authored: Wed Feb 17 01:16:56 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Wed Feb 17 01:16:56 2016 +0100
----------------------------------------------------------------------
.../main/java/org/apache/tamaya/events/FrozenConfiguration.java | 3 ++-
.../java/org/apache/tamaya/inject/internal/InjectionHelper.java | 3 ++-
.../org/apache/tamaya/integration/cdi/ConfigurationProducer.java | 3 ++-
.../org/apache/tamaya/integration/cdi/DefaultDynamicValue.java | 4 +++-
.../java/org/apache/tamaya/spisupport/DefaultConfiguration.java | 2 +-
5 files changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/370c44d9/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
index 313f569..b874987 100644
--- a/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
+++ b/modules/events/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
@@ -116,7 +116,8 @@ public final class FrozenConfiguration implements Configuration, Serializable {
if (value != null) {
List<PropertyConverter<T>> converters = ConfigurationProvider.getConfigurationContext()
.getPropertyConverters(type);
- ConversionContext context = new ConversionContext.Builder(this,key,type).build();
+ ConversionContext context = new ConversionContext.Builder(this,
+ ConfigurationProvider.getConfigurationContext(), key,type).build();
for (PropertyConverter<T> converter : converters) {
try {
T t = converter.convert(value, context);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/370c44d9/modules/injection/src/main/java/org/apache/tamaya/inject/internal/InjectionHelper.java
----------------------------------------------------------------------
diff --git a/modules/injection/src/main/java/org/apache/tamaya/inject/internal/InjectionHelper.java b/modules/injection/src/main/java/org/apache/tamaya/inject/internal/InjectionHelper.java
index ed14119..1a71586 100644
--- a/modules/injection/src/main/java/org/apache/tamaya/inject/internal/InjectionHelper.java
+++ b/modules/injection/src/main/java/org/apache/tamaya/inject/internal/InjectionHelper.java
@@ -187,7 +187,8 @@ final class InjectionHelper {
} else {
List<PropertyConverter<T>> converters = ConfigurationProvider.getConfigurationContext()
.getPropertyConverters(targetType);
- ConversionContext ctx = new ConversionContext.Builder(ConfigurationProvider.getConfiguration(), key,targetType)
+ ConversionContext ctx = new ConversionContext.Builder(ConfigurationProvider.getConfiguration(),
+ ConfigurationProvider.getConfigurationContext(), key,targetType)
.setAnnotatedElement(element).build();
for (PropertyConverter<T> converter : converters) {
adaptedValue = converter.convert(configValue, ctx);
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/370c44d9/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/ConfigurationProducer.java
----------------------------------------------------------------------
diff --git a/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/ConfigurationProducer.java b/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/ConfigurationProducer.java
index 90bec41..bf7c6eb 100644
--- a/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/ConfigurationProducer.java
+++ b/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/ConfigurationProducer.java
@@ -98,7 +98,8 @@ public class ConfigurationProducer {
break;
}
}
- ConversionContext.Builder builder = new ConversionContext.Builder(config, keyFound, TypeLiteral.of(toType));
+ ConversionContext.Builder builder = new ConversionContext.Builder(config,
+ ConfigurationProvider.getConfigurationContext(), keyFound, TypeLiteral.of(toType));
if (injectionPoint.getMember() instanceof AnnotatedElement) {
builder.setAnnotatedElement((AnnotatedElement) injectionPoint.getMember());
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/370c44d9/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/DefaultDynamicValue.java
----------------------------------------------------------------------
diff --git a/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/DefaultDynamicValue.java b/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/DefaultDynamicValue.java
index ae1a5cb..dbae46a 100644
--- a/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/DefaultDynamicValue.java
+++ b/modules/integration/cdi/src/main/java/org/apache/tamaya/integration/cdi/DefaultDynamicValue.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.integration.cdi;
import org.apache.tamaya.ConfigException;
import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
import org.apache.tamaya.TypeLiteral;
import org.apache.tamaya.inject.api.BaseDynamicValue;
import org.apache.tamaya.inject.api.DynamicValue;
@@ -382,7 +383,8 @@ final class DefaultDynamicValue<T> extends BaseDynamicValue<T> {
value = configuration.get(key, targetType);
} else {
String source = configuration.get(key);
- ConversionContext ctx = new ConversionContext.Builder(configuration, key, targetType).build();
+ ConversionContext ctx = new ConversionContext.Builder(configuration,
+ ConfigurationProvider.getConfigurationContext(), key, targetType).build();
value = propertyConverter.convert(source, ctx);
}
http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/370c44d9/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java
index fdf5814..4dbdb77 100644
--- a/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java
+++ b/modules/spi-support/src/main/java/org/apache/tamaya/spisupport/DefaultConfiguration.java
@@ -185,7 +185,7 @@ public class DefaultConfiguration implements Configuration {
protected <T> T convertValue(String key, String value, TypeLiteral<T> type) {
if (value != null) {
List<PropertyConverter<T>> converters = configurationContext.getPropertyConverters(type);
- ConversionContext context = new ConversionContext.Builder(this, key, type).build();
+ ConversionContext context = new ConversionContext.Builder(this, configurationContext, key, type).build();
for (PropertyConverter<T> converter : converters) {
try {
T t = converter.convert(value, context);