TAMAYA-355  Enable mapping of lists and arrays into internal datastructures, 
reestablished conversion/filter context (backward compatible).


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

Branch: refs/heads/master
Commit: bd9901b09edc043d6664b3bcf01721666d6db8bc
Parents: 67ffcbf
Author: Anatole Tresch <[email protected]>
Authored: Sat Nov 3 21:27:55 2018 +0100
Committer: Anatole Tresch <[email protected]>
Committed: Sat Nov 3 21:27:55 2018 +0100

----------------------------------------------------------------------
 .../apache/tamaya/spi/ConversionContext.java    | 37 +---------
 .../org/apache/tamaya/spi/FilterContext.java    | 36 ---------
 .../apache/tamaya/spi/PropertyConverter.java    |  9 ++-
 .../org/apache/tamaya/spi/PropertyFilter.java   |  7 +-
 .../tamaya/spi/ConversionContextTest.java       |  2 +-
 .../apache/tamaya/spi/FilterContextTest.java    | 48 ++++++------
 .../converters/BigDecimalConverter.java         |  7 +-
 .../converters/BigIntegerConverter.java         |  5 +-
 .../internal/converters/BooleanConverter.java   |  7 +-
 .../core/internal/converters/ByteConverter.java |  5 +-
 .../core/internal/converters/CharConverter.java |  5 +-
 .../internal/converters/ClassConverter.java     |  5 +-
 .../core/internal/converters/ConvertQuery.java  | 25 +++----
 .../internal/converters/CurrencyConverter.java  |  6 +-
 .../internal/converters/DoubleConverter.java    |  8 +-
 .../internal/converters/DurationConverter.java  |  7 +-
 .../core/internal/converters/FileConverter.java |  5 +-
 .../internal/converters/FloatConverter.java     |  9 +--
 .../internal/converters/InstantConverter.java   |  5 +-
 .../internal/converters/IntegerConverter.java   |  5 +-
 .../internal/converters/LocalDateConverter.java |  5 +-
 .../converters/LocalDateTimeConverter.java      |  5 +-
 .../internal/converters/LocalTimeConverter.java |  5 +-
 .../core/internal/converters/LongConverter.java |  5 +-
 .../internal/converters/NumberConverter.java    |  9 +--
 .../converters/OffsetDateTimeConverter.java     |  5 +-
 .../converters/OffsetTimeConverter.java         |  5 +-
 .../internal/converters/OptionalConverter.java  | 10 +--
 .../core/internal/converters/PathConverter.java |  5 +-
 .../internal/converters/ShortConverter.java     |  5 +-
 .../internal/converters/SupplierConverter.java  |  6 +-
 .../core/internal/converters/URIConverter.java  |  5 +-
 .../core/internal/converters/URLConverter.java  |  5 +-
 .../tamaya/core/ConfigurationBuilderTest.java   | 28 +++----
 .../core/ConfigurationContextBuilderTest.java   | 28 +++----
 .../tamaya/core/internal/CTestConverter.java    |  3 +-
 .../internal/CoreConfigurationBuilderTest.java  | 12 +--
 .../core/internal/CoreConfigurationTest.java    | 10 +--
 .../converters/BigDecimalConverterTest.java     |  8 +-
 .../converters/BigIntegerConverterTest.java     |  8 +-
 .../converters/BooleanConverterTest.java        |  6 +-
 .../internal/converters/ByteConverterTest.java  |  6 +-
 .../internal/converters/CharConverterTest.java  |  6 +-
 .../internal/converters/ClassConverterTest.java | 18 ++---
 .../converters/CurrencyConverterTest.java       |  6 +-
 .../converters/DoubleConverterTest.java         |  6 +-
 .../converters/DurationConverterTest.java       | 18 ++---
 .../internal/converters/FileConverterTest.java  |  8 +-
 .../internal/converters/FloatConverterTest.java |  6 +-
 .../converters/InstantConverterTest.java        | 10 +--
 .../converters/IntegerConverterTest.java        |  6 +-
 .../converters/LocalDateConverterTest.java      | 10 +--
 .../converters/LocalDateTimeConverterTest.java  | 10 +--
 .../converters/LocalTimeConverterTest.java      | 10 +--
 .../internal/converters/LongConverterTest.java  |  6 +-
 .../converters/NumberConverterTest.java         |  6 +-
 .../converters/OffsetDateTimeConverterTest.java | 10 +--
 .../converters/OffsetTimeConverterTest.java     | 10 +--
 .../converters/OptionalConverterTest.java       | 22 ++++--
 .../internal/converters/PathConverterTest.java  | 16 ++--
 .../internal/converters/ShortConverterTest.java |  6 +-
 .../converters/SupplierConverterTest.java       | 15 ++--
 .../internal/converters/URIConverterTest.java   | 20 ++---
 .../internal/converters/URLConverterTest.java   | 20 ++---
 .../core/testdata/TestPropertyFilter.java       |  3 +-
 .../testdata/TestRemovingPropertyFilter.java    |  3 +-
 .../tamaya/spisupport/DefaultConfiguration.java | 35 ++++-----
 .../apache/tamaya/spisupport/EnumConverter.java |  5 +-
 .../spisupport/PropertyConverterManager.java    |  9 +--
 .../tamaya/spisupport/PropertyFiltering.java    | 77 ++++++++------------
 .../tamaya/spisupport/RegexPropertyFilter.java  |  3 +-
 .../tamaya/spisupport/CTestConverter.java       |  3 +-
 .../DefaultConfigurationBuilderTest.java        | 18 ++---
 .../DefaultConfigurationContextBuilderTest.java | 36 ++++-----
 .../tamaya/spisupport/EnumConverterTest.java    | 10 +--
 .../tamaya/spisupport/IntegerTestConverter.java |  5 +-
 .../tamaya/spisupport/MockedPropertyFilter.java |  3 +-
 .../PropertyConverterManagerTest.java           | 19 +++--
 .../PropertyFilterComparatorTest.java           |  5 +-
 .../spisupport/RegexPropertyFilterTest.java     | 30 ++++----
 .../propertysource/EnumConverterTest.java       |  8 +-
 81 files changed, 418 insertions(+), 526 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/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 3631d5a..d4c2601 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
