http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/581c92e7/modules/functions/src/test/java/org/apache/tamaya/functions/ConfigurationFunctionsTest.java
----------------------------------------------------------------------
diff --git 
a/modules/functions/src/test/java/org/apache/tamaya/functions/ConfigurationFunctionsTest.java
 
b/modules/functions/src/test/java/org/apache/tamaya/functions/ConfigurationFunctionsTest.java
index 99cb944..23a8c00 100644
--- 
a/modules/functions/src/test/java/org/apache/tamaya/functions/ConfigurationFunctionsTest.java
+++ 
b/modules/functions/src/test/java/org/apache/tamaya/functions/ConfigurationFunctionsTest.java
@@ -18,16 +18,14 @@
  */
 package org.apache.tamaya.functions;
 
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
-import org.apache.tamaya.spisupport.propertysource.EnvironmentPropertySource;
-import org.apache.tamaya.spisupport.propertysource.SystemPropertySource;
-import org.apache.tamaya.spi.ConfigurationContextBuilder;
+import org.apache.tamaya.base.configsource.EnvironmentConfigSource;
+import org.apache.tamaya.base.configsource.SystemConfigSource;
 import org.junit.Test;
 
+import javax.config.Config;
+import javax.config.spi.ConfigBuilder;
+import javax.config.spi.ConfigProviderResolver;
 import java.io.PrintStream;
-import java.util.Map;
-import java.util.TreeMap;
 
 import static org.junit.Assert.*;
 
