TAMAYA-128: Added ConversionContext for supporting more complex conversion 
cases, adapted evaluation of conversion.


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

Branch: refs/heads/master
Commit: cd60ff7b8d6ba28d888d7acf93c4b85ba2abcd7d
Parents: ff3f314
Author: Anatole Tresch <anat...@apache.org>
Authored: Thu Oct 29 12:40:27 2015 +0100
Committer: Anatole Tresch <anat...@apache.org>
Committed: Thu Oct 29 12:40:27 2015 +0100

----------------------------------------------------------------------
 .../java/org/apache/tamaya/events/FrozenConfiguration.java  | 7 +++++--
 .../test/java/org/apache/tamaya/events/TestConfigView.java  | 9 ++++++---
 .../apache/tamaya/inject/internal/DefaultDynamicValue.java  | 1 -
 .../org/apache/tamaya/spisupport/DefaultConfiguration.java  | 2 +-
 4 files changed, 12 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cd60ff7b/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 14c9b30..313f569 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
@@ -24,6 +24,7 @@ import org.apache.tamaya.ConfigQuery;
 import org.apache.tamaya.Configuration;
 import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import java.io.Serializable;
@@ -115,9 +116,10 @@ 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();
             for (PropertyConverter<T> converter : converters) {
                 try {
-                    T t = converter.convert(value);
+                    T t = converter.convert(value, context);
                     if (t != null) {
                         return t;
                     }
@@ -127,7 +129,8 @@ public final class FrozenConfiguration implements 
Configuration, Serializable {
                                     e);
                 }
             }
-            throw new ConfigException("Unparseable config value for type: " + 
type.getRawType().getName() + ": " + key);
+            throw new ConfigException("Unparseable config value for type: " + 
type.getRawType().getName() + ": " + key
+                    + ", supported formats: " + context.getSupportedFormats());
         }
 
         return null;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cd60ff7b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
----------------------------------------------------------------------
diff --git 
a/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java 
b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
index 379f660..4f2227a 100644
--- a/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
+++ b/modules/events/src/test/java/org/apache/tamaya/events/TestConfigView.java
@@ -24,6 +24,7 @@ import org.apache.tamaya.ConfigQuery;
 import org.apache.tamaya.Configuration;
 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.HashMap;
@@ -31,7 +32,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import java.util.stream.Collectors;
 
 /**
  * Created by Anatole on 24.03.2015.
@@ -117,9 +117,11 @@ public class TestConfigView implements ConfigOperator{
                 if (value != null) {
                     List<PropertyConverter<T>> converters = 
ConfigurationProvider.getConfigurationContext()
                             .getPropertyConverters(type);
+                    ConversionContext context = new ConversionContext.Builder(
+                            key,type).build();
                     for (PropertyConverter<T> converter : converters) {
                         try {
-                            T t = converter.convert(value);
+                            T t = converter.convert(value, context);
                             if (t != null) {
                                 return t;
                             }
@@ -129,7 +131,8 @@ public class TestConfigView implements ConfigOperator{
                                             + value, e);
                         }
                     }
-                    throw new ConfigException("Unparseable config value for 
type: " + type.getRawType().getName() + ": " + key);
+                    throw new ConfigException("Unparseable config value for 
type: " + type.getRawType().getName() + ": "
+                            + key + ", supportedFormats: " + 
context.getSupportedFormats());
                 }
                 return null;
             }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cd60ff7b/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
----------------------------------------------------------------------
diff --git 
a/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
 
b/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
index f9212a4..bcfc831 100644
--- 
a/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
+++ 
b/modules/injection/src/main/java/org/apache/tamaya/inject/internal/DefaultDynamicValue.java
@@ -27,7 +27,6 @@ import org.apache.tamaya.inject.api.InjectionUtils;
 import org.apache.tamaya.inject.api.LoadPolicy;
 import org.apache.tamaya.inject.api.UpdatePolicy;
 import org.apache.tamaya.inject.api.WithPropertyConverter;
-import org.apache.tamaya.spi.ConfigurationContext;
 import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cd60ff7b/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 5a8abcd..a72dc36 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
@@ -177,7 +177,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).setTargetType(type).build();
+            ConversionContext context = new ConversionContext.Builder(this, 
key, type).build();
             for (PropertyConverter<T> converter : converters) {
                 try {
                     T t = converter.convert(value, context);

Reply via email to