@@ -32,6 +32,7 @@ import java.util.function.Consumer;
  */
 public class ConversionContext {
 
+    public static final ConversionContext EMPTY = new 
ConversionContext.Builder(TypeLiteral.of(String.class)).build();
     private final Configuration configuration;
     private final String key;
     private final List<PropertyValue> values;
@@ -39,42 +40,6 @@ public class ConversionContext {
     private final AnnotatedElement annotatedElement;
     private final Set<String> supportedFormats = new LinkedHashSet<>();
 
-    private static ThreadLocal<ConversionContext> CONTEXT = new 
ThreadLocal<>();
-
-    /**
-     * Access the current conversion context.
-     * @return the current conversion context, or null.
-     */
-    public static ConversionContext current(){
-        return CONTEXT.get();
-    }
-
-    /**
-     * If the current conversoin context is available, this performs the given 
action.
-     * @param action the consumer to be executed, not null.
-     */
-    public static void doOptional(Consumer<ConversionContext> action){
-        ConversionContext ctx = current();
-        if(ctx!=null){
-            action.accept(ctx);
-        }
-    }
-
-    /**
-     * Sets the current conversion context.
-     * @param context the conversion context, not null.
-     */
-    public static void set(ConversionContext context){
-        CONTEXT.set(context);
-    }
-
-    /**
-     * Removes the current conversion context.
-     */
-    public static void reset(){
-        CONTEXT.remove();
-    }
-
     /**
      * Private constructor used from builder.
      * @param builder the builder, not {@code null}.

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/api/src/main/java/org/apache/tamaya/spi/FilterContext.java
----------------------------------------------------------------------
diff --git a/code/api/src/main/java/org/apache/tamaya/spi/FilterContext.java 
b/code/api/src/main/java/org/apache/tamaya/spi/FilterContext.java
index 49af39d..e120744 100644
--- a/code/api/src/main/java/org/apache/tamaya/spi/FilterContext.java
+++ b/code/api/src/main/java/org/apache/tamaya/spi/FilterContext.java
@@ -38,42 +38,6 @@ public class FilterContext {
     @Experimental
     private boolean singlePropertyScoped;
 
-    private static ThreadLocal<FilterContext> CONTEXT = new ThreadLocal<>();
-
-    /**
-     * Access the current filter context.
-     * @return the current filter context, or null.
-     */
-    public static FilterContext get(){
-        return CONTEXT.get();
-    }
-
-    /**
-     * If the current conversoin context is available, this performs the given 
action.
-     * @param action the consumer to be executed, not null.
-     */
-    public static void doOptional(Consumer<FilterContext> action){
-        FilterContext ctx = get();
-        if(ctx!=null){
-            action.accept(ctx);
-        }
-    }
-
-    /**
-     * Sets the current filter context.
-     * @param context the FilterContext, not null.
-     */
-    public static void set(FilterContext context){
-        CONTEXT.set(context);
-    }
-
-    /**
-     * Removes the current filter context.
-     */
-    public static void reset(){
-        CONTEXT.remove();
-    }
-
 
     /**
      * Creates a new FilterContext, for filtering of a multi createValue access

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java
----------------------------------------------------------------------
diff --git 
a/code/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java 
b/code/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java
index c1f93f4..187724e 100644
--- a/code/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java
+++ b/code/api/src/main/java/org/apache/tamaya/spi/PropertyConverter.java
@@ -32,15 +32,16 @@ public interface PropertyConverter<T>{
 
     /**
      * Convert the given configuration keys from its String representation 
into the required target type.
-     * Additional context can be obtained from {@link ConversionContext}, this 
also allows to add a createList
+     * Additional data can be obtained from {@link ConversionContext}, which 
also allows to add a list
      * of supported formats, which is very handy in case a
-     * createValue could not be converted. This createList of supported 
formats can then shown to the user to give some hints
-     * how a createValue could be configured.
+     * value could not be converted. This list of supported formats can then 
shown to the user to give some hints
+     * how a value could be configured.
      *
      * @param value configuration key that needs to be converted
+     * @param context the converter context, not null.
      * @return the converted createValue
      * @see ConversionContext
      */
-    T convert(String value);
+    T convert(String value, ConversionContext context);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/api/src/main/java/org/apache/tamaya/spi/PropertyFilter.java
----------------------------------------------------------------------
diff --git a/code/api/src/main/java/org/apache/tamaya/spi/PropertyFilter.java 
b/code/api/src/main/java/org/apache/tamaya/spi/PropertyFilter.java
index c157069..8ea422c 100644
--- a/code/api/src/main/java/org/apache/tamaya/spi/PropertyFilter.java
+++ b/code/api/src/main/java/org/apache/tamaya/spi/PropertyFilter.java
@@ -29,7 +29,7 @@ package org.apache.tamaya.spi;
 public interface PropertyFilter{
 
     /**
-     * <p>Maps the current {@code valueToBeFiltered} createValue to a new 
createValue. The resulting createValue will be used as the result
+     * <p>Maps the current {@code value} to a new value. The resulting value 
will be used as the result
      * passed to the user.</p>
      * <p>If a filter is currently not available, it should just pass the 
input map to the method's
      * output.</p>
@@ -40,11 +40,12 @@ public interface PropertyFilter{
      *     <li>reentrant</li>
      *     <li>thread-safe</li>
      * </ul>
-     * @param value the createValue to be filtered, which also can be {@code 
null} if removed by another filter.
+     * @param value the value to be filtered, which also can be {@code null} 
if removed by another filter.
+     * @param context the filter context, not null.
      * @return the filtered createValue, or {@code null} if the createValue 
should be removed alltogether.
      * @see PropertyValue
      * @see FilterContext
      */
-    PropertyValue filterProperty(PropertyValue value);
+    PropertyValue filterProperty(PropertyValue value, FilterContext context);
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/api/src/test/java/org/apache/tamaya/spi/ConversionContextTest.java
----------------------------------------------------------------------
diff --git 
a/code/api/src/test/java/org/apache/tamaya/spi/ConversionContextTest.java 
b/code/api/src/test/java/org/apache/tamaya/spi/ConversionContextTest.java
index ad0ff95..a6a777f 100644
--- a/code/api/src/test/java/org/apache/tamaya/spi/ConversionContextTest.java
+++ b/code/api/src/test/java/org/apache/tamaya/spi/ConversionContextTest.java
@@ -122,7 +122,7 @@ public class ConversionContextTest {
     private static final class MyConverter implements 
PropertyConverter<InetAddress> {
 
         @Override
-        public InetAddress convert(String value) {
+        public InetAddress convert(String value, ConversionContext context) {
             return null;
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/api/src/test/java/org/apache/tamaya/spi/FilterContextTest.java
----------------------------------------------------------------------
diff --git 
a/code/api/src/test/java/org/apache/tamaya/spi/FilterContextTest.java 
b/code/api/src/test/java/org/apache/tamaya/spi/FilterContextTest.java
index 3ed57f3..1b74f0b 100644
--- a/code/api/src/test/java/org/apache/tamaya/spi/FilterContextTest.java
+++ b/code/api/src/test/java/org/apache/tamaya/spi/FilterContextTest.java
@@ -37,30 +37,30 @@ import static org.junit.Assert.assertNotNull;
  */
 public class FilterContextTest {
 
-    @Test
-    public void setNullContext() {
-        FilterContext.set(null);
-    }
-
-    @Test
-    public void setGetContext() {
-        PropertyValue val = PropertyValue.of("getKey", "v", "");
-        FilterContext ctx = new FilterContext(val,
-                new HashMap<String,PropertyValue>(), 
ConfigurationContext.EMPTY);
-        FilterContext.set(ctx);
-        assertEquals(ctx, FilterContext.get());
-    }
-
-    @Test
-    public void resetContext() {
-        PropertyValue val = PropertyValue.of("getKey", "v", "");
-        FilterContext ctx = new FilterContext(val,
-                new HashMap<String,PropertyValue>(), 
ConfigurationContext.EMPTY);
-        FilterContext.set(ctx);
-        assertNotNull(FilterContext.get());
-        FilterContext.reset();
-        assertNull(FilterContext.get());
-    }
+//    @Test
+//    public void setNullContext() {
+//        FilterContext.set(null);
+//    }
+//
+//    @Test
+//    public void setGetContext() {
+//        PropertyValue val = PropertyValue.of("getKey", "v", "");
+//        FilterContext ctx = new FilterContext(val,
+//                new HashMap<String,PropertyValue>(), 
ConfigurationContext.EMPTY);
+//        FilterContext.set(ctx);
+//        assertEquals(ctx, FilterContext.get());
+//    }
+//
+//    @Test
+//    public void resetContext() {
+//        PropertyValue val = PropertyValue.of("getKey", "v", "");
+//        FilterContext ctx = new FilterContext(val,
+//                new HashMap<String,PropertyValue>(), 
ConfigurationContext.EMPTY);
+//        FilterContext.set(ctx);
+//        assertNotNull(FilterContext.get());
+//        FilterContext.reset();
+//        assertNull(FilterContext.get());
+//    }
 
     @Test(expected = NullPointerException.class)
     public void constructorRequiresNonNullPropertyValueTwoParameterVariant1() {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
index 89370b0..2086d74 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigDecimalConverter.java
@@ -47,16 +47,15 @@ public class BigDecimalConverter implements 
PropertyConverter<BigDecimal> {
     private final BigIntegerConverter integerConverter = new 
BigIntegerConverter();
 
     @Override
-    public BigDecimal convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "<bigDecimal> -> new 
BigDecimal(String)"));
+    public BigDecimal convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "<bigDecimal> -> new 
BigDecimal(String)");
 
         String trimmed = Objects.requireNonNull(value).trim();
         try{
             return new BigDecimal(trimmed);
         } catch(Exception e){
             LOG.finest("Parsing BigDecimal failed, trying BigInteger for: " + 
value);
-            BigInteger bigInt = integerConverter.convert(value);
+            BigInteger bigInt = integerConverter.convert(value, ctx);
             if(bigInt!=null){
                 return new BigDecimal(bigInt);
             }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
index 6717c9d..2dac3c0 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BigIntegerConverter.java
@@ -45,9 +45,8 @@ public class BigIntegerConverter implements 
PropertyConverter<BigInteger> {
     private static final Logger LOG = 
Logger.getLogger(BigIntegerConverter.class.getName());
 
     @Override
-    public BigInteger convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "[-]0X.. (hex)", "[-]0x... 
(hex)", "<bigint> -> new BigInteger(bigint)"));
+    public BigInteger convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "[-]0X.. (hex)", "[-]0x... (hex)", 
"<bigint> -> new BigInteger(bigint)");
         String trimmed = Objects.requireNonNull(value).trim();
         if(trimmed.startsWith("0x") || trimmed.startsWith("0X")){
             LOG.finest("Parsing Hex createValue to BigInteger: " + value);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
index f692718..a34acaa 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/BooleanConverter.java
@@ -35,9 +35,10 @@ public class BooleanConverter implements 
PropertyConverter<Boolean> {
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public Boolean convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "yes (ignore case)", "y 
(ignore case)", "true (ignore case)", "t (ignore case)", "1", "no (ignore 
case)", "n (ignore case)", "false (ignore case)", "f (ignore case)", "0"));
+    public Boolean convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "yes (ignore case)", "y (ignore 
case)",
+                "true (ignore case)", "t (ignore case)", "1", "no (ignore 
case)", "n (ignore case)",
+                "false (ignore case)", "f (ignore case)", "0");
         String ignoreCaseValue = Objects.requireNonNull(value)
                                         .trim()
                                         .toLowerCase(Locale.ENGLISH);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
index c6aa6be..8a7e740 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ByteConverter.java
@@ -50,9 +50,8 @@ public class ByteConverter implements PropertyConverter<Byte>{
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public Byte convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(),"<byte>", "MIN_VALUE", 
"MIN", "MAX_VALUE", "MAX"));
+    public Byte convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(),"<byte>", "MIN_VALUE", "MIN", 
"MAX_VALUE", "MAX");
         String trimmed = Objects.requireNonNull(value).trim();
         switch(trimmed.toUpperCase(Locale.ENGLISH)){
             case "MIN_VALUE":

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
index 65ad2ae..52467ed 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CharConverter.java
@@ -41,9 +41,8 @@ public class CharConverter implements 
PropertyConverter<Character>{
     private static final Logger LOG = 
Logger.getLogger(CharConverter.class.getName());
 
     @Override
-    public Character convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(),"\\'<char>\\'", "<char>", 
"<charNum>"));
+    public Character convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(),"\\'<char>\\'", "<char>", 
"<charNum>");
         String trimmed = Objects.requireNonNull(value).trim();
         if(trimmed.isEmpty()){
             return null;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ClassConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ClassConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ClassConverter.java
index 0f6011c..65cb7b9 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ClassConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ClassConverter.java
@@ -39,12 +39,11 @@ public class ClassConverter implements 
PropertyConverter<Class<?>>{
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public Class<?> convert(String value) {
+    public Class<?> convert(String value, ConversionContext ctx) {
         if(value==null){
             return null;
         }
-        ConversionContext.doOptional(ctx ->
-                
ctx.addSupportedFormats(getClass(),"<fullyQualifiedClassName>"));
+        ctx.addSupportedFormats(getClass(),"<fullyQualifiedClassName>");
         String trimmed = Objects.requireNonNull(value).trim();
         try{
             return Class.forName(trimmed, false, 
Thread.currentThread().getContextClassLoader());

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java
index a570685..a999112 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ConvertQuery.java
@@ -50,23 +50,18 @@ final class ConvertQuery<T> implements ConfigQuery<T> {
         List<PropertyConverter<T>> converters = 
config.getContext().getPropertyConverters(type);
         ConversionContext context = new 
ConversionContext.Builder(type).setConfiguration(config)
                 .setKey(ConvertQuery.class.getName()).build();
-        try {
-            ConversionContext.set(context);
-            for (PropertyConverter<?> conv : converters) {
-                try {
-                    if (conv instanceof OptionalConverter) {
-                        continue;
-                    }
-                    T result = (T) conv.convert(rawValue);
-                    if (result != null) {
-                        return result;
-                    }
-                } catch (Exception e) {
-                    LOG.log(Level.FINEST, e, () -> "Converter " + conv + " 
failed to convert to " + type);
+        for (PropertyConverter<?> conv : converters) {
+            try {
+                if (conv instanceof OptionalConverter) {
+                    continue;
                 }
+                T result = (T) conv.convert(rawValue, context);
+                if (result != null) {
+                    return result;
+                }
+            } catch (Exception e) {
+                LOG.log(Level.FINEST, e, () -> "Converter " + conv + " failed 
to convert to " + type);
             }
-        }finally{
-            ConversionContext.reset();
         }
         return null;
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
index a85f9fd..d7b9343 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/CurrencyConverter.java
@@ -44,9 +44,9 @@ public class CurrencyConverter implements 
PropertyConverter<Currency> {
     private static final Logger LOG = 
Logger.getLogger(CurrencyConverter.class.getName());
 
     @Override
-    public Currency convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "<currencyCode>, using 
Locale.ENGLISH", "<numericValue>", "<locale>"));
+    public Currency convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "<currencyCode>, using 
Locale.ENGLISH", "<numericValue>",
+                "<locale>");
         String trimmed = Objects.requireNonNull(value).trim();
         try {
             return Currency.getInstance(trimmed.toUpperCase(Locale.ENGLISH));

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
index 9b19078..f92fe72 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
@@ -52,9 +52,9 @@ public class DoubleConverter implements 
PropertyConverter<Double> {
     private final LongConverter integerConverter = new LongConverter();
 
     @Override
-    public Double convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "<double>", "MIN", 
"MIN_VALUE", "MAX", "MAX_VALUE", "POSITIVE_INFINITY", "NEGATIVE_INFINITY", 
"NAN"));
+    public Double convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "<double>", "MIN", "MIN_VALUE", 
"MAX", "MAX_VALUE",
+                "POSITIVE_INFINITY", "NEGATIVE_INFINITY", "NAN");
         String trimmed = Objects.requireNonNull(value).trim();
         switch (trimmed.toUpperCase(Locale.ENGLISH)) {
             case "POSITIVE_INFINITY":
@@ -77,7 +77,7 @@ public class DoubleConverter implements 
PropertyConverter<Double> {
                     LOG.finest("Parsing of double as floating number failed, 
trying parsing integral" +
                             " number/hex instead...");
                 }
-                Long val = integerConverter.convert(trimmed);
+                Long val = integerConverter.convert(trimmed, ctx);
                 if(val!=null){
                     return val.doubleValue();
                 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DurationConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DurationConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DurationConverter.java
index cfbae48..9fb5d7b 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DurationConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/DurationConverter.java
@@ -37,10 +37,9 @@ public class DurationConverter implements 
PropertyConverter<Duration> {
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public Duration convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(),
-                Duration.of(1234, ChronoUnit.SECONDS).toString()));
+    public Duration convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(),
+                Duration.of(1234, ChronoUnit.SECONDS).toString());
         try {
             return Duration.parse(value);
         }catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
index ba2392a..b911e31 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FileConverter.java
@@ -36,12 +36,11 @@ public class FileConverter implements 
PropertyConverter<File> {
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public File convert(String value) {
+    public File convert(String value, ConversionContext ctx) {
         if(value==null || value.isEmpty()){
             return null;
         }
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(),"<File>"));
+        ctx.addSupportedFormats(getClass(),"<File>");
         String trimmed = Objects.requireNonNull(value).trim();
         try {
             return new File(trimmed);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
index e47b497..eaae2b4 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
@@ -52,10 +52,9 @@ public class FloatConverter implements 
PropertyConverter<Float> {
     private final IntegerConverter integerConverter = new IntegerConverter();
 
     @Override
-    public Float convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "<float>", "MIN", 
"MIN_VALUE", "MAX", "MAX_VALUE",
-                        "POSITIVE_INFINITY", "NEGATIVE_INFINITY", "NAN"));
+    public Float convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "<float>", "MIN", "MIN_VALUE", 
"MAX", "MAX_VALUE",
+                        "POSITIVE_INFINITY", "NEGATIVE_INFINITY", "NAN");
         String trimmed = Objects.requireNonNull(value).trim();
         switch(trimmed.toUpperCase(Locale.ENGLISH)){
             case "POSITIVE_INFINITY":
@@ -78,7 +77,7 @@ public class FloatConverter implements 
PropertyConverter<Float> {
                     LOG.finest("Parsing of float as floating number failed, 
trying parsing integral" +
                             " number/hex instead...");
                 }
-                Integer val = integerConverter.convert(trimmed);
+                Integer val = integerConverter.convert(trimmed, ctx);
                 if(val!=null) {
                     return val.floatValue();
                 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
index cfa1103..f7eafa7 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/InstantConverter.java
@@ -36,9 +36,8 @@ public class InstantConverter implements 
PropertyConverter<Instant> {
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public Instant convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), Instant.now().toString()));
+    public Instant convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), Instant.now().toString());
         try{
             return Instant.parse(value);
         }catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
index a128c97..1fa1124 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
@@ -52,9 +52,8 @@ public class IntegerConverter implements 
PropertyConverter<Integer>{
     private static final Logger LOG = 
Logger.getLogger(IntegerConverter.class.getName());
 
     @Override
-    public Integer convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "<int>", "MIN_VALUE", 
"MIN", "MAX_VALUE", "MAX"));
+    public Integer convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "<int>", "MIN_VALUE", "MIN", 
"MAX_VALUE", "MAX");
         String trimmed = Objects.requireNonNull(value).trim();
         switch(trimmed.toUpperCase(Locale.ENGLISH)){
             case "MIN_VALUE":

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateConverter.java
index 1acb83e..04d107a 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateConverter.java
@@ -36,9 +36,8 @@ public class LocalDateConverter implements 
PropertyConverter<LocalDate> {
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public LocalDate convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), 
LocalDate.now().toString()));
+    public LocalDate convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), LocalDate.now().toString());
         try{
             return LocalDate.parse(value);
         }catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateTimeConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateTimeConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateTimeConverter.java
index bc64d6b..4a46b6d 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateTimeConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalDateTimeConverter.java
@@ -36,9 +36,8 @@ public class LocalDateTimeConverter implements 
PropertyConverter<LocalDateTime>
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public LocalDateTime convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), 
LocalDateTime.now().toString()));
+    public LocalDateTime convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), LocalDateTime.now().toString());
         try{
             return LocalDateTime.parse(value);
         }catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
index ab10e04..17f9779 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
@@ -36,9 +36,8 @@ public class LocalTimeConverter implements 
PropertyConverter<LocalTime> {
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public LocalTime convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), 
LocalTime.now().toString()));
+    public LocalTime convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), LocalTime.now().toString());
         try{
             return LocalTime.parse(value);
         }catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
