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-extensions/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/commit/4b183ab9
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/4b183ab9
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/4b183ab9

Branch: refs/heads/master
Commit: 4b183ab9a1b2315ddc6fa099fac19cd8a31f2b19
Parents: 344ad78
Author: Anatole Tresch <anat...@apache.org>
Authored: Thu Oct 29 12:40:27 2015 +0100
Committer: Oliver B. Fischer <ple...@apache.org>
Committed: Tue Sep 27 00:18:31 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/tamaya/events/FrozenConfiguration.java  | 7 +++++--
 src/test/java/org/apache/tamaya/events/TestConfigView.java  | 9 ++++++---
 2 files changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/4b183ab9/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java 
b/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
index 14c9b30..313f569 100644
--- a/src/main/java/org/apache/tamaya/events/FrozenConfiguration.java
+++ b/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-extensions/blob/4b183ab9/src/test/java/org/apache/tamaya/events/TestConfigView.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/tamaya/events/TestConfigView.java 
b/src/test/java/org/apache/tamaya/events/TestConfigView.java
index 379f660..4f2227a 100644
--- a/src/test/java/org/apache/tamaya/events/TestConfigView.java
+++ b/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;
             }

Reply via email to