You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2016/10/30 17:25:51 UTC

[09/10] incubator-tamaya-sandbox git commit: TAMAYA-182: Adapted modules to new builder patter changes, including tests. Fixed compile errors, or excluded modules from compilation (see root pom).

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/ConfigurationBuilderTest.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/ConfigurationBuilderTest.java b/builder/src/test/java/org/apache/tamaya/builder/ConfigurationBuilderTest.java
deleted file mode 100644
index 07a72c5..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/ConfigurationBuilderTest.java
+++ /dev/null
@@ -1,907 +0,0 @@
-/*
- * 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.builder;
-
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.builder.util.types.CustomTypeA;
-import org.apache.tamaya.builder.util.types.CustomTypeB;
-import org.apache.tamaya.builder.util.types.CustomTypeC;
-import org.apache.tamaya.spi.*;
-import org.hamcrest.CoreMatchers;
-import org.hamcrest.Matchers;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-
-import java.io.IOException;
-import java.net.URL;
-
-import static java.util.Arrays.asList;
-import static org.apache.tamaya.builder.util.mockito.NotMockedAnswer.NOT_MOCKED_ANSWER;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.CALLS_REAL_METHODS;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-
-
-public class ConfigurationBuilderTest {
-
-    @Test
-    public void buildCanBuildEmptyConfiguration() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.build();
-
-        assertThat(config, notNullValue());
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void buildCanBeCalledOnlyOnce() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.build();
-        builder.build();
-    }
-
-    /*********************************************************************
-     * Tests for adding P r o p e r t y S o u r c e s
-     */
-
-    @Test(expected = NullPointerException.class)
-    public void addPropertySourcesDoesNotAcceptNullValue() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.addPropertySources((PropertySource[])null);
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void propertySourceCanNotBeAddedAfterBuildingTheConfiguration() {
-        PropertySource first = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("first").when(first).getName();
-        doReturn(100).when(first).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(first);
-
-        builder.build();
-
-        PropertySource second = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("second").when(first).getName();
-
-        builder.addPropertySources(second);
-    }
-
-    @Test
-    public void singleAddedPropertySourceIsUsed() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("one").when(source).getName();
-        doReturn(PropertyValue.of("keyOfA","a", "test")).when(source).get("keyOfA");
-        doReturn(100).when(source).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(source);
-
-        Configuration config = builder.build();
-
-        String valueOfA = config.get("keyOfA");
-
-        assertThat(valueOfA, notNullValue());
-        assertThat(valueOfA, equalTo("a"));
-    }
-
-    @Test
-    public void twoAddedPropertySourcesAreUsed() {
-        PropertySource sourceOne = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("one").when(sourceOne).getName();
-        doReturn(PropertyValue.of("keyOfA","b", "test")).when(sourceOne).get("keyOfA");
-        doReturn(10).when(sourceOne).getOrdinal();
-
-        PropertySource sourceTwo = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-        doReturn("two").when(sourceTwo).getName();
-        doReturn(PropertyValue.of("keyOfA","a", "test")).when(sourceTwo).get("keyOfA");
-        doReturn(10).when(sourceTwo).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(sourceOne)
-                                                                 .addPropertySources(sourceTwo);
-
-        Configuration config = builder.build();
-
-        String valueOfA = config.get("keyOfA");
-
-        assertThat(valueOfA, notNullValue());
-        assertThat(valueOfA, equalTo("a"));
-    }
-
-    @Ignore
-    @Test(expected = ConfigException.class)
-    public void twoPropertySourcesSamePrioritySameKey() {
-        PropertySource sourceOne = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("one").when(sourceOne).getName();
-        doReturn("b").when(sourceOne).get("keyOfA");
-        doReturn(20).when(sourceOne).getOrdinal();
-
-        PropertySource sourceTwo = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-        doReturn("two").when(sourceTwo).getName();
-        doReturn("a").when(sourceTwo).get("keyOfA");
-        doReturn(20).when(sourceTwo).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(sourceOne)
-                                                                 .addPropertySources(sourceTwo);
-
-        Configuration config = builder.build();
-
-        config.get("keyOfA");
-    }
-
-    @Test
-    public void twoPropertySourcesDiffPrioritySameKeyLowerAddedFirst() {
-        PropertySource sourceOne = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("one").when(sourceOne).getName();
-        doReturn(PropertyValue.of("keyOfA","b", "test")).when(sourceOne).get("keyOfA");
-        doReturn(10).when(sourceOne).getOrdinal();
-
-        PropertySource sourceTwo = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-        doReturn("two").when(sourceTwo).getName();
-        doReturn(PropertyValue.of("keyOfA","a", "test")).when(sourceTwo).get("keyOfA");
-        doReturn(20).when(sourceTwo).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(sourceOne)
-                                                                 .addPropertySources(sourceTwo);
-
-        Configuration config = builder.build();
-
-        String valueOfA = config.get("keyOfA");
-
-        assertThat(valueOfA, notNullValue());
-        assertThat(valueOfA, equalTo("a"));
-    }
-
-    @Test
-    public void twoPropertySourcesDiffPrioritySameKeyHigherAddedFirst() {
-        PropertySource sourceOne = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("one").when(sourceOne).getName();
-        doReturn(PropertyValue.of("keyOfA","b", "test")).when(sourceOne).get("keyOfA");
-        doReturn(30).when(sourceOne).getOrdinal();
-
-        PropertySource sourceTwo = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-        doReturn("two").when(sourceTwo).getName();
-        doReturn(PropertyValue.of("keyOfA","a", "test")).when(sourceTwo).get("keyOfA");
-        doReturn(20).when(sourceTwo).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(sourceOne, sourceTwo);
-
-        Configuration config = builder.build();
-
-        String valueOfA = config.get("keyOfA");
-
-        assertThat(valueOfA, notNullValue());
-        assertThat(valueOfA, equalTo("b"));
-    }
-
-    @Test
-    public void consecutiveCallsToAddPropertySourceArePossible() {
-        PropertySource sourceOne = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("one").when(sourceOne).getName();
-        doReturn(null).when(sourceOne).get(anyString());
-        doReturn(PropertyValue.of("b","b", "test")).when(sourceOne).get("b");
-        doReturn(30).when(sourceOne).getOrdinal();
-
-        PropertySource sourceTwo = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-        doReturn("two").when(sourceTwo).getName();
-        doReturn(null).when(sourceTwo).get(anyString());
-        doReturn(PropertyValue.of("a","a", "test")).when(sourceTwo).get("a");
-        doReturn(30).when(sourceTwo).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(sourceOne)
-                                                                 .addPropertySources(sourceTwo);
-
-        Configuration config = builder.build();
-
-        assertThat(config.get("b"), equalTo("b"));
-        assertThat(config.get("a"), equalTo("a"));
-    }
-
-    @Test
-    public void addMultiplePropertySourcesWhereOneIsNull() {
-        PropertySource sourceOne = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("one").when(sourceOne).getName();
-        doReturn(null).when(sourceOne).get(anyString());
-        doReturn(PropertyValue.of("b","b", "test")).when(sourceOne).get("b");
-        doReturn(30).when(sourceOne).getOrdinal();
-
-        PropertySource sourceTwo = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-        doReturn("two").when(sourceTwo).getName();
-        doReturn(null).when(sourceTwo).get(anyString());
-        doReturn(PropertyValue.of("a","a", "test")).when(sourceTwo).get("a");
-        doReturn(30).when(sourceTwo).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(sourceOne, null, sourceTwo);
-
-        Configuration config = builder.build();
-
-        assertThat(config.get("b"), equalTo("b"));
-        assertThat(config.get("a"), equalTo("a"));
-    }
-
-    /**
-     * ******************************************************************
-     * Tests for adding P r o p e r t y C o n v e r t e r
-     */
-
-    @Test(expected = NullPointerException.class)
-    public void canNotAddNullPropertyConverter() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.addPropertyConverter(TypeLiteral.of(CustomTypeA.class), null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void canNotAddNullTypeLiteralButPropertyConverter() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-        builder.addPropertyConverter((TypeLiteral)null,
-                new PropertyConverter() {
-                    @Override
-                    public CustomTypeA convert(final String prop, ConversionContext context) {
-                        return new CustomTypeA(prop, prop);
-                    }
-                });
-    }
-
-    @Test
-    public void addedPropertyConverterWithTypeLiteralIsUsedByConfiguration() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("source").when(source).getName();
-        doReturn(PropertyValue.of("key","A", "test")).when(source).get("key");
-        doReturn(100).when(source).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.addPropertyConverter(TypeLiteral.of(CustomTypeA.class),
-                new PropertyConverter() {
-                    @Override
-                    public CustomTypeA convert(final String prop, ConversionContext context) {
-                        return new CustomTypeA(prop, prop);
-                    }
-                });
-        builder.addPropertySources(source);
-
-        Configuration config = builder.build();
-
-        Object resultRaw = config.get("key", CustomTypeA.class);
-
-        assertThat(resultRaw, CoreMatchers.notNullValue());
-
-        CustomTypeA result = (CustomTypeA)resultRaw;
-
-        assertThat(result.getName(), equalTo("AA"));
-    }
-
-    @Test
-    public void addedPropertyConverterWithClassIsUsedByConfiguration() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("source").when(source).getName();
-        doReturn(PropertyValue.of("key","A", "test")).when(source).get("key");
-        doReturn(100).when(source).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.addPropertyConverter(TypeLiteral.of(CustomTypeA.class),
-                new PropertyConverter() {
-                    @Override
-                    public CustomTypeA convert(final String prop, ConversionContext context) {
-                        return new CustomTypeA(prop, prop);
-                    }
-                });
-        builder.addPropertySources(source);
-
-        Configuration config = builder.build();
-
-        Object resultRaw = config.get("key", CustomTypeA.class);
-
-        assertThat(resultRaw, CoreMatchers.notNullValue());
-
-        CustomTypeA result = (CustomTypeA)resultRaw;
-
-        assertThat(result.getName(), equalTo("AA"));
-    }
-
-    @Test
-    public void canGetAndConvertPropertyViaOfMethod() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("source").when(source).getName();
-        doReturn(PropertyValue.of("key","A", "test")).when(source).get("key");
-        doReturn(100).when(source).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.addPropertySources(source);
-
-        Configuration config = builder.build();
-
-        Object resultRaw = config.get("key", CustomTypeB.class);
-
-        assertThat(resultRaw, CoreMatchers.notNullValue());
-
-        CustomTypeB result = (CustomTypeB)resultRaw;
-
-        assertThat(result.getName(), equalTo("A"));
-    }
-
-    /*********************************************************************
-     * Tests for adding P r o p e r t y F i l t e r
-     */
-
-    @Test(expected = NullPointerException.class)
-    public void canNotAddNullAsPropertyFilter() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-        builder.addPropertyFilters((PropertyFilter[])null);
-    }
-
-    @Test
-    public void canAddNonSPIPropertyFilter() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn(PropertyValue.of("key","M", "test")).when(source).get("key");
-        doReturn("source").when(source).getName();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySources(source)
-                                      .addPropertyFilters(new TestANonSPIPropertyFilter())
-                                      .build();
-
-        String property = config.get("key");
-
-        assertThat(property, CoreMatchers.notNullValue());
-        assertThat(property, CoreMatchers.containsString("ABC"));
-    }
-
-    @Test
-    public void canAddNonSPIPropertyFiltersViaConsecutiveCalls() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn(PropertyValue.of("key","M", "test")).when(source).get("key");
-        doReturn("source").when(source).getName();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySources(source)
-                                      .addPropertyFilters(new TestANonSPIPropertyFilter())
-                                      .addPropertyFilters(new TestBNonSPIPropertyFilter())
-                                      .build();
-
-        String property = config.get("key");
-
-        assertThat(property, CoreMatchers.notNullValue());
-        assertThat(property, CoreMatchers.containsString("ABC"));
-        assertThat(property, CoreMatchers.containsString("XYZ"));
-    }
-
-    @Test
-    public void canAddMultipleNonSPIPropertyFiltersWhileOneIsNull() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn(PropertyValue.of("key","M", "test")).when(source).get("key");
-        doReturn("source").when(source).getName();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySources(source)
-                                      .addPropertyFilters(new TestANonSPIPropertyFilter(),
-                                              null,
-                                              new TestBNonSPIPropertyFilter())
-                                      .build();
-
-        String property = config.get("key");
-
-        assertThat(property, CoreMatchers.notNullValue());
-        assertThat(property, CoreMatchers.containsString("ABC"));
-        assertThat(property, CoreMatchers.containsString("XYZ"));
-    }
-
-    @Test
-    public void overhandedNullPropertyFilterIsSafelyHandled() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn(PropertyValue.of("key","M", "test")).when(source).get("key");
-        doReturn("source").when(source).getName();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySources(source)
-                                      .addPropertyFilters((PropertyFilter)null) // The cast is needed!
-                                      .addPropertyFilters(new TestBNonSPIPropertyFilter())
-                                      .build();
-
-        String property = config.get("key");
-
-        assertThat(property, CoreMatchers.notNullValue());
-        assertThat(property, CoreMatchers.containsString("XYZ"));
-    }
-
-    @Test
-    public void canAddMultipleNonSPIPropertyFilter() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn(PropertyValue.of("key","M", "test")).when(source).get("key");
-        doReturn("source").when(source).getName();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySources(source)
-                                      .addPropertyFilters(new TestANonSPIPropertyFilter(),
-                                                          new TestBNonSPIPropertyFilter())
-                                      .build();
-
-        String property = config.get("key");
-
-        assertThat(property, CoreMatchers.notNullValue());
-        assertThat(property, CoreMatchers.containsString("ABC"));
-        assertThat(property, CoreMatchers.containsString("XYZ"));
-    }
-
-    /*********************************************************************
-     * Tests for adding
-     * P r o p e r t y S o u r c e P r o v i d e r s
-     */
-
-    @Test
-    public void handlesSafelyPropertyProviderReturningNullInsteadOfPropertySource() {
-        PropertySourceProvider nullReturning = mock(PropertySourceProvider.class, NOT_MOCKED_ANSWER);
-
-        doReturn(asList((PropertySource)null)).when(nullReturning).getPropertySources();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySourceProviders(new TestPropertySourceProviderB(),
-                                                                  nullReturning,
-                                                                  new TestPropertySourceProvider())
-                                      .build();
-
-        assertThat(config.get("tpsp_a"), Matchers.equalTo("A"));
-        assertThat(config.get("tpsp_b"), Matchers.equalTo("B"));
-        assertThat(config.get("tpsp_x"), Matchers.equalTo("X"));
-        assertThat(config.get("tpsp_y"), Matchers.equalTo("Y"));
-
-        verify(nullReturning).getPropertySources();
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void cannotAddNullAsPropertyProvider() {
-        new ConfigurationBuilder().addPropertySourceProviders((PropertySourceProvider[])null);
-    }
-
-    @Test
-    public void canAddMultipleNonSPIPropertySourceProviders() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySourceProviders(new TestPropertySourceProviderB(),
-                                                                  new TestPropertySourceProvider())
-                                      .build();
-
-        assertThat(config.get("tpsp_a"), Matchers.equalTo("A"));
-        assertThat(config.get("tpsp_b"), Matchers.equalTo("B"));
-        assertThat(config.get("tpsp_x"), Matchers.equalTo("X"));
-        assertThat(config.get("tpsp_y"), Matchers.equalTo("Y"));
-    }
-
-    @Test
-    public void canAddMultipleNonSPIPropertySourceProvidersWhileOfOfThemIsNull() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySourceProviders(new TestPropertySourceProviderB(), null,
-                                                                  new TestPropertySourceProvider())
-                                      .build();
-
-        assertThat(config.get("tpsp_a"), Matchers.equalTo("A"));
-        assertThat(config.get("tpsp_b"), Matchers.equalTo("B"));
-        assertThat(config.get("tpsp_x"), Matchers.equalTo("X"));
-        assertThat(config.get("tpsp_y"), Matchers.equalTo("Y"));
-    }
-
-
-    /*
-     * Tests for adding
-     * P r o p e r t y V a l u e C o m b i n a t i o n P o l i c y
-     */
-
-    // @todo TAYAMA-60 Write more tests
-
-    /*********************************************************************
-     * Tests for enabling and disabling of automatic loading of
-     * P r o p e r t y S o u r c e s
-     */
-
-    @Test
-    public void enablingOfProvidedPropertySourceServiceProvidersIsOk() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.disableProvidedPropertyConverters()
-               .enableProvidedPropertyConverters();
-
-        assertThat(builder.isPropertyConverterLoadingEnabled(), is(true));
-    }
-
-    @Test
-    public void disablingOfProvidedPropertySourceServiceProvidersIsOk() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.enableProvidedPropertyConverters()
-               .disableProvidedPropertyConverters();
-
-        assertThat(builder.isPropertyConverterLoadingEnabled(), is(false));
-    }
-
-    @Test(expected = ConfigException.class)
-    public void loadingOrPropertyConvertersCanBeDisabled() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("source").when(source).getName();
-        doReturn(PropertyValue.of("key","A", "test")).when(source).get("key");
-        doReturn(100).when(source).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(source)
-                                                                 .enableProvidedPropertyConverters()
-                                                                 .disableProvidedPropertyConverters();
-
-        Configuration config = builder.build();
-
-        config.get("key", CustomTypeC.class);
-    }
-
-    @Test
-    public void loadingOfPropertyConvertersCanBeEnabled() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("source").when(source).getName();
-        doReturn(PropertyValue.of("key","A", "test")).when(source).get("key");
-        doReturn(100).when(source).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder().addPropertySources(source)
-                                                                 .disableProvidedPropertyConverters()
-                                                                 .enableProvidedPropertyConverters();
-
-        Configuration config = builder.build();
-
-        CustomTypeC result = config.get("key", CustomTypeC.class);
-
-        assertThat(result, notNullValue());
-        assertThat(result.getValue(), equalTo("A"));
-    }
-
-    /*********************************************************************
-     * Tests for enabling and disabling of automatic loading of
-     * P r o p e r t y S o u r c e s
-     */
-
-    @Test
-    public void enablingOfPropertySourceLoadingIsOk() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.disableProvidedPropertySources()
-               .enableProvidedPropertySources();
-
-        assertThat(builder.isPropertySourcesLoadingEnabled(), is(true));
-    }
-
-    @Test
-    public void disablingPropertySourceLoadingIsOk() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.enableProvidedPropertySources()
-               .disableProvidedPropertySources();
-
-        assertThat(builder.isPropertySourcesLoadingEnabled(), is(false));
-    }
-
-    @Test
-    public void loadingOfPropertySourcesCanBeEnabled() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.disableProvidedPropertySources()
-                                      .enableProvidedPropertySources()
-                                      .build();
-
-
-        assertThat(builder.isPropertySourcesLoadingEnabled(), is(true));
-        assertThat(config.get("tps_a"), Matchers.equalTo("A"));
-    }
-
-    @Test
-    public void loadingOfPropertySourcesCanBeDisabled() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.enableProvidedPropertySources()
-                                      .disableProvidedPropertySources()
-                                      .build();
-
-
-        assertThat(builder.isPropertySourcesLoadingEnabled(), is(false));
-        assertThat(config.get("tps_c"), Matchers.nullValue());
-    }
-
-    /*********************************************************************
-     * Tests for enabling and disabling of automatic loading of
-     * P r o p e r t y F i l t e r s
-     */
-
-    @Test
-    public void enablingOfPropertyFiltersLoadingIsOk() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("source").when(source).getName();
-        doReturn(PropertyValue.of("key","A", "test")).when(source).get("key");
-        doReturn(100).when(source).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.disableProvidedPropertyFilters()
-                                      .enabledProvidedPropertyFilters()
-                                      .addPropertySources(source)
-                                      .build();
-
-        String property = config.get("key");
-
-        assertThat(property, CoreMatchers.notNullValue());
-        assertThat(property, Matchers.equalTo("AinBerlin"));
-    }
-
-    @Test
-    public void disablingOfPropertyFiltersLoadingIsOk() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.enabledProvidedPropertyFilters()
-               .disableProvidedPropertyFilters();
-
-        assertThat(builder.isPropertyFilterLoadingEnabled(), is(false));
-    }
-
-    @Test
-    public void loadingOfPropertyFiltersCanBeDisabled() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.disableProvidedPropertyFilters()
-               .enabledProvidedPropertyFilters();
-
-        assertThat(builder.isPropertyFilterLoadingEnabled(), is(true));
-    }
-
-    @Test
-    public void loadingOfPropertyFiltersCanBeEnabled() {
-        PropertySource source = mock(PropertySource.class, NOT_MOCKED_ANSWER);
-
-        doReturn("source").when(source).getName();
-        doReturn(PropertyValue.of("key","A", "test")).when(source).get("key");
-        doReturn(100).when(source).getOrdinal();
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.enabledProvidedPropertyFilters()
-                                      .disableProvidedPropertyFilters()
-                                      .addPropertySources(source)
-                                      .build();
-
-        String property = config.get("key");
-
-        assertThat(property, CoreMatchers.notNullValue());
-        assertThat(property, Matchers.equalTo("A"));
-    }
-
-    /*********************************************************************
-     * Tests for enabling and disabling of automatic loading of
-     * P r o p e r t y S o u r c e P r o v i d e r s
-     */
-
-    @Test
-    public void disablingOfPropertySourceProvidersIsOk() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.enableProvidedPropertySourceProviders()
-               .disableProvidedPropertySourceProviders()
-               .build();
-
-        assertThat(builder.isPropertySourceProvidersLoadingEnabled(), is(false));
-    }
-
-    @Test
-    public void enablingOfPropertySourceProvidersIsOk() {
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.disableProvidedPropertySourceProviders()
-               .enableProvidedPropertySourceProviders()
-               .build();
-
-        assertThat(builder.isPropertySourceProvidersLoadingEnabled(), is(true));
-    }
-
-    @Test
-    public void loadingOfPropertySourceProvidersCanBeEnabled() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.disableProvidedPropertySourceProviders()
-                                      .enableProvidedPropertySourceProviders()
-                                      .build();
-
-        assertThat(builder.isPropertySourceProvidersLoadingEnabled(), is(true));
-        assertThat(config.get("tpsp_x"), Matchers.equalTo("X"));
-        assertThat(config.get("tpsp_y"), Matchers.equalTo("Y"));
-    }
-
-    @Test
-    public void loadingOfPropertySourceProvidersCanBeDisabled() {
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.enableProvidedPropertySourceProviders()
-                                      .disableProvidedPropertySourceProviders()
-                                      .build();
-
-        assertThat(builder.isPropertySourceProvidersLoadingEnabled(), is(false));
-        assertThat(config.get("tpsp_x"), nullValue());
-        assertThat(config.get("tpsp_x"), nullValue());
-    }
-
-    @Test(expected = ConfigException.class)
-    public void ioExceptionIsTurnedInConfigExceptionWhenLoadingResourceViaURL() throws Exception {
-        URL resource = this.getClass().getResource("/configfiles/json/simple.json");
-
-        assertThat(resource, CoreMatchers.notNullValue());
-
-        ConfigurationBuilder builder = mock(ConfigurationBuilder.class, CALLS_REAL_METHODS);
-
-        doThrow(IOException.class).when(builder).getConfigurationDataFromURL(Mockito.eq(resource));
-
-        builder.addPropertySource(resource).build();
-    }
-
-    /*********************************************************************
-     * Tests for loading resources via URL (as String)
-     */
-
-    @Test(expected = ConfigException.class)
-    public void tryToLoadOneUnsupportedPropertySourceViaStringURL() {
-        URL resource = this.getClass().getResource("/configfiles/other/simple.oml");
-
-        assertThat(resource, CoreMatchers.notNullValue());
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        builder.addPropertySources(resource.toString()).build();
-    }
-
-    @Test
-    public void loadOneJSONPropertySourceViaStringURL() {
-        URL resource = this.getClass().getResource("/configfiles/json/simple.json");
-
-        assertThat(resource, CoreMatchers.notNullValue());
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySources(resource.toString())
-                                      .build();
-
-        assertThat(config, CoreMatchers.notNullValue());
-        assertThat(config.get("a"), equalTo("A"));
-        assertThat(config.get("b"), equalTo("B"));
-    }
-
-    @Test
-    public void loadMultipleJSONPropertySourceViaStringURL() {
-        URL first = this.getClass().getResource("/configfiles/json/first.json");
-        URL second = this.getClass().getResource("/configfiles/json/second.json");
-        URL third = this.getClass().getResource("/configfiles/json/third.json");
-
-        assertThat(first, CoreMatchers.notNullValue());
-        assertThat(second, CoreMatchers.notNullValue());
-        assertThat(third, CoreMatchers.notNullValue());
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySources(first.toString(), second.toString(),
-                                                         null, third.toString())
-                                      .build();
-
-        assertThat(config, CoreMatchers.notNullValue());
-
-        // from first.json
-        assertThat(config.get("d"), equalTo("D"));
-        assertThat(config.get("e"), equalTo("E"));
-
-        // from second.json
-        assertThat(config.get("m"), equalTo("M"));
-        assertThat(config.get("n"), equalTo("N"));
-
-        // from thrid.json
-        assertThat(config.get("p"), equalTo("P"));
-        assertThat(config.get("q"), equalTo("Q"));
-    }
-
-    /**
-     * ******************************************************************
-     * Tests for loading resources via URL (as URL object)
-     */
-
-    @Test
-    public void loadOneJSONPropertySourceViaURL() {
-        URL resource = this.getClass().getResource("/configfiles/json/simple.json");
-
-        assertThat(resource, CoreMatchers.notNullValue());
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySource(resource)
-                                      .build();
-
-        assertThat(config, CoreMatchers.notNullValue());
-        assertThat(config.get("a"), equalTo("A"));
-        assertThat(config.get("b"), equalTo("B"));
-    }
-
-    @Test
-    public void loadMultipleJSONPropertySourceViaURL() {
-        URL first = this.getClass().getResource("/configfiles/json/first.json");
-        URL second = this.getClass().getResource("/configfiles/json/second.json");
-        URL third = this.getClass().getResource("/configfiles/json/third.json");
-
-        assertThat(first, CoreMatchers.notNullValue());
-        assertThat(second, CoreMatchers.notNullValue());
-        assertThat(third, CoreMatchers.notNullValue());
-
-        ConfigurationBuilder builder = new ConfigurationBuilder();
-
-        Configuration config = builder.addPropertySources(first, second,
-                                                         null, third)
-                                      .build();
-
-        assertThat(config, CoreMatchers.notNullValue());
-
-        // from first.json
-        assertThat(config.get("d"), equalTo("D"));
-        assertThat(config.get("e"), equalTo("E"));
-
-        // from second.json
-        assertThat(config.get("m"), equalTo("M"));
-        assertThat(config.get("n"), equalTo("N"));
-
-        // from thrid.json
-        assertThat(config.get("p"), equalTo("P"));
-        assertThat(config.get("q"), equalTo("Q"));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/TestANonSPIPropertyFilter.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/TestANonSPIPropertyFilter.java b/builder/src/test/java/org/apache/tamaya/builder/TestANonSPIPropertyFilter.java
deleted file mode 100644
index 896e0bc..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/TestANonSPIPropertyFilter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.builder;
-
-import org.apache.tamaya.spi.FilterContext;
-import org.apache.tamaya.spi.PropertyFilter;
-
-public class TestANonSPIPropertyFilter implements PropertyFilter {
-    @Override
-    public String filterProperty(String value, FilterContext context) {
-        String result = value;
-
-        if (!result.contains(("ABC"))) {
-            result = value + "ABC";
-        }
-
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/TestBNonSPIPropertyFilter.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/TestBNonSPIPropertyFilter.java b/builder/src/test/java/org/apache/tamaya/builder/TestBNonSPIPropertyFilter.java
deleted file mode 100644
index a9c0ac2..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/TestBNonSPIPropertyFilter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.builder;
-
-import org.apache.tamaya.spi.FilterContext;
-import org.apache.tamaya.spi.PropertyFilter;
-
-public class TestBNonSPIPropertyFilter implements PropertyFilter {
-    @Override
-    public String filterProperty(String value, FilterContext context) {
-        String result = value;
-
-        if (!result.contains(("XYZ"))) {
-            result = value + "XYZ";
-        }
-
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/TestPropertyFilter.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/TestPropertyFilter.java b/builder/src/test/java/org/apache/tamaya/builder/TestPropertyFilter.java
deleted file mode 100644
index e22fca8..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/TestPropertyFilter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.builder;
-
-import org.apache.tamaya.spi.FilterContext;
-import org.apache.tamaya.spi.PropertyFilter;
-
-public class TestPropertyFilter implements PropertyFilter {
-    @Override
-    public String filterProperty(String value, FilterContext context) {
-        String result = value;
-
-        if (!result.contains(("inBerlin"))) {
-            result = value + "inBerlin";
-        }
-
-        return result;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/TestPropertySource.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/TestPropertySource.java b/builder/src/test/java/org/apache/tamaya/builder/TestPropertySource.java
deleted file mode 100644
index f1ebfea..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/TestPropertySource.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.builder;
-
-import org.apache.tamaya.core.propertysource.BasePropertySource;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.Collections;
-import java.util.Hashtable;
-import java.util.Map;
-
-public class TestPropertySource  extends BasePropertySource
-{
-    private Map<String, String> properties;
-
-    {
-        properties = new Hashtable<>(3);
-        properties.put("tps_a", "A");
-        properties.put("tps_b", "B");
-        properties.put("tps_c", "C");
-    }
-
-    @Override
-    public int getOrdinal() {
-        return 456;
-    }
-
-    @Override
-    public String getName() {
-        return "TestPropertySource";
-    }
-
-    @Override
-    public PropertyValue get(String key) {
-        return PropertyValue.of(key, getProperties().get(key), getName());
-    }
-
-    @Override
-    public Map<String, String> getProperties() {
-        return Collections.unmodifiableMap(properties);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/TestPropertySourceProvider.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/TestPropertySourceProvider.java b/builder/src/test/java/org/apache/tamaya/builder/TestPropertySourceProvider.java
deleted file mode 100644
index 5a2f400..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/TestPropertySourceProvider.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.builder;
-
-import org.apache.tamaya.core.propertysource.BasePropertySource;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertySourceProvider;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-
-public class TestPropertySourceProvider
-    implements PropertySourceProvider
-{
-    @Override
-    public Collection<PropertySource> getPropertySources() {
-        ArrayList<PropertySource> sources = new ArrayList<>(2);
-
-        sources.add(new XProvidingPropertySource());
-        sources.add(new YProvidingPropertySource());
-
-        return sources;
-    }
-
-    private class YProvidingPropertySource extends BasePropertySource {
-        private Map<String, String> props = Collections.singletonMap("tpsp_x", "X");
-
-        @Override
-        public int getOrdinal() {
-            return 100;
-        }
-
-        @Override
-        public String getName() {
-            return "YProvidingPropertySource";
-        }
-
-        @Override
-        public PropertyValue get(String key) {
-            return PropertyValue.of(key, getProperties().get(key), getName());
-        }
-
-        @Override
-        public Map<String, String> getProperties() {
-            return props;
-        }
-    }
-
-    private class XProvidingPropertySource  extends BasePropertySource {
-        private Map<String, String> props = Collections.singletonMap("tpsp_y", "Y");
-
-        @Override
-        public Map<String, String> getProperties() {
-            return props;
-        }
-
-        @Override
-        public PropertyValue get(String key) {
-            return PropertyValue.of(key, getProperties().get(key), getName());
-        }
-
-        @Override
-        public int getOrdinal() {
-            return 100;
-        }
-
-        @Override
-        public String getName() {
-            return "XProvidingPropertySource";
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/TestPropertySourceProviderB.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/TestPropertySourceProviderB.java b/builder/src/test/java/org/apache/tamaya/builder/TestPropertySourceProviderB.java
deleted file mode 100644
index 9cfe725..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/TestPropertySourceProviderB.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * 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.builder;
-
-import org.apache.tamaya.core.propertysource.BasePropertySource;
-import org.apache.tamaya.spi.PropertySource;
-import org.apache.tamaya.spi.PropertySourceProvider;
-import org.apache.tamaya.spi.PropertyValue;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-
-public class TestPropertySourceProviderB
-    implements PropertySourceProvider
-{
-    @Override
-    public Collection<PropertySource> getPropertySources() {
-        ArrayList<PropertySource> sources = new ArrayList<>(2);
-
-        sources.add(new AProvidingPropertySource());
-        sources.add(new BProvidingPropertySource());
-
-        return sources;
-    }
-
-    private class BProvidingPropertySource extends BasePropertySource {
-        private Map<String, String> props = Collections.singletonMap("tpsp_b", "B");
-
-        @Override
-        public int getOrdinal() {
-            return 100;
-        }
-
-        @Override
-        public String getName() {
-            return "BProvidingPropertySource";
-        }
-
-        @Override
-        public PropertyValue get(String key) {
-            return PropertyValue.of(key,getProperties().get(key), getName());
-        }
-
-        @Override
-        public Map<String, String> getProperties() {
-            return props;
-        }
-    }
-
-    private class AProvidingPropertySource extends BasePropertySource {
-        private Map<String, String> props = Collections.singletonMap("tpsp_a", "A");
-
-        @Override
-        public Map<String, String> getProperties() {
-            return props;
-        }
-
-        @Override
-        public PropertyValue get(String key) {
-            return PropertyValue.of(key, getProperties().get(key), getName());
-        }
-
-        @Override
-        public int getOrdinal() {
-            return 100;
-        }
-
-        @Override
-        public String getName() {
-            return "AProvidingPropertySource";
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/util/mockito/NotMockedAnswer.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/util/mockito/NotMockedAnswer.java b/builder/src/test/java/org/apache/tamaya/builder/util/mockito/NotMockedAnswer.java
deleted file mode 100644
index 3188d85..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/util/mockito/NotMockedAnswer.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.builder.util.mockito;
-
-import org.mockito.exceptions.base.MockitoException;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import java.io.Serializable;
-
-// @todo This is a duplicated class
-public class NotMockedAnswer implements Answer<Object>, Serializable {
-    public final static NotMockedAnswer NOT_MOCKED_ANSWER = new NotMockedAnswer();
-
-    private NotMockedAnswer() {
-    }
-
-    @Override
-    public Object answer(InvocationOnMock invocation) throws Throwable {
-        if("toString".equals(invocation.getMethod().getName())){
-            return "Some "+invocation.getMethod().getDeclaringClass().getName();
-        }
-        StringBuilder msgBuilder = new StringBuilder();
-
-        msgBuilder.append("Invocation of method not mocked: ")
-                  .append(invocation.getMethod().toGenericString());
-
-        if (invocation.getArguments().length > 0) {
-            msgBuilder.append(" Supplied arguments: ");
-
-            for (int i = 0; i < invocation.getArguments().length; i++) {
-                msgBuilder.append(invocation.getArguments()[i]);
-
-                if (i - 1 < invocation.getArguments().length) {
-                    msgBuilder.append(", ");
-                }
-            }
-        }
-        throw new MockitoException(msgBuilder.toString());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeA.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeA.java b/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeA.java
deleted file mode 100644
index 89b2f5b..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeA.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.builder.util.types;
-
-/**
- * Custom type with two argument constructor.
- */
-public class CustomTypeA {
-    private String name;
-
-    public CustomTypeA(String name, String other) {
-        this.name = name + other;
-    }
-
-    public String getName() {
-        return name;
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeB.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeB.java b/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeB.java
deleted file mode 100644
index f7f4d99..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeB.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.builder.util.types;
-
-/**
- * Custom type with factory method
- * {@link org.apache.tamaya.builder.util.types.CustomTypeB#of(String)}
- */
-public class CustomTypeB {
-    private String name;
-
-    private CustomTypeB(String value) {
-        this.name = value;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public static CustomTypeB of(String source) {
-        return new CustomTypeB(source);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeC.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeC.java b/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeC.java
deleted file mode 100644
index da9ce56..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeC.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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.builder.util.types;
-
-public class CustomTypeC {
-    private String value;
-
-
-    public CustomTypeC(String in, @SuppressWarnings("unused") int iHideThisConstructorForTamaya) {
-        value = in;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public static CustomTypeC produceFrom(String in) {
-        return new CustomTypeC(in, -1);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeCPropertyConverter.java
----------------------------------------------------------------------
diff --git a/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeCPropertyConverter.java b/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeCPropertyConverter.java
deleted file mode 100644
index 9e56613..0000000
--- a/builder/src/test/java/org/apache/tamaya/builder/util/types/CustomTypeCPropertyConverter.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.builder.util.types;
-
-import org.apache.tamaya.spi.ConversionContext;
-import org.apache.tamaya.spi.PropertyConverter;
-
-public class CustomTypeCPropertyConverter implements PropertyConverter<org.apache.tamaya.builder.util.types.CustomTypeC> {
-    @Override
-    public org.apache.tamaya.builder.util.types.CustomTypeC convert(String value, ConversionContext context) {
-        return org.apache.tamaya.builder.util.types.CustomTypeC.produceFrom(value);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter b/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
deleted file mode 100644
index b9e0d44..0000000
--- a/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertyConverter
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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 current 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.
-#
-org.apache.tamaya.builder.util.types.CustomTypeCPropertyConverter
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter b/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter
deleted file mode 100644
index f35e9c5..0000000
--- a/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertyFilter
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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 current 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.
-#
-org.apache.tamaya.builder.TestPropertyFilter

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertySource
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertySource b/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertySource
deleted file mode 100644
index 8b07205..0000000
--- a/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertySource
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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 current 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.
-#
-org.apache.tamaya.builder.TestPropertySource
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertySourceProvider
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertySourceProvider b/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertySourceProvider
deleted file mode 100644
index 9a19ea0..0000000
--- a/builder/src/test/resources/META-INF/services/org.apache.tamaya.spi.PropertySourceProvider
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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 current 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.
-#
-org.apache.tamaya.builder.TestPropertySourceProvider

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/configfiles/json/first.json
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/configfiles/json/first.json b/builder/src/test/resources/configfiles/json/first.json
deleted file mode 100644
index 822cf6e..0000000
--- a/builder/src/test/resources/configfiles/json/first.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "d": "D",
-  "e": "E"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/configfiles/json/second.json
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/configfiles/json/second.json b/builder/src/test/resources/configfiles/json/second.json
deleted file mode 100644
index e2c7778..0000000
--- a/builder/src/test/resources/configfiles/json/second.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "m": "M",
-  "n": "N"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/configfiles/json/simple.json
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/configfiles/json/simple.json b/builder/src/test/resources/configfiles/json/simple.json
deleted file mode 100644
index 0cab2ae..0000000
--- a/builder/src/test/resources/configfiles/json/simple.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "a": "A",
-  "b": "B"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/configfiles/json/third.json
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/configfiles/json/third.json b/builder/src/test/resources/configfiles/json/third.json
deleted file mode 100644
index 6b62b96..0000000
--- a/builder/src/test/resources/configfiles/json/third.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "p": "P",
-  "q": "Q"
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/builder/src/test/resources/configfiles/other/simple.oml
----------------------------------------------------------------------
diff --git a/builder/src/test/resources/configfiles/other/simple.oml b/builder/src/test/resources/configfiles/other/simple.oml
deleted file mode 100644
index 494dba3..0000000
--- a/builder/src/test/resources/configfiles/other/simple.oml
+++ /dev/null
@@ -1,19 +0,0 @@
-#
-# 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 current 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.
-#
-Key:=Value

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/configured-sysprops/pom.xml
----------------------------------------------------------------------
diff --git a/configured-sysprops/pom.xml b/configured-sysprops/pom.xml
new file mode 100644
index 0000000..3ba0a45
--- /dev/null
+++ b/configured-sysprops/pom.xml
@@ -0,0 +1,78 @@
+<!--
+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 current 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.tamaya.ext</groupId>
+        <artifactId>tamaya-sandbox</artifactId>
+        <version>0.3-incubating-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>tamaya-sysprops</artifactId>
+    <name>Apache Tamaya Modules - Configured System Properties</name>
+    <packaging>bundle</packaging>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Import-Package>
+                            org.apache.tamaya,
+                            org.apache.tamaya.spi,
+                            org.apache.tamaya.resources,
+                            org.apache.tamaya.spisupport,
+                            org.apache.tamaya.functions,
+                            javax.annotation,
+                            *
+                        </Import-Package>
+                        <Export-Package>
+                            org.apache.tamaya.integration.se
+                        </Export-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tamaya</groupId>
+            <artifactId>tamaya-api</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tamaya</groupId>
+            <artifactId>tamaya-core</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/configured-sysprops/src/main/java/org/apache/tamaya/integration/se/ConfiguredSystemProperties.java
----------------------------------------------------------------------
diff --git a/configured-sysprops/src/main/java/org/apache/tamaya/integration/se/ConfiguredSystemProperties.java b/configured-sysprops/src/main/java/org/apache/tamaya/integration/se/ConfiguredSystemProperties.java
new file mode 100644
index 0000000..bb4abbe
--- /dev/null
+++ b/configured-sysprops/src/main/java/org/apache/tamaya/integration/se/ConfiguredSystemProperties.java
@@ -0,0 +1,340 @@
+/*
+ * 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.integration.se;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.ConfigurationProvider;
+
+/**
+ * Properties implementation class that can be applied as current System properties by calling
+ * {@link ConfiguredSystemProperties#install()}. The system properties will
+ * then behave contextually depending on the current runtime configuration active.
+ */
+public class ConfiguredSystemProperties extends Properties {
+
+	private static final long serialVersionUID = 2152870929299226804L;
+
+	private static final Logger LOG = Logger.getLogger(ConfiguredSystemProperties.class.getName());
+    private Properties initialProperties;
+    private static volatile Properties contextualProperties;
+
+    private final Object LOCK = new Object();
+
+
+    private ConfiguredSystemProperties(Properties initialProperties) {
+        super(initialProperties);
+        this.initialProperties = initialProperties;
+    }
+
+    public static void install() {
+        Properties props = System.getProperties();
+        if (props instanceof ConfiguredSystemProperties) {
+            return;
+        }
+        ConfiguredSystemProperties systemProps = new ConfiguredSystemProperties(props);
+        LOG.finest("Installing enhanced system properties...");
+        System.setProperties(systemProps);
+        LOG.info("Installed enhanced system properties successfully.");
+    }
+
+    public static void uninstall() {
+        Properties props = System.getProperties();
+        if (props instanceof ConfiguredSystemProperties) {
+            Properties initialProperties = ((ConfiguredSystemProperties) props).initialProperties;
+            LOG.finest("Uninstalling enhanced system properties...");
+            System.setProperties(initialProperties);
+            LOG.info("Uninstalled enhanced system properties successfully.");
+        }
+    }
+
+    @Override
+    public String getProperty(String key) {
+        return getContextualProperties().getProperty(key);
+    }
+
+    @Override
+    public String getProperty(String key, String defaultValue) {
+        return getContextualProperties().getProperty(key, defaultValue);
+    }
+
+    @Override
+    public Enumeration<?> propertyNames() {
+        return getContextualProperties().propertyNames();
+    }
+
+    @Override
+    public Set<String> stringPropertyNames() {
+        return getContextualProperties().stringPropertyNames();
+    }
+
+    @Override
+    public synchronized int size() {
+        return getContextualProperties().size();
+    }
+
+    @Override
+    public synchronized Enumeration<Object> keys() {
+        return getContextualProperties().keys();
+    }
+
+    @Override
+    public synchronized Enumeration<Object> elements() {
+        return getContextualProperties().elements();
+    }
+
+    @Override
+    public synchronized boolean contains(Object value) {
+        return getContextualProperties().contains(value);
+    }
+
+    @Override
+    public boolean containsValue(Object value) {
+        return getContextualProperties().containsValue(value);
+    }
+
+    @Override
+    public synchronized boolean containsKey(Object key) {
+        return getContextualProperties().containsKey(key);
+    }
+
+    @Override
+    public synchronized Object get(Object key) {
+        return getContextualProperties().get(key);
+    }
+
+    @Override
+    public synchronized Object clone() {
+        return getContextualProperties().clone();
+    }
+
+    @Override
+    public Set<Object> keySet() {
+        return getContextualProperties().keySet();
+    }
+
+    @Override
+    public Set<Map.Entry<Object, Object>> entrySet() {
+        return getContextualProperties().entrySet();
+    }
+
+    @Override
+    public Collection<Object> values() {
+        return getContextualProperties().values();
+    }
+
+
+    @Override
+    public String toString() {
+        return getContextualProperties().toString();
+    }
+
+    @Override
+    public synchronized Object setProperty(String key, String value) {
+        return getContextualProperties().setProperty(key, value);
+    }
+
+    @Override
+    public synchronized void load(Reader reader) throws IOException {
+        getContextualProperties().load(reader);
+    }
+
+    @Override
+    public synchronized void load(InputStream inStream) throws IOException {
+        getContextualProperties().load(inStream);
+    }
+
+    @SuppressWarnings("deprecation")
+	@Override
+    public void save(OutputStream out, String comments) {
+        super.save(out, comments);
+    }
+
+    @Override
+    public void store(Writer writer, String comments) throws IOException {
+        getContextualProperties().store(writer, comments);
+    }
+
+    @Override
+    public void store(OutputStream out, String comments) throws IOException {
+        getContextualProperties().store(out, comments);
+    }
+
+    @Override
+    public void loadFromXML(InputStream in) throws IOException {
+        getContextualProperties().loadFromXML(in);
+    }
+
+    @Override
+    public void storeToXML(OutputStream os, String comment) throws IOException {
+        getContextualProperties().storeToXML(os, comment);
+    }
+
+    @Override
+    public void storeToXML(OutputStream os, String comment, String encoding) throws IOException {
+        getContextualProperties().storeToXML(os, comment, encoding);
+    }
+
+    @Override
+    public void list(PrintStream out) {
+        getContextualProperties().list(out);
+    }
+
+    @Override
+    public void list(PrintWriter out) {
+        getContextualProperties().list(out);
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return getContextualProperties().isEmpty();
+    }
+
+    @Override
+    public Object put(Object key, Object value) {
+        return getContextualProperties().put(key, value);
+    }
+
+    @Override
+    public Object remove(Object key) {
+        return getContextualProperties().remove(key);
+    }
+
+    @Override
+    public void putAll(Map<?, ?> t) {
+        getContextualProperties().putAll(t);
+    }
+
+    @Override
+    public void clear() {
+        getContextualProperties().clear();
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        return getContextualProperties().equals(o);
+    }
+
+    @Override
+    public int hashCode() {
+        return getContextualProperties().hashCode();
+    }
+
+//    JDK 8 and later...
+//    @Override
+//    public Object getOrDefault(Object key, Object defaultValue) {
+//        return getContextualProperties().getOrDefault(key, defaultValue);
+//    }
+//
+//    @Override
+//    public void forEach(BiConsumer<? super Object, ? super Object> action) {
+//        getContextualProperties().forEach(action);
+//    }
+//
+//
+//    @Override
+//    public Object computeIfAbsent(Object key, Function<? super Object, ?> mappingFunction) {
+//        return getContextualProperties().computeIfAbsent(key, mappingFunction);
+//    }
+//
+//    @Override
+//    public synchronized Object computeIfPresent(Object key, BiFunction<? super Object, ? super Object, ?> remappingFunction) {
+//        return getContextualProperties().computeIfPresent(key, remappingFunction);
+//    }
+//
+//    @Override
+//    public synchronized Object compute(Object key, BiFunction<? super Object, ? super Object, ?> remappingFunction) {
+//        return getContextualProperties().compute(key, remappingFunction);
+//    }
+//    @Override
+//    public void replaceAll(BiFunction<? super Object, ? super Object, ?> function) {
+//        getContextualProperties().replaceAll(function);
+//    }
+//
+//    @Override
+//    public Object putIfAbsent(Object key, Object value) {
+//        return getContextualProperties().putIfAbsent(key, value);
+//    }
+//
+//    @Override
+//    public boolean remove(Object key, Object value) {
+//        return getContextualProperties().remove(key, value);
+//    }
+//
+//    @Override
+//    public boolean replace(Object key, Object oldValue, Object newValue) {
+//        return getContextualProperties().replace(key, oldValue, newValue);
+//    }
+//
+//    @Override
+//    public Object replace(Object key, Object value) {
+//        return getContextualProperties().replace(key, value);
+//    }
+//
+//    @Override
+//    public Object merge(Object key, Object value, BiFunction<? super Object, ? super Object, ?> remappingFunction) {
+//        return getContextualProperties().merge(key, value, remappingFunction);
+//    }
+
+    public Properties getInitialProperties() {
+        return initialProperties;
+    }
+
+    /**
+     * Uninstalls the contextual system properties for the current context, as determined by the current
+     * context provider active.
+     */
+    public static void resetProperties() {
+        contextualProperties.clear();
+    }
+
+    protected Properties getContextualProperties() {
+        if (contextualProperties == null) {
+            synchronized (LOCK) {
+                if (contextualProperties == null) {
+                    contextualProperties = createNewProperties();
+                }
+            }
+        }
+        return contextualProperties;
+    }
+
+    protected Properties createNewProperties() {
+        Properties props = new Properties(initialProperties);
+        Configuration config = ConfigurationProvider.getConfiguration();
+        Map<String, String> configMap = config.getProperties();
+        for (Map.Entry<String, String> en : configMap.entrySet()) {
+            props.put(en.getKey(), en.getValue());
+        }
+        return props;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/configured-sysprops/tamaya-configured-sysprops.iml
----------------------------------------------------------------------
diff --git a/configured-sysprops/tamaya-configured-sysprops.iml b/configured-sysprops/tamaya-configured-sysprops.iml
new file mode 100644
index 0000000..c7f0f2e
--- /dev/null
+++ b/configured-sysprops/tamaya-configured-sysprops.iml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/../sysprops/target/classes" />
+    <output-test url="file://$MODULE_DIR$/../sysprops/target/test-classes" />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <excludeFolder url="file://$MODULE_DIR$/target" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tamaya.ext:tamaya-api:0.3-incubating-SNAPSHOT" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.tamaya.ext:tamaya-core:0.3-incubating-SNAPSHOT" level="project" />
+    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-annotation_1.2_spec:1.0-alpha-1" level="project" />
+  </component>
+</module>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/041f5998/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java
----------------------------------------------------------------------
diff --git a/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java b/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java
new file mode 100644
index 0000000..0c649a8
--- /dev/null
+++ b/consul/src/test/java/org/apache/tamaya/consul/ConsulPropertySourceTest.java
@@ -0,0 +1,75 @@
+/*
+ * 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.consul;
+
+import org.apache.tamaya.consul.ConsulPropertySource;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import java.util.Map;
+
+import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Created by atsticks on 07.01.16.
+ */
+public class ConsulPropertySourceTest {
+
+    private final ConsulPropertySource propertySource = new ConsulPropertySource();
+
+    @BeforeClass
+    public static void setup(){
+        System.setProperty("consul.urls", "http://127.0.0.1:8300");
+    }
+
+    @Test
+    public void testGetOrdinal() throws Exception {
+        assertEquals(propertySource.getOrdinal(), 1000);
+    }
+
+    @Test
+    public void testGetDefaultOrdinal() throws Exception {
+        assertEquals(propertySource.getDefaultOrdinal(), 1000);
+    }
+
+    @Test
+    public void testGetName() throws Exception {
+        assertEquals("consul", propertySource.getName());
+    }
+
+    @Test
+    public void testGet() throws Exception {
+        Map<String,String> props = propertySource.getProperties();
+        for(Map.Entry<String,String> en:props.entrySet()){
+            assertNotNull("Key not found: " + en.getKey(), propertySource.get(en.getKey()));
+        }
+    }
+
+    @Test
+    public void testGetProperties() throws Exception {
+        Map<String,String> props = propertySource.getProperties();
+        assertNotNull(props);
+    }
+
+    @Test
+    public void testIsScannable() throws Exception {
+        assertFalse(propertySource.isScannable());
+    }
+}
\ No newline at end of file