Repository: incubator-tamaya
Updated Branches:
  refs/heads/master 44b28c8a9 -> c5415ce48


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
index 1814cba..76e6e32 100644
--- 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
+++ 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/DoubleConverter.java
@@ -20,17 +20,52 @@ package org.apache.tamaya.core.internal.converters;
 
 import org.apache.tamaya.PropertyConverter;
 
+import java.util.Locale;
 import java.util.Objects;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
- * Converter, converting from String to Double.
+ * Converter, converting from String to Double, using the Java number syntax:
+ * (-)?[0-9]*\.[0-9]*. In case of error the value given also is tried being 
parsed as integral number using
+ * {@link org.apache.tamaya.core.internal.converters.LongConverter}.
  */
 public class DoubleConverter implements PropertyConverter<Double>{
+    /** The logger. */
+    private static final Logger LOG = 
Logger.getLogger(DoubleConverter.class.getName());
+    /** The converter used, when floating point parse failed. */
+    private LongConverter integerConverter = new LongConverter();
 
     @Override
     public Double convert(String value) {
         String trimmed = Objects.requireNonNull(value).trim();
-        //X TODO not good enough as this is Locale dependent!
-        return Double.valueOf(trimmed);
+        switch(trimmed.toUpperCase(Locale.ENGLISH)){
+            case "POSITIVE_INFINITY":
+                return Double.POSITIVE_INFINITY;
+            case "NEGATIVE_INFINITY":
+                return Double.NEGATIVE_INFINITY;
+            case "NAN":
+                return Double.NaN;
+            case "MIN_VALUE":
+            case "MIN":
+                return Double.MIN_VALUE;
+            case "MAX_VALUE":
+            case "MAX":
+                return Double.MAX_VALUE;
+            default:
+                try {
+                    return Double.valueOf(trimmed);
+                } catch(Exception e){
+                    // OK perhaps we have an integral number that must be 
converted to the double type...
+                    LOG.log(Level.FINER, e, () -> "Parsing of double as 
floating number failed, trying parsing integral" +
+                            " number instead...");
+                }
+                try{
+                    return integerConverter.convert(trimmed).doubleValue();
+                } catch(Exception e){
+                    LOG.log(Level.INFO, e, () -> "Unexpected error from 
LongConverter for " + trimmed);
+                    return null;
+                }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
index 955197b..5f97eca 100644
--- 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
+++ 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/FloatConverter.java
@@ -20,17 +20,56 @@ package org.apache.tamaya.core.internal.converters;
 
 import org.apache.tamaya.PropertyConverter;
 
+import java.util.Locale;
 import java.util.Objects;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 /**
- * Converter, converting from String to Float.
+ * Converter, converting from String to Float, using the Java number syntax:
+ * (-)?[0-9]*\.[0-9]*. In case of error the value given also is tried being 
parsed as integral number using
+ * {@link org.apache.tamaya.core.internal.converters.LongConverter}.
  */
-public class FloatConverter implements PropertyConverter<Float>{
+public class FloatConverter implements PropertyConverter<Float> {
+    /**
+     * The logger.
+     */
+    private static final Logger LOG = 
Logger.getLogger(DoubleConverter.class.getName());
+    /**
+     * The converter used, when floating point parse failed.
+     */
+    private IntegerConverter integerConverter = new IntegerConverter();
 
     @Override
     public Float convert(String value) {
         String trimmed = Objects.requireNonNull(value).trim();
-        //X TODO not good enough as this is Locale dependent!
-        return Float.valueOf(trimmed);
+        switch(trimmed.toUpperCase(Locale.ENGLISH)){
+            case "POSITIVE_INFINITY":
+                return Float.POSITIVE_INFINITY;
+            case "NEGATIVE_INFINITY":
+                return Float.NEGATIVE_INFINITY;
+            case "NAN":
+                return Float.NaN;
+            case "MIN_VALUE":
+            case "MIN":
+                return Float.MIN_VALUE;
+            case "MAX_VALUE":
+            case "MAX":
+                return Float.MAX_VALUE;
+            default:
+                try {
+                    return Float.valueOf(trimmed);
+                } catch(Exception e){
+                    // OK perhaps we have an integral number that must be 
converted to the double type...
+                    LOG.log(Level.FINER, e, () -> "Parsing of double as 
floating number failed, trying parsing integral" +
+                            " number instead...");
+                }
+                try{
+                    return integerConverter.convert(trimmed).floatValue();
+                } catch(Exception e){
+                    LOG.log(Level.INFO, e, () -> "Unexpected error from 
LongConverter for " + trimmed);
+                    return null;
+                }
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
index 923b132..10bed68 100644
--- 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
+++ 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/IntegerConverter.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.core.internal.converters;
 
 import org.apache.tamaya.PropertyConverter;
 
+import java.util.Locale;
 import java.util.Objects;
 
 /**
@@ -30,6 +31,15 @@ public class IntegerConverter implements 
PropertyConverter<Integer>{
     @Override
     public Integer convert(String value) {
         String trimmed = Objects.requireNonNull(value).trim();
-        return Integer.decode(trimmed);
+        switch(trimmed.toUpperCase(Locale.ENGLISH)){
+            case "MIN_VALUE":
+            case "MIN":
+                return Integer.MIN_VALUE;
+            case "MAX_VALUE":
+            case "MAX":
+                return Integer.MAX_VALUE;
+            default:
+                return Integer.decode(trimmed);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
index d46fcc0..5858546 100644
--- 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
+++ 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LocalTimeConverter.java
@@ -33,4 +33,10 @@ public class LocalTimeConverter implements 
PropertyConverter<LocalTime>{
         String trimmed = Objects.requireNonNull(value).trim();
         return LocalTime.parse(trimmed);
     }
+
+    public static void main(String... args){
+        LocalTime.parse("10:00");
+        LocalTime.parse("10:00:23");
+        LocalTime.parse("10");
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
index 67434d2..91af6fe 100644
--- 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
+++ 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/LongConverter.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.core.internal.converters;
 
 import org.apache.tamaya.PropertyConverter;
 
+import java.util.Locale;
 import java.util.Objects;
 
 /**
@@ -30,6 +31,15 @@ public class LongConverter implements 
PropertyConverter<Long>{
     @Override
     public Long convert(String value) {
         String trimmed = Objects.requireNonNull(value).trim();
-        return Long.decode(trimmed);
+        switch(trimmed.toUpperCase(Locale.ENGLISH)){
+            case "MIN_VALUE":
+            case "MIN":
+                return Long.MIN_VALUE;
+            case "MAX_VALUE":
+            case "MAX":
+                return Long.MAX_VALUE;
+            default:
+                return Long.decode(trimmed);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
index e41c1d6..f9ae732 100644
--- 
a/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
+++ 
b/java8/core/src/main/java/org/apache/tamaya/core/internal/converters/ShortConverter.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.core.internal.converters;
 
 import org.apache.tamaya.PropertyConverter;
 
+import java.util.Locale;
 import java.util.Objects;
 
 /**
@@ -30,6 +31,15 @@ public class ShortConverter implements 
PropertyConverter<Short>{
     @Override
     public Short convert(String value) {
         String trimmed = Objects.requireNonNull(value).trim();
-        return Short.decode(trimmed);
+        switch(trimmed.toUpperCase(Locale.ENGLISH)){
+            case "MIN_VALUE":
+            case "MIN":
+                return Short.MIN_VALUE;
+            case "MAX_VALUE":
+            case "MAX":
+                return Short.MAX_VALUE;
+            default:
+                return Short.decode(trimmed);
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
new file mode 100644
index 0000000..9c4449a
--- /dev/null
+++ 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/BigDecimalConverterTest.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.core.internal.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import java.math.BigDecimal;
+import java.util.Optional;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the default converter for bytes.
+ */
+public class BigDecimalConverterTest {
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_BigDecimal_Decimal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<BigDecimal> valueRead = 
config.getOptional("tests.converter.bd.decimal", BigDecimal.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get(), new BigDecimal(101));
+    }
+
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_BigDecimal_Hex() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<BigDecimal> valueRead = 
config.getOptional("tests.converter.bd.hex.lowerX", BigDecimal.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get(), new BigDecimal("47"));
+        valueRead = config.getOptional("tests.converter.bd.hex.upperX", 
BigDecimal.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get(), new BigDecimal("63"));
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_NotPresent() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<BigDecimal> valueRead = 
config.getOptional("tests.converter.bd.foo", BigDecimal.class);
+        assertFalse(valueRead.isPresent());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_BigDecimal_BigValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<BigDecimal> valueRead = 
config.getOptional("tests.converter.bd.big", BigDecimal.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(new 
BigDecimal("101666666666666662333337263723628763821638923628193612983618293628763"),
+                valueRead.get());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_BigDecimal_BigFloatValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<BigDecimal> valueRead = 
config.getOptional("tests.converter.bd.bigFloat", BigDecimal.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(new 
BigDecimal("1016666666666666623333372637236287638216389293628763.1016666666666666623333372"
 +
+                "63723628763821638923628193612983618293628763"), 
valueRead.get());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
index e82b355..3d3fe3e 100644
--- 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
+++ 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ByteConverterTest.java
@@ -84,4 +84,30 @@ public class ByteConverterTest {
         Optional<Byte> valueRead = 
config.getOptional("tests.converter.byte.foo", Byte.class);
         assertFalse(valueRead.isPresent());
     }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Byte_MinValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Byte> valueRead = 
config.getOptional("tests.converter.byte.min", Byte.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Byte.MIN_VALUE, valueRead.get().byteValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Byte_MaxValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Byte> valueRead = 
config.getOptional("tests.converter.byte.max", Byte.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Byte.MAX_VALUE, valueRead.get().byteValue());
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java
 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java
index 3dac272..812eb8c 100644
--- 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java
+++ 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ConverterTestsPropertySource.java
@@ -44,6 +44,10 @@ public class ConverterTestsPropertySource implements 
PropertySource{
                 return "0x2F";
             case "tests.converter.byte.hex.upperX":
                 return "0X3F";
+            case "tests.converter.byte.min":
+                return "min";
+            case "tests.converter.byte.max":
+                return "MAX_Value";
             // Boolean
             case "tests.converter.boolean.y1":
                 return "y";
@@ -85,6 +89,7 @@ public class ConverterTestsPropertySource implements 
PropertySource{
                 return "f";
             case "tests.converter.boolean.f2":
                 return "F";
+            // Character
             case "tests.converter.char.f":
                 return "f";
             case "tests.converter.char.d":
@@ -97,6 +102,7 @@ public class ConverterTestsPropertySource implements 
PropertySource{
                 return "   f      ";
             case "tests.converter.char.f-numeric":
                 return "101";
+            // currency
             case "tests.converter.currency.code1":
                 return "CHF";
             case "tests.converter.currency.code2":
@@ -123,21 +129,112 @@ public class ConverterTestsPropertySource implements 
PropertySource{
                 return "DE  ";
             case "tests.converter.currency.code-locale4":
                 return "  DE  ";
+            //double
+            case "tests.converter.double.decimal":
+                return "1.23456789";
+            case "tests.converter.double.decimalNegative":
+                return "-1.23456789";
+            case "tests.converter.double.integer":
+                return "  100";
+            case "tests.converter.double.hex1":
+                return " 0XFF";
+            case "tests.converter.double.hex2":
+                return "-0xFF  ";
+            case "tests.converter.double.hex3":
+                return "#FF";
+            case "tests.converter.double.octal":
+                return "0013";
+            case "tests.converter.double.min":
+                return "MIN_Value";
+            case "tests.converter.double.max":
+                return "max";
+            case "tests.converter.double.nan":
+                return "NAN";
+            case "tests.converter.double.pi":
+                return "positive_infinity";
+            case "tests.converter.double.ni":
+                return "Negative_Infinity";
+            //float
+            case "tests.converter.float.decimal":
+                return "1.23456789";
+            case "tests.converter.float.decimalNegative":
+                return "-1.23456789";
+            case "tests.converter.float.integer":
+                return "  100";
+            case "tests.converter.float.hex1":
+                return " 0XFF";
+            case "tests.converter.float.hex2":
+                return "-0xFF  ";
+            case "tests.converter.float.hex3":
+                return "#FF";
+            case "tests.converter.float.octal":
+                return "0013";
+            case "tests.converter.float.min":
+                return "MIN_Value";
+            case "tests.converter.float.max":
+                return "max";
+            case "tests.converter.float.nan":
+                return "NAN";
+            case "tests.converter.float.pi":
+                return "positive_infinity";
+            case "tests.converter.float.ni":
+                return "Negative_Infinity";
+            // Integer
+            case "tests.converter.integer.decimal":
+                return "101";
+            case "tests.converter.integer.octal":
+                return "02";
+            case "tests.converter.integer.hex.lowerX":
+                return "0x2F";
+            case "tests.converter.integer.hex.upperX":
+                return "0X3F";
+            case "tests.converter.integer.min":
+                return "min";
+            case "tests.converter.integer.max":
+                return "MAX_Value";
+            // Long
+            case "tests.converter.long.decimal":
+                return "101";
+            case "tests.converter.long.octal":
+                return "02";
+            case "tests.converter.long.hex.lowerX":
+                return "0x2F";
+            case "tests.converter.long.hex.upperX":
+                return "0X3F";
+            case "tests.converter.long.min":
+                return "min";
+            case "tests.converter.long.max":
+                return "MAX_Value";
+            // Short
+            case "tests.converter.short.decimal":
+                return "101";
+            case "tests.converter.short.octal":
+                return "02";
+            case "tests.converter.short.hex.lowerX":
+                return "0x2F";
+            case "tests.converter.short.hex.upperX":
+                return "0X3F";
+            case "tests.converter.short.min":
+                return "min";
+            case "tests.converter.short.max":
+                return "MAX_Value";
+            // BigDecimal
+            case "tests.converter.bd.decimal":
+                return "101";
+            case "tests.converter.bd.float":
+                return "101.36438746";
+            case "tests.converter.bd.big":
+                return 
"101666666666666662333337263723628763821638923628193612983618293628763";
+            case "tests.converter.bd.bigFloat":
+                return 
"1016666666666666623333372637236287638216389293628763.101666666666666662333337263723628763821638923628193612983618293628763";
+            case "tests.converter.bd.hex.lowerX":
+                return "0x2F";
+            case "tests.converter.bd.hex.upperX":
+                return "0X3F";
         }
         return null;
     }
 
-    /*
-    case "yes":
-            case "y":
-            case "true":
-            case "t":
-                return Boolean.TRUE;
-            case "no":
-            case "n":
-            case "false":
-            case "f":
-     */
     @Override
     public Map<String, String> getProperties() {
         return Collections.emptyMap();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
new file mode 100644
index 0000000..86ee5dd
--- /dev/null
+++ 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/DoubleConverterTest.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.core.internal.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import java.util.Optional;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the default converter for bytes.
+ */
+public class DoubleConverterTest {
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_Decimal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.decimal", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().doubleValue(), 1.23456789, 0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_DecimalNegative() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.decimalNegative", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().doubleValue(), -1.23456789, 0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_Integer() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.integer", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().doubleValue(),100d, 0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_Hex1() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.hex1", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().doubleValue(),255d, 0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_Hex2() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.hex2", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().doubleValue(),-255d, 0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_Hex3() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.hex3", Double.class);
+        assertTrue(valueRead.isPresent());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_MinValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.min", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Double.MIN_VALUE, valueRead.get().doubleValue(),0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_MaxValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.max", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Double.MAX_VALUE, valueRead.get().doubleValue(),0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_NaNValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.nan", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Double.NaN, valueRead.get().doubleValue(),0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_PositiveInfinityValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.pi", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Double.POSITIVE_INFINITY, 
valueRead.get().doubleValue(),0.0d);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Double_NegativeInfinityValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Double> valueRead = 
config.getOptional("tests.converter.double.ni", Double.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Double.NEGATIVE_INFINITY, 
valueRead.get().doubleValue(),0.0d);
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/FloatConverterTest.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/FloatConverterTest.java
 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/FloatConverterTest.java
new file mode 100644
index 0000000..68c12e1
--- /dev/null
+++ 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/FloatConverterTest.java
@@ -0,0 +1,178 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.core.internal.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import java.util.Optional;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests the default converter for bytes.
+ */
+public class FloatConverterTest {
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_Decimal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.decimal", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().floatValue(), 1.23456789f, 0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_DecimalNegative() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.decimalNegative", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().floatValue(), -1.23456789f, 0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_Integer() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.integer", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().floatValue(),100f, 0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_Hex1() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.hex1", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().floatValue(),255f, 0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_Hex2() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.hex2", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().floatValue(),-255f, 0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_Hex3() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.hex3", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().floatValue(),255f, 0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_MinValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.min", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Float.MIN_VALUE, valueRead.get().floatValue(),0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_MaxValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.max", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Float.MAX_VALUE, valueRead.get().floatValue(),0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_NaNValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.nan", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Float.NaN, valueRead.get().floatValue(),0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_PositiveInfinityValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.pi", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Float.POSITIVE_INFINITY, 
valueRead.get().floatValue(),0.0f);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Float_NegativeInfinityValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Float> valueRead = 
config.getOptional("tests.converter.float.ni", Float.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Float.NEGATIVE_INFINITY, 
valueRead.get().floatValue(),0.0f);
+    }
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/IntegerConverterTest.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/IntegerConverterTest.java
 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/IntegerConverterTest.java
new file mode 100644
index 0000000..f22f531
--- /dev/null
+++ 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/IntegerConverterTest.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.core.internal.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import java.util.Optional;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the default converter for Integers.
+ */
+public class IntegerConverterTest {
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Integer_Decimal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Integer> valueRead = 
config.getOptional("tests.converter.integer.decimal", Integer.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 101);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Integer_Octal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Integer> valueRead = 
config.getOptional("tests.converter.integer.octal", Integer.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 
Integer.decode("02").intValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Integer_Hex() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Integer> valueRead = 
config.getOptional("tests.converter.integer.hex.lowerX", Integer.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 
Integer.decode("0x2F").intValue());
+        valueRead = config.getOptional("tests.converter.integer.hex.upperX", 
Integer.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 
Integer.decode("0X3F").intValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_NotPresent() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Integer> valueRead = 
config.getOptional("tests.converter.integer.foo", Integer.class);
+        assertFalse(valueRead.isPresent());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Integer_MinValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Integer> valueRead = 
config.getOptional("tests.converter.integer.min", Integer.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Integer.MIN_VALUE, valueRead.get().intValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Integer_MaxValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Integer> valueRead = 
config.getOptional("tests.converter.integer.max", Integer.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Integer.MAX_VALUE, valueRead.get().intValue());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/LongConverterTest.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/LongConverterTest.java
 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/LongConverterTest.java
new file mode 100644
index 0000000..c54f784
--- /dev/null
+++ 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/LongConverterTest.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.core.internal.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import java.util.Optional;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the default converter for Longs.
+ */
+public class LongConverterTest {
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Long_Decimal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Long> valueRead = 
config.getOptional("tests.converter.long.decimal", Long.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 101);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Long_Octal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Long> valueRead = 
config.getOptional("tests.converter.long.octal", Long.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), Long.decode("02").intValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Long_Hex() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Long> valueRead = 
config.getOptional("tests.converter.long.hex.lowerX", Long.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 
Long.decode("0x2F").intValue());
+        valueRead = config.getOptional("tests.converter.long.hex.upperX", 
Long.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 
Long.decode("0X3F").intValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_NotPresent() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Long> valueRead = 
config.getOptional("tests.converter.long.foo", Long.class);
+        assertFalse(valueRead.isPresent());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Long_MinValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Long> valueRead = 
config.getOptional("tests.converter.long.min", Long.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Long.MIN_VALUE, valueRead.get().longValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Long_MaxValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Long> valueRead = 
config.getOptional("tests.converter.long.max", Long.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Long.MAX_VALUE, valueRead.get().longValue());
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/c5415ce4/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ShortConverterTest.java
----------------------------------------------------------------------
diff --git 
a/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ShortConverterTest.java
 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ShortConverterTest.java
new file mode 100644
index 0000000..0db16ab
--- /dev/null
+++ 
b/java8/core/src/test/java/org/apache/tamaya/core/internal/converters/ShortConverterTest.java
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.core.internal.converters;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+import org.junit.Test;
+
+import java.util.Optional;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the default converter for Shorts.
+ */
+public class ShortConverterTest {
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Short_Decimal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Short> valueRead = 
config.getOptional("tests.converter.short.decimal", Short.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 101);
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Short_Octal() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Short> valueRead = 
config.getOptional("tests.converter.short.octal", Short.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 
Short.decode("02").intValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Short_Hex() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Short> valueRead = 
config.getOptional("tests.converter.short.hex.lowerX", Short.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 
Short.decode("0x2F").intValue());
+        valueRead = config.getOptional("tests.converter.short.hex.upperX", 
Short.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(valueRead.get().intValue(), 
Short.decode("0X3F").intValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link 
org.apache.tamaya.core.internal.converters.ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_NotPresent() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Short> valueRead = 
config.getOptional("tests.converter.short.foo", Short.class);
+        assertFalse(valueRead.isPresent());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Short_MinValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Short> valueRead = 
config.getOptional("tests.converter.short.min", Short.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Short.MIN_VALUE, valueRead.get().intValue());
+    }
+
+    /**
+     * Test conversion. The value are provided by
+     * {@link ConverterTestsPropertySource}.
+     * @throws Exception
+     */
+    @Test
+    public void testConvert_Short_MaxValue() throws Exception {
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Optional<Short> valueRead = 
config.getOptional("tests.converter.short.max", Short.class);
+        assertTrue(valueRead.isPresent());
+        assertEquals(Short.MAX_VALUE, valueRead.get().intValue());
+    }
+}
\ No newline at end of file

Reply via email to