@@ -146,32 +144,32 @@ public class ConfigurationFunctionsTest {
 
     @Test
     public void testEmptyConfiguration() throws Exception {
-        Configuration ps = ConfigurationFunctions.emptyConfiguration();
+        Config ps = ConfigurationFunctions.emptyConfig();
         assertNotNull(ps);
-        assertNotNull(ps.getProperties());
-        assertTrue(ps.getProperties().isEmpty());
+        assertNotNull(ps.getPropertyNames());
+        assertFalse(ps.getPropertyNames().iterator().hasNext());
     }
 
 
     private void testSection(boolean stripKeys){
-        ConfigurationContextBuilder b = 
ConfigurationProvider.getConfigurationContextBuilder();
-        b.addPropertySources(new EnvironmentPropertySource(), new 
SystemPropertySource());
-        Configuration cfg = 
ConfigurationProvider.createConfiguration(b.build()).with(
-                ConfigurationFunctions.section("java.", stripKeys));
+        ConfigBuilder b = ConfigProviderResolver.instance().getBuilder()
+                .withSources(new EnvironmentConfigSource(), new 
SystemConfigSource());
+        Config cfg = ConfigurationFunctions.section("java.", stripKeys)
+            .apply(b.build());
         
System.out.println("*****************************************************");
         System.out.println("stripKeys: " + stripKeys);
         
System.out.println("*****************************************************");
-        dump(cfg.getProperties(), System.out);
+        dump(cfg.getPropertyNames(), cfg, System.out);
         System.out.println();
         System.out.println("Example Metadata:");
-        System.out.println("\tjava.version         :  " + 
cfg.get("java.version"));
-        System.out.println("\tversion                 :  " + 
cfg.get("version"));
+        System.out.println("\tjava.version         :  " + 
cfg.getValue("java.version", String.class));
+        System.out.println("\tversion                 :  " + 
cfg.getValue("version", String.class));
     }
 
-    private void dump(Map<String, String> properties, PrintStream stream) {
+    private void dump(Iterable<String> keys, Config config, PrintStream 
stream) {
         stream.println("FULL DUMP:");
-        for (Map.Entry<String, String> en : new 
TreeMap<>(properties).entrySet()) {
-            stream.println("\t" + en.getKey() + " = " + en.getValue());
+        for (String key : keys) {
+            stream.println("\t" + key + " = " + config.getValue(key, 
String.class));
         }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/581c92e7/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
----------------------------------------------------------------------
diff --git 
a/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
 
b/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
index 6bf97ac..6134144 100644
--- 
a/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
+++ 
b/modules/functions/src/test/java/org/apache/tamaya/functions/EnrichedConfigurationTest.java
@@ -25,13 +25,17 @@ import org.assertj.core.api.ThrowableAssert;
 import org.junit.Ignore;
 import org.junit.Test;
 
-import java.util.HashMap;
-import java.util.Map;
+import javax.config.Config;
+import java.lang.reflect.Type;
+import java.util.*;
 
 import static java.util.Collections.EMPTY_MAP;
 import static 
org.apache.tamaya.functions.MethodNotMockedAnswer.NOT_MOCKED_ANSWER;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
@@ -47,13 +51,13 @@ public class EnrichedConfigurationTest {
 
     @Test
     public void getKeyIsNull() throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
         final EnrichedConfiguration sut = new EnrichedConfiguration(base, 
EMPTY_MAP, true);
 
         assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
             @Override
             public void call() throws Throwable {
-                sut.get(null);
+                sut.getValue(null, String.class);
             }
         }).isInstanceOf(NullPointerException.class)
           .hasMessage("Key must be given.");
@@ -61,9 +65,9 @@ public class EnrichedConfigurationTest {
 
     @Test
     public void getKeyIsNotKownAndHasNotAnOverriderWithOverridingOn() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("b"));
-        doReturn(null).when(base).get(eq("y"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("9")).when(base).getOptionalValue(eq("b"), any());
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("y"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("z0", "0");
@@ -71,7 +75,7 @@ public class EnrichedConfigurationTest {
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.get("y");
+        String result = sut.getValue("y", String.class);
 
         assertThat(result).isNull();
 
@@ -79,9 +83,9 @@ public class EnrichedConfigurationTest {
 
     @Test
     public void getKeyIsNotKownAndHasNotAnOverriderWithOverridingOff() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("b"));
-        doReturn(null).when(base).get(eq("y"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("9")).when(base).getOptionalValue(eq("b"), any());
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("y"), 
eq(String.class));
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("z0", "0");
@@ -89,15 +93,15 @@ public class EnrichedConfigurationTest {
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.get("y");
+        String result = sut.getValue("y", String.class);
 
         assertThat(result).isNull();
     }
 
     @Test
     public void 
getKeyIsNotKownAndHasOverriderAndConfigurationIsOverridingIsOn() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("y"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn("9").when(base).getValue(eq("y"),any() );
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("z0", "0");
@@ -105,15 +109,16 @@ public class EnrichedConfigurationTest {
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.get("b");
+        String result = sut.getValue("b", String.class);
 
         assertThat(result).isNotNull().isEqualTo("1");
     }
 
     @Test
     public void 
getKeyIsNotKownAndHasOverriderAndConfigurationIsOverridingIsOff() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("y"),any() );
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("b"),any() );
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("z0", "0");
@@ -121,15 +126,15 @@ public class EnrichedConfigurationTest {
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.get("b");
+        String result = sut.getValue("b", String.class);
 
         assertThat(result).isNotNull().isEqualTo("1");
     }
 
     @Test
     public void getKeyIsKownAndHasOverriderAndConfigurationIsNotOverriding() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("b"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("9")).when(base).getOptionalValue(eq("b"),any() );
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("z0", "0");
@@ -137,15 +142,15 @@ public class EnrichedConfigurationTest {
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.get("b");
+        String result = sut.getValue("b", String.class);
 
         assertThat(result).isNotNull().isEqualTo("9");
     }
 
     @Test
     public void getKeyIsKownAndHasOverriderAndConfigurationIsOverriding() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("b"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn("9").when(base).getValue(eq("b"),any() );
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("z0", "0");
@@ -153,22 +158,22 @@ public class EnrichedConfigurationTest {
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.get("b");
+        String result = sut.getValue("b", String.class);
 
         assertThat(result).isNotNull().isEqualTo("1");
     }
 
     @Test
     public void getKeyIsKnownAndHasNoOverrider() throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("b"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("9")).when(base).getOptionalValue(eq("b"),any() );
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("z0", "0");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.get("b");
+        String result = sut.getValue("b", String.class);
 
         assertThat(result).isNotNull().isEqualTo("9");
     }
@@ -178,194 +183,156 @@ public class EnrichedConfigurationTest {
      */
 
     @Test
-    public void getOrDefaultStringStringWithKeyIsNull() throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
+    public void getOptionalValueStringWithKeyIsNull() throws Exception {
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
 
         final EnrichedConfiguration sut = new EnrichedConfiguration(base, 
EMPTY_MAP, true);
 
         assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
             @Override
             public void call() throws Throwable {
-                sut.getOrDefault(null, "v");
+                sut.getOptionalValue(null, String.class);
             }
         }).isInstanceOf(NullPointerException.class)
           .hasMessage("Key must be given.");
     }
 
     @Test
-    public void getOrDefaultStringStringWithDefaultValueIsNull() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-
-        final EnrichedConfiguration sut = new EnrichedConfiguration(base, 
EMPTY_MAP, true);
-
-        assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
-            @Override
-            public void call() throws Throwable {
-                sut.getOrDefault("v", null);
-            }
-        }).isInstanceOf(NullPointerException.class)
-          .hasMessage("Default value must be given.");
-    }
-
-    @Test
-    public void getOrDefaultStringStringWithKeyIsOverriddenAndOverridingOn() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("b"));
+    public void getOptionalValueStringWithKeyIsOverriddenAndOverridingOn() 
throws Exception {
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("9")).when(base).getOptionalValue(eq("b"), 
eq(String.class));
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "0");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.getOrDefault("b", "100");
-
-        assertThat(result).isNotNull().isEqualTo("0");
+        Optional<String> result = sut.getOptionalValue("b", String.class);
+        assertNotNull(result);
+        assertTrue(result.isPresent());
+        assertEquals("0", result.get());
     }
 
     @Test
