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