index 1bdad71..429065c 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
@@ -49,9 +49,8 @@ public class LongConverter implements PropertyConverter<Long>{
     private static final Logger LOGGER = 
Logger.getLogger(LongConverter.class.getName());
 
     @Override
-    public Long convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "<long>", "MIN", 
"MIN_VALUE", "MAX", "MAX_VALUE"));
+    public Long convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "<long>", "MIN", "MIN_VALUE", 
"MAX", "MAX_VALUE");
 
         String trimmed = Objects.requireNonNull(value).trim();
             switch (trimmed.toUpperCase(Locale.ENGLISH)) {

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
index 82e4486..a02d0cf 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/NumberConverter.java
@@ -45,10 +45,9 @@ public class NumberConverter implements 
PropertyConverter<Number>{
     private final LongConverter longConverter = new LongConverter();
 
     @Override
-    public Number convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "<double>, <long>", "0x 
(hex)", "0X... (hex)", "POSITIVE_INFINITY",
-                "NEGATIVE_INFINITY", "NAN"));
+    public Number convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "<double>, <long>", "0x (hex)", 
"0X... (hex)", "POSITIVE_INFINITY",
+                "NEGATIVE_INFINITY", "NAN");
 
         String trimmed = Objects.requireNonNull(value).trim();
         switch(trimmed.toUpperCase(Locale.ENGLISH)) {
@@ -59,7 +58,7 @@ public class NumberConverter implements 
PropertyConverter<Number>{
             case "NAN":
                 return Double.NaN;
             default:
-                Long lVal = longConverter.convert(trimmed);
+                Long lVal = longConverter.convert(trimmed, ctx);
                 if (lVal != null) {
                     return lVal;
                 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
index acdd0d5..141ef2b 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetDateTimeConverter.java
@@ -36,9 +36,8 @@ public class OffsetDateTimeConverter implements 
PropertyConverter<OffsetDateTime
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public OffsetDateTime convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), 
OffsetDateTime.now().toString()));
+    public OffsetDateTime convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), OffsetDateTime.now().toString());
         try{
             return OffsetDateTime.parse(value);
         }catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