-    public void getOrDefaultStringStringWithKeyIsOverriddenAndOverridingOff() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("b"));
+    public void getOptionalValueStringWithKeyIsOverriddenAndOverridingOff() 
throws Exception {
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("9")).when(base).getOptionalValue(eq("b"), any());
+        doReturn(Optional.of("9")).when(base).getOptionalValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "0");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.get("b");
+        String result = sut.getValue("b", String.class);
 
         assertThat(result).isNotNull().isEqualTo("9");
     }
 
     @Test
     public void getOrDefaultStringStringWithKeyIsKnownAndIsNotOverridden() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("9").when(base).get(eq("b"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("9")).when(base).getOptionalValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("z0", "0");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.getOrDefault("b", "100");
+        String result = sut.getOptionalValue("b", String.class).orElse("100");
 
         assertThat(result).isNotNull().isEqualTo("9");
     }
 
     @Test
     public void getOrDefaultStringStringWithKeyIsNotKnownButIsOverridden() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn("9").when(base).getValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "0");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.get("b");
+        String result = sut.getValue("b", String.class);
 
         assertThat(result).isNotNull().isEqualTo("0");
     }
 
     @Test
     public void getOrDefaultStringStringWithKeyIsUnKnownAndIsNotOverridden() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("9")).when(base).getOptionalValue("b", 
String.class);
+        doReturn(Optional.empty()).when(base).getOptionalValue("z", 
String.class);
         EnrichedConfiguration sut = new EnrichedConfiguration(base, EMPTY_MAP, 
true);
 
-        String result = sut.getOrDefault("b", "1000");
+        String result = sut.getOptionalValue("z", String.class).orElse("1000");
 
         assertThat(result).isNotNull().isEqualTo("1000");
     }
 
     /*
-     * Tests for getOrDefault(String, Class<T>, T)
+     * Tests for getOptionalValue(String, Class<T>)
      */
 
-    @Test
-    public void getOrDefaultStringClassTThrowsNPEIfKeyIsNull() throws 
Exception {
-        final EnrichedConfiguration sut = mock(EnrichedConfiguration.class, 
NOT_MOCKED_ANSWER);
-        doCallRealMethod().when(sut).getOrDefault(anyString(), 
any(Class.class), anyString());
-
-        assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
-            @Override
-            public void call() throws Throwable {
-                sut.getOrDefault("b", String.class, null);
-            }
-        }).isInstanceOf(NullPointerException.class)
-          .hasMessage("Default value not given.");
-    }
 
     @Test
-    public void getOrDefaultStringClassTThrowsNPEIfClassIsNull() throws 
Exception {
+    public void getOptionalValueStringClassTThrowsNPEIfClassIsNull() throws 
Exception {
         final EnrichedConfiguration sut = mock(EnrichedConfiguration.class, 
NOT_MOCKED_ANSWER);
-        doCallRealMethod().when(sut).getOrDefault(anyString(), 
any(Class.class), anyString());
+        doCallRealMethod().when(sut).getOptionalValue(anyString(), 
any(Class.class));
 
         assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
             @Override
             public void call() throws Throwable {
-                sut.getOrDefault("b", (Class<String>)null, "20");
+                sut.getOptionalValue("b", (Class<String>)null);
             }
         }).isInstanceOf(NullPointerException.class)
