TAMAYA-128: Added ConversionContext for supporting more complex conversion 
cases, adapted evaluation of conversion, passing along the finally found key 
value, if any.


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

Branch: refs/heads/master
Commit: ff3f3140c60bac6a4d6c14ea190452b43059eb83
Parents: fad1e9d
Author: Anatole Tresch <anat...@apache.org>
Authored: Thu Oct 29 12:39:53 2015 +0100
Committer: Anatole Tresch <anat...@apache.org>
Committed: Thu Oct 29 12:39:53 2015 +0100

----------------------------------------------------------------------
 .../tamaya/integration/cdi/internal/EnumConverter.java      | 4 +++-
 .../integration/cdi/internal/PropertyConverterManager.java  | 9 +++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/ff3f3140/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/EnumConverter.java
----------------------------------------------------------------------
diff --git 
a/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/EnumConverter.java
 
b/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/EnumConverter.java
index 5b96044..15a5698 100644
--- 
a/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/EnumConverter.java
+++ 
b/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/EnumConverter.java
@@ -19,6 +19,7 @@
 package org.apache.tamaya.integration.cdi.internal;
 
 import org.apache.tamaya.ConfigException;
+import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 import javax.enterprise.inject.Vetoed;
@@ -53,7 +54,8 @@ public class EnumConverter<T> implements PropertyConverter<T> 
{
     }
 
     @Override
-    public T convert(String value) {
+    public T convert(String value, ConversionContext context) {
+        context.addSupportedFormats(getClass(), "<enumValue>");
         try {
             return (T) factory.invoke(null, value);
         } catch (InvocationTargetException | IllegalAccessException e) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/ff3f3140/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/PropertyConverterManager.java
----------------------------------------------------------------------
diff --git 
a/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/PropertyConverterManager.java
 
b/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/PropertyConverterManager.java
index 8a78548..e10b2da 100644
--- 
a/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/PropertyConverterManager.java
+++ 
b/modules/integration/cdi-se/src/main/java/org/apache/tamaya/integration/cdi/internal/PropertyConverterManager.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.integration.cdi.internal;
 
 import org.apache.tamaya.ConfigException;
 import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 import org.apache.tamaya.spi.ServiceContextManager;
 
@@ -349,7 +350,10 @@ public class PropertyConverterManager {
         if (factoryMethod != null) {
             converter = new PropertyConverter<T>() {
                 @Override
-                public T convert(String value) {
+                public T convert(String value, ConversionContext context) {
+                    context.addSupportedFormats(PropertyConverter.class, 
"static T of(String)", "static T valueOf(String)",
+                            "static T getInstance(String)", "static T 
from(String)",
+                            "static T fromString(String)", "static T 
parse(String)");
                     try {
                         if (!Modifier.isStatic(factoryMethod.getModifiers())) {
                             throw new 
ConfigException(factoryMethod.toGenericString() +
@@ -376,7 +380,8 @@ public class PropertyConverterManager {
                 final Constructor<T> constr = 
targetType.getRawType().getDeclaredConstructor(String.class);
                 converter = new PropertyConverter<T>() {
                     @Override
-                    public T convert(String value) {
+                    public T convert(String value, ConversionContext context) {
+                        context.addSupportedFormats(PropertyConverter.class, 
"new T(String)");
                         try {
                             AccessController.doPrivileged(new 
PrivilegedAction<Object>() {
                                 @Override

Reply via email to