index 74e9847..19d6ddd 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OffsetTimeConverter.java
@@ -36,9 +36,8 @@ public class OffsetTimeConverter implements 
PropertyConverter<OffsetTime> {
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public OffsetTime convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), 
OffsetTime.now().toString()));
+    public OffsetTime convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), OffsetTime.now().toString());
         try{
             return OffsetTime.parse(value);
         }catch(Exception e){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
index 0be4bef..f37d2f9 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/OptionalConverter.java
@@ -36,22 +36,18 @@ import java.util.Optional;
 public class OptionalConverter implements PropertyConverter<Optional> {
 
     @Override
-    public Optional convert(String value) {
+    public Optional convert(String value, ConversionContext ctx) {
         if(value==null){
             return Optional.empty();
         }
         try{
-            ConversionContext context = ConversionContext.current();
-            if(context==null){
-                throw new IllegalStateException("Cannot convert optional since 
target type is unknown.");
-            }
-            Type targetType = context.getTargetType().getType();
+            Type targetType = ctx.getTargetType().getType();
             ParameterizedType pt = (ParameterizedType) targetType;
             if(String.class.equals(pt.getActualTypeArguments()[0])){
                 return Optional.of(value);
             }
             ConvertQuery converter = new ConvertQuery(value, 
TypeLiteral.of(pt.getActualTypeArguments()[0]));
-            return 
Optional.ofNullable(context.getConfiguration().query(converter));
+            return 
Optional.ofNullable(ctx.getConfiguration().query(converter));
         }catch(Exception e){
             throw new ConfigException("Error evaluating config createValue.", 
e);
         }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
index f05fe0d..046dafd 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/PathConverter.java
@@ -37,12 +37,11 @@ public class PathConverter implements 
PropertyConverter<Path> {
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public Path convert(String value) {
+    public Path convert(String value, ConversionContext ctx) {
         if(value==null || value.isEmpty()){
             return null;
         }
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(),"<File>"));
+        ctx.addSupportedFormats(getClass(),"<File>");
         String trimmed = Objects.requireNonNull(value).trim();
         try {
             return FileSystems.getDefault().getPath(value);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
index d111c31..ca945f5 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
@@ -50,9 +50,8 @@ public class ShortConverter implements 
PropertyConverter<Short>{
     private static final Logger LOG = 
Logger.getLogger(ShortConverter.class.getName());
 
     @Override
-    public Short convert(String value) {
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "short", "MIN", 
"MIN_VALUE", "MAX", "MAX_VALUE"));
+    public Short convert(String value, ConversionContext ctx) {
+        ctx.addSupportedFormats(getClass(), "short", "MIN", "MIN_VALUE", 
"MAX", "MAX_VALUE");
         String trimmed = Objects.requireNonNull(value).trim();
         switch(trimmed.toUpperCase(Locale.ENGLISH)){
             case "MIN_VALUE":

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java
index 268eb63..d4cd196 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/SupplierConverter.java
@@ -39,13 +39,9 @@ public class SupplierConverter implements 
PropertyConverter<Supplier> {
     private static final Logger LOG = 
Logger.getLogger(SupplierConverter.class.getName());
 
     @Override
-    public Supplier convert(String value) {
+    public Supplier convert(String value, ConversionContext context) {
         return () -> {
             try{
-                ConversionContext context = ConversionContext.current();
-                if(context==null){
-                    throw new IllegalStateException("Cannot convert optional 
since target type is unknown.");
-                }
                 Type targetType = context.getTargetType().getType();
                 ParameterizedType pt = (ParameterizedType) targetType;
                 if(String.class.equals(pt.getActualTypeArguments()[0])){

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URIConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URIConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URIConverter.java
index b3ce5b4..3cd37c6 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URIConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URIConverter.java
@@ -36,12 +36,11 @@ public class URIConverter implements PropertyConverter<URI> 
{
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public URI convert(String value) {
+    public URI convert(String value, ConversionContext ctx) {
         if(value==null || value.isEmpty()){
             return null;
         }
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(), "<uri> -> new URI(uri)"));
+        ctx.addSupportedFormats(getClass(), "<uri> -> new URI(uri)");
         String trimmed = Objects.requireNonNull(value).trim();
         try {
             return new URI(trimmed);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URLConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URLConverter.java
 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URLConverter.java
index 1396b39..683f2a7 100644
--- 
a/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URLConverter.java
+++ 
b/code/core/src/main/java/org/apache/tamaya/core/internal/converters/URLConverter.java
@@ -36,12 +36,11 @@ public class URLConverter implements PropertyConverter<URL> 
{
     private final Logger LOG = Logger.getLogger(getClass().getName());
 
     @Override
-    public URL convert(String value) {
+    public URL convert(String value, ConversionContext ctx) {
         if(value==null || value.isEmpty()){
             return null;
         }
-        ConversionContext.doOptional(ctx ->
-                ctx.addSupportedFormats(getClass(),"<URL>"));
+        ctx.addSupportedFormats(getClass(),"<URL>");
         String trimmed = Objects.requireNonNull(value).trim();
         try {
             return new URL(trimmed);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/ConfigurationBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationBuilderTest.java 
b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationBuilderTest.java
index 839af9c..b8cea0d 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationBuilderTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationBuilderTest.java
@@ -127,8 +127,8 @@ public class ConfigurationBuilderTest {
 
     @Test
     public void addPropertyFilters_Array() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder();
         b.addPropertyFilters(filter1, filter2);
         Configuration cfg = b.build();
@@ -144,8 +144,8 @@ public class ConfigurationBuilderTest {
 
     @Test
     public void addPropertyFilters_Collection() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder();
         b.addPropertyFilters(Arrays.asList(new PropertyFilter[]{filter1, 
filter2}));
         Configuration cfg = b.build();
@@ -161,8 +161,8 @@ public class ConfigurationBuilderTest {
 
     @Test
     public void removePropertyFilters_Array() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder()
                 .addPropertyFilters(filter1, filter2);
         Configuration cfg = b.build();
@@ -182,8 +182,8 @@ public class ConfigurationBuilderTest {
 
     @Test
     public void removePropertyFilters_Collection() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder()
                 .addPropertyFilters(Arrays.asList(new 
PropertyFilter[]{filter1, filter2}));
         Configuration cfg = b.build();
@@ -204,7 +204,7 @@ public class ConfigurationBuilderTest {
     @Test
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void addPropertyConverters_Array() throws Exception {
-               PropertyConverter converter = (value) -> value.toLowerCase();
+               PropertyConverter converter = (value, ctx) -> 
value.toLowerCase();
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         Configuration cfg = b.build();
@@ -220,7 +220,7 @@ public class ConfigurationBuilderTest {
     @Test
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void addPropertyConverters_Collection() throws Exception {
-               PropertyConverter converter = (value) -> value.toLowerCase();
+               PropertyConverter converter = (value, ctx) -> 
value.toLowerCase();
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class),
                         Arrays.<PropertyConverter<Object>>asList(new 
PropertyConverter[]{converter}));
@@ -238,7 +238,7 @@ public class ConfigurationBuilderTest {
     @Test
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void removePropertyConverters_Array() throws Exception {
-        PropertyConverter converter = (value) -> value.toLowerCase();
+        PropertyConverter converter = (value, ctx) -> value.toLowerCase();
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         Configuration cfg = b.build();
@@ -258,7 +258,7 @@ public class ConfigurationBuilderTest {
     @SuppressWarnings({ "rawtypes", "unchecked" })
        @Test
     public void removePropertyConverters_Collection() throws Exception {
-        PropertyConverter converter = (value) -> value.toLowerCase();
+        PropertyConverter converter = (value, ctx) -> value.toLowerCase();
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
Arrays.<PropertyConverter<Object>>asList(new PropertyConverter[]{converter}));
         Configuration cfg = b.build();
@@ -396,7 +396,7 @@ public class ConfigurationBuilderTest {
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder();
         PropertyFilter[] propertyFilters = new PropertyFilter[10];
         for(int i=0;i<propertyFilters.length;i++){
-            propertyFilters[i] = (value) -> value.setValue(toString() + " - ");
+            propertyFilters[i] = (value, ctx) -> value.setValue(toString() + " 
- ");
         }
         b.addPropertyFilters(propertyFilters);
         Comparator<PropertyFilter> pfComp = (o1, o2) -> 
o1.toString().compareTo(o2.toString());
@@ -421,7 +421,7 @@ public class ConfigurationBuilderTest {
     @Test
     public void testRemoveAllFilters() throws Exception {
         ConfigurationBuilder b = 
ConfigurationProvider.getConfigurationBuilder();
-        b.addPropertyFilters((value) -> value.setValue(toString() + " - "));
+        b.addPropertyFilters((value, ctx) -> value.setValue(toString() + " - 
"));
         assertThat(b.getPropertyFilters().isEmpty()).isFalse();
         b.removePropertyFilters(b.getPropertyFilters());
         assertThat(b.getPropertyFilters().isEmpty()).isTrue();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
index 12c089b..611f337 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/ConfigurationContextBuilderTest.java
@@ -128,8 +128,8 @@ public class ConfigurationContextBuilderTest {
 
     @Test
     public void addPropertyFilters_Array() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder();
         b.addPropertyFilters(filter1, filter2);
         ConfigurationContext ctx = b.build();
@@ -144,8 +144,8 @@ public class ConfigurationContextBuilderTest {
 
     @Test
     public void addPropertyFilters_Collection() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder();
         b.addPropertyFilters(Arrays.asList(new PropertyFilter[]{filter1, 
filter2}));
         ConfigurationContext ctx = b.build();
@@ -160,8 +160,8 @@ public class ConfigurationContextBuilderTest {
 
     @Test
     public void removePropertyFilters_Array() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder()
                 .addPropertyFilters(filter1, filter2);
         ConfigurationContext ctx = b.build();
@@ -179,8 +179,8 @@ public class ConfigurationContextBuilderTest {
 
     @Test
     public void removePropertyFilters_Collection() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder()
                 .addPropertyFilters(Arrays.asList(new 
PropertyFilter[]{filter1, filter2}));
         ConfigurationContext ctx = b.build();
@@ -199,7 +199,7 @@ public class ConfigurationContextBuilderTest {
     @Test
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void addPropertyConverters_Array() throws Exception {
-               PropertyConverter converter = (value) -> value.toLowerCase();
+               PropertyConverter converter = (value, ctx) -> 
value.toLowerCase();
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         ConfigurationContext ctx = b.build();
@@ -214,7 +214,7 @@ public class ConfigurationContextBuilderTest {
     @Test
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void addPropertyConverters_Collection() throws Exception {
-               PropertyConverter converter = (value) -> value.toLowerCase();
+               PropertyConverter converter = (value, ctx) -> 
value.toLowerCase();
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class),
                         Arrays.<PropertyConverter<Object>>asList(new 
PropertyConverter[]{converter}));
@@ -231,7 +231,7 @@ public class ConfigurationContextBuilderTest {
     @Test
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void removePropertyConverters_Array() throws Exception {
-        PropertyConverter converter = (value) -> value.toLowerCase();
+        PropertyConverter converter = (value, ctx) -> value.toLowerCase();
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         ConfigurationContext ctx = b.build();
@@ -248,7 +248,7 @@ public class ConfigurationContextBuilderTest {
     @SuppressWarnings({ "rawtypes", "unchecked" })
        @Test
     public void removePropertyConverters_Collection() throws Exception {
-        PropertyConverter converter = (value) -> value.toLowerCase();
+        PropertyConverter converter = (value, ctx) -> value.toLowerCase();
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
Arrays.<PropertyConverter<Object>>asList(new PropertyConverter[]{converter}));
         ConfigurationContext ctx = b.build();
@@ -383,7 +383,7 @@ public class ConfigurationContextBuilderTest {
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder();
         PropertyFilter[] propertyFilters = new PropertyFilter[10];
         for(int i=0;i<propertyFilters.length;i++){
-            propertyFilters[i] = (value) -> value.setValue(toString() + " - ");
+            propertyFilters[i] = (value, ctx) -> value.setValue(toString() + " 
- ");
         }
         b.addPropertyFilters(propertyFilters);
         Comparator<PropertyFilter> pfComp = (o1, o2) -> 
o1.toString().compareTo(o2.toString());
@@ -407,7 +407,7 @@ public class ConfigurationContextBuilderTest {
     @Test
     public void testRemoveAllFilters() throws Exception {
         ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder();
-        b.addPropertyFilters((value) -> value.setValue(toString() + " - "));
+        b.addPropertyFilters((value, ctx) -> value.setValue(toString() + " - 
"));
         assertThat(b.getPropertyFilters().isEmpty()).isFalse();
         b.removePropertyFilters(b.getPropertyFilters());
         assertThat(b.getPropertyFilters().isEmpty()).isTrue();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java 
b/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java
index 62b8c9d..1cf9cc9 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/CTestConverter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.tamaya.core.internal;
 
+import org.apache.tamaya.spi.ConversionContext;
 import org.apache.tamaya.spi.PropertyConverter;
 
 /**
@@ -25,7 +26,7 @@ import org.apache.tamaya.spi.PropertyConverter;
  */
 public class CTestConverter implements PropertyConverter<C>{
     @Override
-    public C convert(String value) {
+    public C convert(String value, ConversionContext ctx) {
         return new C(value);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationBuilderTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationBuilderTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationBuilderTest.java
index 8dabcfd..bb96089 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationBuilderTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationBuilderTest.java
@@ -95,8 +95,8 @@ public class CoreConfigurationBuilderTest {
 
     @Test
     public void addPropertyFilters_Array() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         CoreConfigurationBuilder b = new CoreConfigurationBuilder();
         b.addPropertyFilters(filter1, filter2);
         Configuration cfg = b.build();
@@ -112,8 +112,8 @@ public class CoreConfigurationBuilderTest {
 
     @Test
     public void removePropertyFilters_Array() throws Exception {
-        PropertyFilter filter1 = (value) -> value;
-        PropertyFilter filter2 = (value) -> value;
+        PropertyFilter filter1 = (value, ctx) -> value;
+        PropertyFilter filter2 = (value, ctx) -> value;
         ConfigurationBuilder b = new CoreConfigurationBuilder()
                 .addPropertyFilters(filter1, filter2);
         Configuration cfg = b.build();
@@ -134,7 +134,7 @@ public class CoreConfigurationBuilderTest {
     @Test
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void addPropertyConverter() throws Exception {
-               PropertyConverter converter = (value) -> value.toLowerCase();
+               PropertyConverter converter = (value, ctx) -> 
value.toLowerCase();
                ConfigurationBuilder b = new CoreConfigurationBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         Configuration cfg = b.build();
@@ -150,7 +150,7 @@ public class CoreConfigurationBuilderTest {
     @Test
     @SuppressWarnings({ "rawtypes", "unchecked" })
     public void removePropertyConverters_Array() throws Exception {
-        PropertyConverter converter = (value) -> value.toLowerCase();
+        PropertyConverter converter = (value, ctx) -> value.toLowerCase();
         ConfigurationBuilder b = new CoreConfigurationBuilder()
                 .addPropertyConverters(TypeLiteral.of(String.class), 
converter);
         Configuration cfg = b.build();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationTest.java
index 291bc46..4f19f07 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/CoreConfigurationTest.java
@@ -87,7 +87,7 @@ public class CoreConfigurationTest {
         Configuration cfg = new CoreConfigurationBuilder().build();
         PropertyConverter testConverter = new PropertyConverter() {
             @Override
-            public Object convert(String value) {
+            public Object convert(String value, ConversionContext ctx) {
                 return "";
             }
         };
@@ -101,7 +101,7 @@ public class CoreConfigurationTest {
         Configuration cfg = new CoreConfigurationBuilder().build();
         PropertyConverter testConverter = new PropertyConverter() {
             @Override
-            public Object convert(String value) {
+            public Object convert(String value, ConversionContext ctx) {
                 return "";
             }
         };
@@ -111,7 +111,7 @@ public class CoreConfigurationTest {
         
assertThat(cfg.getContext().getPropertyConverters().get(TypeLiteral.of(String.class)).contains(testConverter)).isTrue();
         testConverter = new PropertyConverter() {
             @Override
-            public Object convert(String value) {
+            public Object convert(String value, ConversionContext ctx) {
                 return Integer.valueOf(5);
             }
         };
@@ -125,7 +125,7 @@ public class CoreConfigurationTest {
         Configuration cfg = new CoreConfigurationBuilder().build();
         PropertyConverter testConverter = new PropertyConverter() {
             @Override
-            public Object convert(String value) {
+            public Object convert(String value, ConversionContext ctx) {
                 return "";
             }
         };
@@ -144,7 +144,7 @@ public class CoreConfigurationTest {
         PropertyFilter testFilter = new PropertyFilter() {
 
             @Override
-            public PropertyValue filterProperty(PropertyValue value) {
+            public PropertyValue filterProperty(PropertyValue value, 
FilterContext ctx) {
                 return value;
             }
         };

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
index 3269c1c..40b3aca 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
@@ -119,7 +119,7 @@ public class BigDecimalConverterTest {
                ConversionContext context = mock(ConversionContext.class);
 
                BigDecimalConverter converter = new BigDecimalConverter();
-               BigDecimal value = converter.convert("");
+               BigDecimal value = converter.convert("", context);
 
                assertThat(value).isNull();
        }
@@ -127,10 +127,10 @@ public class BigDecimalConverterTest {
        @Test
        public void callToConvertAddsMoreSupportedFormatsToTheContext() throws 
Exception {
                ConversionContext context = mock(ConversionContext.class);
-               ConversionContext.set(context);
+
                BigDecimalConverter converter = new BigDecimalConverter();
-               BigDecimal value = converter.convert("");
-               ConversionContext.reset();
+               BigDecimal value = converter.convert("", context);
+
                assertThat(value).isNull();
                verify(context).addSupportedFormats(BigDecimalConverter.class, 
"<bigDecimal> -> new BigDecimal(String)");
        }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigIntegerConverterTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigIntegerConverterTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigIntegerConverterTest.java
index bf7a2d9..95f6104 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigIntegerConverterTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BigIntegerConverterTest.java
@@ -133,7 +133,7 @@ public class BigIntegerConverterTest {
         ConversionContext context = mock(ConversionContext.class);
 
         BigIntegerConverter converter = new BigIntegerConverter();
-        BigInteger value = converter.convert("");
+        BigInteger value = converter.convert("", context);
 
         assertThat(value).isNull();
     }
@@ -141,10 +141,10 @@ public class BigIntegerConverterTest {
     @Test
     public void callToConvertAddsMoreSupportedFormatsToTheContext() throws 
Exception {
         ConversionContext context = new 
ConversionContext.Builder(TypeLiteral.of(BigInteger.class)).build();
-        ConversionContext.set(context);
+
         BigIntegerConverter converter = new BigIntegerConverter();
-        BigInteger value = converter.convert("");
-        ConversionContext.reset();
+        BigInteger value = converter.convert("", context);
+
         assertThat(value).isNull();
         assertThat(context.getSupportedFormats().contains("<bigint> -> new 
BigInteger(bigint) (BigIntegerConverter)")).isTrue();
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java
index dc5b40a..647a80b 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/BooleanConverterTest.java
@@ -133,10 +133,10 @@ public class BooleanConverterTest {
     @Test
     public void callToConvertAddsMoreSupportedFormatsToTheContext() throws 
Exception {
         ConversionContext context = new 
ConversionContext.Builder(TypeLiteral.of(Boolean.class)).build();
-        ConversionContext.set(context);
+
         BooleanConverter converter = new BooleanConverter();
-        converter.convert("");
-        ConversionContext.reset();
+        converter.convert("", context);
+
         assertThat(context.getSupportedFormats().contains("true (ignore case) 
(BooleanConverter)")).isTrue();
         assertThat(context.getSupportedFormats().contains("false (ignore case) 
(BooleanConverter)")).isTrue();
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
index a730e07..a7923b9 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
@@ -96,10 +96,10 @@ public class ByteConverterTest {
     @Test
     public void callToConvertAddsMoreSupportedFormatsToTheContext() throws 
Exception {
         ConversionContext context = new 
ConversionContext.Builder(TypeLiteral.of(Byte.class)).build();
-        ConversionContext.set(context);
+
         ByteConverter converter = new ByteConverter();
-        converter.convert("");
-        ConversionContext.reset();
+        converter.convert("", context);
+
         assertThat(context.getSupportedFormats().contains("<byte> 
(ByteConverter)")).isTrue();
         assertThat(context.getSupportedFormats().contains("MIN_VALUE 
(ByteConverter)")).isTrue();
         assertThat(context.getSupportedFormats().contains("MAX_VALUE 
(ByteConverter)")).isTrue();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java
index ef3f020..790b245 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CharConverterTest.java
@@ -150,10 +150,10 @@ public class CharConverterTest {
     @Test
     public void callToConvertAddsMoreSupportedFormatsToTheContext() throws 
Exception {
         ConversionContext context = new 
ConversionContext.Builder(TypeLiteral.of(Character.class)).build();
-        ConversionContext.set(context);
+
         CharConverter converter = new CharConverter();
-        converter.convert("");
-        ConversionContext.reset();
+        converter.convert("", context);
+
         assertThat(context.getSupportedFormats().contains("<char> 
(CharConverter)")).isTrue();
         assertThat(context.getSupportedFormats().contains("\\'<char>\\' 
(CharConverter)")).isTrue();
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ClassConverterTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ClassConverterTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ClassConverterTest.java
index d52ffdb..6797dfc 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ClassConverterTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/ClassConverterTest.java
@@ -37,41 +37,41 @@ public class ClassConverterTest {
     @Test
     public void testConvert_Class() throws Exception {
         ClassConverter converter = new ClassConverter();
-        
assertThat(BigDecimal.class).isEqualTo(converter.convert("java.math.BigDecimal"));
+        
assertThat(BigDecimal.class).isEqualTo(converter.convert("java.math.BigDecimal",
 context));
     }
 
     @Test
     public void testConvert_Class_WithSpaces() throws Exception {
         ClassConverter converter = new ClassConverter();
-         assertThat(BigDecimal.class).isEqualTo(converter.convert("  
java.math.BigDecimal\t"));
+         assertThat(BigDecimal.class).isEqualTo(converter.convert("  
java.math.BigDecimal\t", context));
     }
 
     @Test
     public void testConvert_Class_WithSpacesBefore() throws Exception {
         ClassConverter converter = new ClassConverter();
-        assertThat(BigDecimal.class).isEqualTo(converter.convert("  
java.math.BigDecimal"));
+        assertThat(BigDecimal.class).isEqualTo(converter.convert("  
java.math.BigDecimal", context));
     }
 
     @Test
     public void testConvert_Class_WithSpacesAfter() throws Exception {
         ClassConverter converter = new ClassConverter();
-        
assertThat(BigDecimal.class).isEqualTo(converter.convert("java.math.BigDecimal  
"));
+        
assertThat(BigDecimal.class).isEqualTo(converter.convert("java.math.BigDecimal  
", context));
     }
 
     @Test
     public void testConvert_NotPresent() throws Exception {
         ClassConverter converter = new ClassConverter();
-        assertThat(converter.convert("")).isNull();
-        assertThat(converter.convert(null)).isNull();
+        assertThat(converter.convert("", context)).isNull();
+        assertThat(converter.convert(null, context)).isNull();
     }
 
     @Test
     public void callToConvertAddsMoreSupportedFormatsToTheContext() throws 
Exception {
         ConversionContext context = new 
ConversionContext.Builder(TypeLiteral.of(Class.class)).build();
-        ConversionContext.set(context);
+
         ClassConverter converter = new ClassConverter();
-        converter.convert("");
-        ConversionContext.reset();
+        converter.convert("", context);
+
         
assertThat(context.getSupportedFormats().contains("<fullyQualifiedClassName> 
(ClassConverter)")).isTrue();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java
index b8cde19..533a197 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/CurrencyConverterTest.java
@@ -187,10 +187,10 @@ public class CurrencyConverterTest {
     @Test
     public void callToConvertAddsMoreSupportedFormatsToTheContext() throws 
Exception {
         ConversionContext context = new 
ConversionContext.Builder(TypeLiteral.of(Currency.class)).build();
-        ConversionContext.set(context);
+
         CurrencyConverter converter = new CurrencyConverter();
-        converter.convert("");
-        ConversionContext.reset();
+        converter.convert("", context);
+
 
         assertThat(context.getSupportedFormats().contains("<numericValue> 
(CurrencyConverter)")).isTrue();
         assertThat(context.getSupportedFormats().contains("<locale> 
(CurrencyConverter)")).isTrue();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/bd9901b0/code/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
----------------------------------------------------------------------
diff --git 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
index 0160360..2384c3a 100644
--- 
a/code/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
+++ 
b/code/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
@@ -183,10 +183,10 @@ public class DoubleConverterTest {
     @Test
     public void callToConvertAddsMoreSupportedFormatsToTheContext() throws 
Exception {
         ConversionContext context = new 
ConversionContext.Builder(TypeLiteral.of(Double.class)).build();
-        ConversionContext.set(context);
+
         DoubleConverter converter = new DoubleConverter();
-        converter.convert("");
-        ConversionContext.reset();
+        converter.convert("", context);
+
 
         assertThat(context.getSupportedFormats().contains("<double> 
(DoubleConverter)")).isTrue();
         assertThat(context.getSupportedFormats().contains("MIN_VALUE 
(DoubleConverter)")).isTrue();

Reply via email to