-          .hasMessage("Class not given.");
+          .hasMessage("Type must be given.");
     }
 
     @Test
-    public void getOrDefaultStringClassTThrowsNPEIfDefaultValueIsNull() throws 
Exception {
-        final EnrichedConfiguration sut = mock(EnrichedConfiguration.class, 
NOT_MOCKED_ANSWER);
-        doCallRealMethod().when(sut).getOrDefault(anyString(), 
any(Class.class), anyString());
-
-        assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
-            @Override
-            public void call() throws Throwable {
-                sut.getOrDefault("b", String.class, null);
-            }
-        }).isInstanceOf(NullPointerException.class)
-          .hasMessage("Default value not given.");
-    }
-
-    @Test
-    public void getOrDefaultStringClassTKeyInBaseAndInAdditionsNotOverriding() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("1").when(base).get(eq("b"), any(TypeLiteral.class));
+    public void 
getOptionalValueStringClassTKeyInBaseAndInAdditionsNotOverriding() throws 
Exception {
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("1")).when(base).getOptionalValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "2");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.getOrDefault("b", String.class, "3");
-
-        assertThat(result).isEqualTo("1");
+        Optional<String> result = sut.getOptionalValue("b", String.class);
+        assertNotNull(result);
+        assertTrue(result.isPresent());
+        assertEquals("1", result.get());
     }
 
 
     @Test
     public void getOrDefaultStringClassTKeyInBaseAndInAddtionsOverriding() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("1").when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn("1").when(base).getValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "2");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.getOrDefault("b", String.class, "3");
+        String result = sut.getOptionalValue("b", String.class).orElse("3");
 
         assertThat(result).isEqualTo("2");
     }
 
     @Test
     public void getOrDefaultStringClassTKeyNotInBaseInAdditionsNotOverriding() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "20");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.getOrDefault("b", String.class, "B");
+        String result = sut.getOptionalValue("b", String.class).orElse("B");
 
         assertThat(result).isEqualTo("20");
     }
@@ -374,15 +341,15 @@ public class EnrichedConfigurationTest {
 
     @Test
     public void getOrDefaultStringClassTKeyNotInBaseInAddtionsOverriding() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(null).when(base).getValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "20");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.getOrDefault("b", String.class, "B");
+        String result = sut.getOptionalValue("b", String.class).orElse("B");
 
         assertThat(result).isEqualTo("20");
     }
@@ -390,28 +357,28 @@ public class EnrichedConfigurationTest {
 
     @Test
     public void 
getOrDefaultStringClassTKeyNotInBaseNotInAdditionsAndNotOverrding() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.getOrDefault("b", String.class, "B");
+        String result = sut.getOptionalValue("b", String.class).orElse("B");
 
         assertThat(result).isEqualTo("B");
     }
 
     @Test
     public void 
getOrDefaultStringClassTKeyNotInBaseNotInAdditionsAndOverriding() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(null).when(base).getOptionalValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.getOrDefault("b", String.class, "3");
+        String result = sut.getOptionalValue("b", String.class).orElse("3");
 
         assertThat(result).isEqualTo("3");
     }
@@ -434,58 +401,43 @@ public class EnrichedConfigurationTest {
     @Test
     public void getOrDefaultStringTypeLiteralTThrowsNPEIfKeyIsNull() throws 
Exception {
         final EnrichedConfiguration sut = mock(EnrichedConfiguration.class, 
NOT_MOCKED_ANSWER);
-        doCallRealMethod().when(sut).getOrDefault(anyString(), 
any(TypeLiteral.class), anyString());
+        doCallRealMethod().when(sut).getOptionalValue(anyString(), 
any(Class.class));
 
         assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
             @Override
             public void call() throws Throwable {
-                sut.getOrDefault("b", TypeLiteral.<String>of(String.class), 
null);
+                sut.getOptionalValue(null,String.class);
             }
-        }).isInstanceOf(NullPointerException.class)
-          .hasMessage("Default value not given.");
+        }).isInstanceOf(NullPointerException.class);
 
     }
 
     @Test
     public void getOrDefaultStringLiteralTThrowsNPEIfClassIsNull() throws 
Exception {
         final EnrichedConfiguration sut = mock(EnrichedConfiguration.class, 
NOT_MOCKED_ANSWER);
-        doCallRealMethod().when(sut).getOrDefault(anyString(), 
any(TypeLiteral.class), anyString());
+        doCallRealMethod().when(sut).getOptionalValue(anyString(), 
any(Class.class));
 
         assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
             @Override
             public void call() throws Throwable {
-                sut.getOrDefault("b", (TypeLiteral<String>)null, "20");
+                sut.getOptionalValue("b", (Class)null).orElse("20");
             }
         }).isInstanceOf(NullPointerException.class)
-          .hasMessage("Type not given.");
+          .hasMessage("Type must be given.");
 
     }
 
     @Test
-    public void getOrDefaultStringTypeLiteralThrowsNPEIfDefaultValueIsNull() 
throws Exception {
-        final EnrichedConfiguration sut = mock(EnrichedConfiguration.class, 
NOT_MOCKED_ANSWER);
-        doCallRealMethod().when(sut).getOrDefault(anyString(), 
any(TypeLiteral.class), anyString());
-
-        assertThatThrownBy(new ThrowableAssert.ThrowingCallable() {
-            @Override
-            public void call() throws Throwable {
-                sut.getOrDefault("b", TypeLiteral.<String>of(String.class), 
null);
-            }
-        }).isInstanceOf(NullPointerException.class)
-          .hasMessage("Default value not given.");
-    }
-
-    @Test
     public void 
getOrDefaultStringTypeLiteralTKeyInBaseAndInAdditionsNotOverriding() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("1").when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.of("1")).when(base).getOptionalValue(eq("b"), 
any(Class.class));
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "2");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.getOrDefault("b", 
TypeLiteral.<String>of(String.class), "3");
+        String result = sut.getOptionalValue("b", String.class).orElse("3");
 
         assertThat(result).isEqualTo("1");
     }
@@ -493,47 +445,48 @@ public class EnrichedConfigurationTest {
 
     @Test
     public void 
getOrDefaultStringTypeLiteralTKeyInBaseAndInAddtionsOverriding() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn("1").when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn("1").when(base).getValue(eq("b"), any(Class.class));
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "2");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.getOrDefault("b", 
TypeLiteral.<String>of(String.class), "3");
+        String result = sut.getOptionalValue("b", String.class).orElse("3");
 
         assertThat(result).isEqualTo("2");
     }
 
     @Test
     public void 
getOrDefaultStringTypeLiteralTKeyNotInBaseInAdditionsNotOverriding() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("b"), any());
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "20");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.getOrDefault("b", 
TypeLiteral.<String>of(String.class), "B");
-
-        assertThat(result).isEqualTo("20");
+        Optional<String> result = sut.getOptionalValue("b", String.class);
+        assertNotNull(result);
+        assertTrue(result.isPresent());
+        assertEquals("20", result.get());
     }
 
 
 
     @Test
     public void 
getOrDefaultStringTypeLiteralTKeyNotInBaseInAddtionsOverriding() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(null).when(base).getValue(eq("b"), any(Class.class));
 
         Map<String, Object> additions = new HashMap<>();
         additions.put("b", "20");
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.getOrDefault("b", 
TypeLiteral.<String>of(String.class), "B");
+        String result = sut.getOptionalValue("b", String.class).orElse("B");
 
         assertThat(result).isEqualTo("20");
     }
@@ -541,28 +494,28 @@ public class EnrichedConfigurationTest {
 
     @Test
     public void 
getOrDefaultStringTypeLiteralTKeyNotInBaseNotInAdditionsAndNotOverrding() 
throws Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("b"), 
any(Class.class));
 
         Map<String, Object> additions = new HashMap<>();
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
false);
 
-        String result = sut.getOrDefault("b", 
TypeLiteral.<String>of(String.class), "B");
+        String result = sut.getOptionalValue("b", String.class).orElse("B");
 
         assertThat(result).isEqualTo("B");
     }
 
     @Test
     public void 
getOrDefaultStringTypeLiteralTKeyNotInBaseNotInAdditionsAndOverriding() throws 
Exception {
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(null).when(base).get(eq("b"), any(TypeLiteral.class));
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(null).when(base).getOptionalValue("b", String.class);
 
         Map<String, Object> additions = new HashMap<>();
 
         EnrichedConfiguration sut = new EnrichedConfiguration(base, additions, 
true);
 
-        String result = sut.getOrDefault("b", 
TypeLiteral.<String>of(String.class), "3");
+        String result = sut.getOptionalValue("b", String.class).orElse("3");
 
         assertThat(result).isEqualTo("3");
     }
@@ -579,18 +532,21 @@ public class EnrichedConfigurationTest {
         baseProps.put("b", "B");
         baseProps.put("c", "C");
 
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(baseProps).when(base).getProperties();
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(baseProps.keySet()).when(base).getPropertyNames();
+        doReturn(Optional.of("A")).when(base).getOptionalValue("a", 
String.class);
+        doReturn(Optional.of("B")).when(base).getOptionalValue("b", 
String.class);
+        doReturn(Optional.of("C")).when(base).getOptionalValue("c", 
String.class);
 
         EnrichedConfiguration enrichedConfiguration = new 
EnrichedConfiguration(base, EMPTY_MAP, true);
 
-        Map<String, String> result = enrichedConfiguration.getProperties();
+        Iterable<String> result = enrichedConfiguration.getPropertyNames();
 
         assertThat(result).isNotEmpty()
-                          .hasSize(3)
-                          .containsEntry("a", "A")
-                          .containsEntry("b", "B")
-                          .containsEntry("c", "C");
+                          .hasSize(3);
+        assertEquals("A", enrichedConfiguration.getValue("a", String.class));
+        assertEquals("B", enrichedConfiguration.getValue("b", String.class));
+        assertEquals("C", enrichedConfiguration.getValue("c", String.class));
 
     }
 
@@ -601,21 +557,22 @@ public class EnrichedConfigurationTest {
         baseProps.put("b", "B");
         baseProps.put("c", "C");
 
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(baseProps).when(base).getProperties();
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(baseProps.keySet()).when(base).getPropertyNames();
+        doReturn(Optional.empty()).when(base).getOptionalValue(any(), any());
 
         Map<String, Object> additionalProps = new HashMap<>();
-        additionalProps.put("b", "b");
+        additionalProps.put("b", "B");
 
         EnrichedConfiguration enrichedConfiguration = new 
EnrichedConfiguration(base, additionalProps, true);
 
-        Map<String, String> result = enrichedConfiguration.getProperties();
+        Iterable<String> result = enrichedConfiguration.getPropertyNames();
 
         assertThat(result).isNotEmpty()
                           .hasSize(3)
-                          .containsEntry("a", "A")
-                          .containsEntry("b", "b")
-                          .containsEntry("c", "C");
+                .contains("a").contains("b").contains("c");
+        assertEquals(null, enrichedConfiguration.getValue("a", String.class));
+        assertEquals("B", enrichedConfiguration.getValue("b", String.class));
     }
 
     @Test
@@ -625,23 +582,24 @@ public class EnrichedConfigurationTest {
         baseProps.put("b", "B");
         baseProps.put("c", "C");
 
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(baseProps).when(base).getProperties();
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(baseProps.keySet()).when(base).getPropertyNames();
+        doReturn(Optional.empty()).when(base).getOptionalValue(any(), any());
 
         Map<String, Object> additionalProps = new HashMap<>();
         additionalProps.put("e", "E");
 
         EnrichedConfiguration enrichedConfiguration = new 
EnrichedConfiguration(base, additionalProps, true);
 
-        Map<String, String> result = enrichedConfiguration.getProperties();
-
-        assertThat(result).isNotEmpty()
-                          .hasSize(4)
-                          .containsEntry("a", "A")
-                          .containsEntry("b", "B")
-                          .containsEntry("c", "C")
-                          .containsEntry("e", "E");
+        Iterable<String> result = enrichedConfiguration.getPropertyNames();
 
+        assertThat(result)
+                .isNotEmpty()
+                .hasSize(4)
+                .contains("a")
+                .contains("b")
+                .contains("c")
+                .contains("e");
     }
 
     @Test
@@ -651,22 +609,26 @@ public class EnrichedConfigurationTest {
         baseProps.put("b", "B");
         baseProps.put("c", "C");
 
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(baseProps).when(base).getProperties();
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(baseProps.keySet()).when(base).getPropertyNames();
+        doReturn(Optional.of("A")).when(base).getOptionalValue(eq("a"), any());
+        doReturn(Optional.of("B")).when(base).getOptionalValue(eq("b"), any());
+        doReturn(Optional.of("C")).when(base).getOptionalValue(eq("c"), any());
+        doReturn(Optional.empty()).when(base).getOptionalValue(eq("e"), any());
 
         Map<String, Object> additionalProps = new HashMap<>();
         additionalProps.put("e", "E");
 
         EnrichedConfiguration enrichedConfiguration = new 
EnrichedConfiguration(base, additionalProps, false);
 
-        Map<String, String> result = enrichedConfiguration.getProperties();
+        Iterable<String> result = enrichedConfiguration.getPropertyNames();
 
         assertThat(result).isNotEmpty()
-                          .hasSize(4)
-                          .containsEntry("a", "A")
-                          .containsEntry("b", "B")
-                          .containsEntry("c", "C")
-                          .containsEntry("e", "E");
+                          .hasSize(4);
+        assertEquals("A", enrichedConfiguration.getValue("a", String.class));
+        assertEquals("B", enrichedConfiguration.getValue("b", String.class));
+        assertEquals("C", enrichedConfiguration.getValue("c", String.class));
+        assertEquals("E", enrichedConfiguration.getValue("e", String.class));
 
     }
 
@@ -677,21 +639,22 @@ public class EnrichedConfigurationTest {
         baseProps.put("b", "B");
         baseProps.put("c", "C");
 
-        Configuration base = mock(Configuration.class, NOT_MOCKED_ANSWER);
-        doReturn(baseProps).when(base).getProperties();
+        Config base = mock(Config.class, NOT_MOCKED_ANSWER);
+        doReturn(baseProps.keySet()).when(base).getPropertyNames();
+        doReturn(Optional.empty()).when(base).getOptionalValue(any(), any());
 
         Map<String, Object> additionalProps = new HashMap<>();
         additionalProps.put("b", "b");
 
         EnrichedConfiguration enrichedConfiguration = new 
EnrichedConfiguration(base, additionalProps, false);
 
-        Map<String, String> result = enrichedConfiguration.getProperties();
+        Iterable<String> result = enrichedConfiguration.getPropertyNames();
 
         assertThat(result).isNotEmpty()
                           .hasSize(3)
-                          .containsEntry("a", "A")
-                          .containsEntry("b", "B")
-                          .containsEntry("c", "C");
+                            .contains("a")
+                            .contains("b")
+                            .contains("c");
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/581c92e7/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
----------------------------------------------------------------------
diff --git 
a/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
 
b/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
index 2a470a2..2b79250 100644
--- 
a/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
+++ 
b/modules/functions/src/test/java/org/apache/tamaya/functions/MappedConfigurationTest.java
@@ -20,6 +20,7 @@ package org.apache.tamaya.functions;
 
 import org.junit.Test;
 
+import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doCallRealMethod;
@@ -34,18 +35,18 @@ public class MappedConfigurationTest {
     @Test(expected = NullPointerException.class)
     public void getOrDefaultWithTwoStringParametersThrowsNPEIfValueIsNull() 
throws Exception {
         MappedConfiguration mc = mock(MappedConfiguration.class);
-        doReturn("z").when(mc).get(eq("a)"));
-        doCallRealMethod().when(mc).getOrDefault(anyString(), anyString());
+        doReturn("z").when(mc).getValue(eq("a)"), any());
+        doCallRealMethod().when(mc).getOptionalValue(anyString(), any());
 
-        mc.getOrDefault("a", (String)null);
+        mc.getOptionalValue("a", String.class);
     }
 
     @Test(expected = NullPointerException.class)
     public void getOrDefaultWithTwoStringParametersThrowsNPEIfKeyIsNull() 
throws Exception {
         MappedConfiguration mc = mock(MappedConfiguration.class);
-        doCallRealMethod().when(mc).getOrDefault(anyString(), anyString());
+        doCallRealMethod().when(mc).getOptionalValue(anyString(), any());
 
-        mc.getOrDefault(null, "z");
+        mc.getOptionalValue(null, String.class);
     }
 
 }
\ No newline at end of file


Reply via email to