You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by st...@apache.org on 2014/12/27 14:58:03 UTC

[19/34] incubator-tamaya git commit: first step: move all sources to a 'dormant' directory

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/java/org/apache/tamaya/simple/SimplePropertiesAndCLISample.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/tamaya/simple/SimplePropertiesAndCLISample.java b/core/src/test/java/org/apache/tamaya/simple/SimplePropertiesAndCLISample.java
deleted file mode 100644
index e0351b2..0000000
--- a/core/src/test/java/org/apache/tamaya/simple/SimplePropertiesAndCLISample.java
+++ /dev/null
@@ -1,69 +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.simple;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.core.ConfigurationFunctions;
-import org.apache.tamaya.core.properties.PropertySourceBuilder;
-import org.junit.Test;
-
-/**
- * Created by Anatole on 24.02.14.
- */
-public class SimplePropertiesAndCLISample {
-
-    @Test
-    public void testSystemPropertyResolution() {
-        System.out.println(Configuration.evaluateValue("${sys:java.version}"));
-    }
-
-    @Test
-    public void testProgrammatixPropertySet() {
-        System.out.println(PropertySourceBuilder.of("test").addPaths("test", "classpath:test.properties").build());
-    }
-
-    @Test
-    public void testProgrammaticConfig() {
-//        ConfigurationFormat format = ConfigurationFormats.getPropertiesFormat();
-        Map<String, String> cfgMap = new HashMap<>();
-        cfgMap.put("param1", "value1");
-        cfgMap.put("a", "Adrian"); // overrides Anatole
-        Configuration config = Configuration.from(PropertySourceBuilder.of("myTestConfig").addPaths(
-                "classpath:test.properties").addPaths("classpath:cfg/test.xml")
-                .addArgs(new String[]{"-arg1", "--fullarg", "fullValue", "-myflag"}).addMap(cfgMap)
-                .build());
-        System.out.println(config.query(ConfigurationFunctions.getAreas()));
-        System.out.println("---");
-        System.out.println(config.query(ConfigurationFunctions.getAreas(s -> s.startsWith("another"))));
-        System.out.println("---");
-        System.out.println(config.query(ConfigurationFunctions.getTransitiveAreas()));
-        System.out.println("---");
-        System.out.println(config.query(ConfigurationFunctions.getTransitiveAreas(s -> s.startsWith("another"))));
-        System.out.println("---");
-        System.out.println(config);
-        System.out.print("--- b=");
-        System.out.println(config.get("b"));
-//        System.out.println("--- only a,b,c)");
-//        System.out.println(PropertySourceBuilder.of(config).filter((f) -> f.equals("a") || f.equals("b") || f.equals("c")).build());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/java/org/apache/tamaya/ucs/UC1ReadProperties.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/tamaya/ucs/UC1ReadProperties.java b/core/src/test/java/org/apache/tamaya/ucs/UC1ReadProperties.java
deleted file mode 100644
index e7f2049..0000000
--- a/core/src/test/java/org/apache/tamaya/ucs/UC1ReadProperties.java
+++ /dev/null
@@ -1,220 +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.
- */
-package org.apache.tamaya.ucs;
-
-import static junit.framework.TestCase.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-
-import java.util.Map;
-import java.util.stream.Collectors;
-
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.PropertySource;
-import org.apache.tamaya.core.ConfigurationFunctions;
-import org.apache.tamaya.core.properties.AggregationPolicy;
-import org.apache.tamaya.core.properties.PropertySourceBuilder;
-import org.junit.Test;
-
-/**
- * Configuration is organized as key/keys pairs. This basically can be modeled as {@code Map<String,String>}
- * Configuration should be as simple as possible. A {@code Map<String,String>} instance has methods that may not
- * be used in many use cases and/or are not easy to implement. Currently the following functionality
- * must be supported:
- * <ul>
- * <li>access a keys by key (+get+)</li>
- * <li>check if a keys is present (+containsKey+)</li>
- * <li>get a set current all defined keys (+keySet+)</li>
- * <li>a property provider must be convertible to a +Map+, by calling +getProperties()+</li>
- * <li>a property provider must get access to its meta information.</li>
- * </ul>
- * Additionally there are other requirement important for ease current use:
- * <ul>
- * <li>The API must never return null.</li>
- * <li>The API should support undefined values.</li>
- * <li>The API must support passing default values, to be returned if a keys is undefined.</li>
- * <li>The API must allow to throw exceptions, when a keys is undefined.
- * Customized exceptions hereby should be supported.</li>
- * <li>Properties can be stored in the classpath, on a file.</li>
- * <li>Properties can be stored as properties, xml-properties or as ini-files.</li>
- * <li>Properties can also be provided as properties, or as a Map<String,String></li>
- * </ul>
- */
-public class UC1ReadProperties {
-
-    @Test
-    public void example() {
-        Configuration config = Configuration.from(PropertySourceBuilder.of("test")
-                .addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build());
-//        String name = config.get("name").orElse("Anatole");
-//        BigDecimal bigNum = config.get("num.BD", BigDecimal.class).orElseThrow(() -> new IllegalStateException("Sorry"));
-//        double anotherNum = config.getDouble("num.Double").getAsDouble();
-//        long longNum = config.getLong("num.Long").orElse(288900L);
-
-        // or more simpler use area function
-        Configuration areaConfig2 = config.with(ConfigurationFunctions.selectArea("num"));
-        System.out.println(areaConfig2);
-
-        // iterator over an area, using streams only
-        Map<String, String> areaMap = config.getProperties().entrySet().stream()
-                .filter((e) -> e.getKey().startsWith("num."))
-                .collect(Collectors.toMap((e) -> e.getKey().substring("num.".length()), Map.Entry::getValue));
-        Configuration areaConfig = Configuration.from(PropertySourceBuilder.of("Test").addMap(areaMap).build());
-        System.out.println(areaConfig);
-    }
-
-    @Test
-    public void getConfigurationTest() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:barFoo.properties").build();
-        Configuration config = Configuration.from(provider);
-        assertNotNull(config);
-        assertTrue(config.isEmpty());
-        assertTrue(config.getProperties().isEmpty());
-    }
-
-    @Test
-    public void readBadPropertiesTest() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:barFoo.properties").build();
-        assertNotNull(provider);
-        assertTrue(provider.isEmpty());
-        assertTrue(provider.getProperties().isEmpty());
-    }
-
-    @Test
-    public void readPropertiesTest() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        assertNotNull(provider);
-        assertEquals(provider.get("a").get(), "aValue");
-        assertEquals(provider.get("b").get(), "bValue");
-        assertEquals(provider.get("c").get(), "cValue");
-        assertEquals(provider.get("a.b.c").get(), "abcValue");
-        assertEquals(provider.get("a.b.a").get(), "abaValue");
-        assertEquals(provider.get("a.b.b").get(), "abbValue");
-        assertEquals(provider.get("a.b").get(), "abValue");
-        assertEquals(provider.get("a.a.a").get(), "aaaValue");
-        assertEquals(provider.get("b.b.b").get(), "bbbValue");
-        assertEquals(provider.get("c.c.c").get(), "cccValue");
-        assertEquals(provider.get("numInt").get(), "9999");
-        assertEquals(provider.get("num.Int").get(), "123");
-        assertEquals(provider.get("num.Byte").get(), "100");
-        assertEquals(provider.get("boolean").get(), "true");
-        assertEquals(provider.get("num.BD").get(), "2376523725372653.287362836283628362863");
-        assertEquals(provider.get("num.Double").get(), "21334.43254");
-        assertTrue(!provider.get("blabla").isPresent());
-        assertTrue(provider.get("num.BD").isPresent());
-    }
-
-    @Test
-    public void readXmlPropertiesTest() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.xml").build();
-        assertNotNull(provider);
-        assertEquals(provider.get("a-xml").get(), "aFromXml");
-        assertEquals(provider.get("b-xml").get(), "bFromXml");
-        assertEquals(provider.get("a.b.c-xml").get(), "abcFromXml");
-    }
-
-    @Test
-    public void readIniPropertiesTest() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.ini").build();
-        assertNotNull(provider);
-        assertEquals(provider.get("a.b.c").get(), "abcValue-fromIni");
-        assertEquals(provider.get("a.b.b").get(), "abbValue-fromIni");
-        assertEquals(provider.get("a.b.a").get(), "abaValue-fromIni");
-        assertEquals(provider.get("mixed.a.b").get(), "abValue");
-        assertFalse(provider.get("mixed.foo").isPresent());
-        assertTrue(provider.get("num.BD").isPresent());
-    }
-
-    @Test
-    public void readAllPropertiesTest() {
-        PropertySource provider = PropertySourceBuilder.of("Test").withAggregationPolicy(AggregationPolicy.IGNORE_DUPLICATES)
-                .addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.*").build();
-        assertNotNull(provider);
-        // fromMap ini file
-        assertEquals(provider.get("a.b.c").get(), "abcValue-fromIni");
-        assertEquals(provider.get("a.b.b").get(), "abbValue-fromIni");
-        assertEquals(provider.get("a.b.a").get(), "abaValue-fromIni");
-        // fromMap properties
-        assertTrue(provider.get("num.BD").isPresent());
-        // fromMap xml properties
-        assertEquals(provider.get("a-xml").get(), "aFromXml");
-        assertEquals(provider.get("b-xml").get(), "bFromXml");
-    }
-
-    @Test
-    public void checkForAValue() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        assertFalse(provider.get("blabla").isPresent());
-        assertTrue(provider.get("num.BD").isPresent());
-        assertFalse(provider.get("blabla").isPresent());
-        assertTrue(provider.get("num.BD").isPresent());
-    }
-
-    @Test
-    public void checkKeys() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        assertEquals(provider.getProperties().size(), 16);
-        assertTrue(provider.getProperties().keySet().contains("boolean"));
-        assertFalse(provider.getProperties().keySet().contains("blabla"));
-    }
-
-    @Test
-    public void checkToMap() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        Map<String, String> map = provider.getProperties();
-        assertNotNull(map);
-        assertEquals(map.size(), 16);
-        assertEquals(provider.getProperties().keySet(), map.keySet());
-        assertTrue(map.keySet().contains("boolean"));
-        assertFalse(map.keySet().contains("blabla"));
-    }
-
-    @Test
-    public void checkMetaInfo() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        assertNotNull(provider.getName());
-    }
-
-    @Test
-    public void checkNeverNull() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        assertNotNull(provider.get("blabla"));
-        assertNotNull(provider.get("a.b.c"));
-    }
-
-    @Test
-    public void checkUndefined() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        assertFalse(provider.get("blabla").isPresent());
-        assertTrue(provider.get("a.b.c").isPresent());
-    }
-
-    @Test
-    public void checkPassDefaultValues() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        assertEquals("myDefaultValue", provider.get("blabla").orElse("myDefaultValue"));
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void checkThrowCustomException() {
-        PropertySource provider = PropertySourceBuilder.of("Test").addPaths("classpath:ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties").build();
-        provider.get("blabla").orElseThrow(() -> new IllegalStateException("checkThrowCustomException"));
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/java/org/apache/tamaya/ucs/UC2CombineProperties.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/tamaya/ucs/UC2CombineProperties.java b/core/src/test/java/org/apache/tamaya/ucs/UC2CombineProperties.java
deleted file mode 100644
index 60ab6ea..0000000
--- a/core/src/test/java/org/apache/tamaya/ucs/UC2CombineProperties.java
+++ /dev/null
@@ -1,70 +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.
- */
-package org.apache.tamaya.ucs;
-
-import org.apache.tamaya.ConfigException;
-import org.apache.tamaya.PropertySource;
-import org.apache.tamaya.core.properties.AggregationPolicy;
-import org.apache.tamaya.core.properties.PropertySourceBuilder;
-import org.junit.Test;
-
-/**
- * Configuration is organized as key/keys pairs. This basically can be modeled as {@code Map<String,String>}
- * Configuration should be as simple as possible. Advanced use cases can often easily implemented by combining
- * multiple property maps and applying hereby some combination policy. This test class demonstrates the different
- * options Tamaya is providing and the according mechanisms.
- */
-public class UC2CombineProperties {
-
-    /**
-     * The most common use cases is aggregating two property config to new provider, hereby {@link org.apache.tamaya.core.properties.AggregationPolicy}
-     * defines the current variants supported.
-     */
-    @Test
-    public void simpleAggregationTests() {
-        PropertySource props1 = PropertySourceBuilder.of().addPaths("classpath:ucs/UC2CombineProperties/props1.properties").build();
-        PropertySource props2 = PropertySourceBuilder.of().addPaths("classpath:ucs/UC2CombineProperties/props2.properties").build();
-        PropertySource unionOverriding = PropertySourceBuilder.of(props1).withAggregationPolicy(AggregationPolicy.OVERRIDE).addProviders(props2).build();
-        System.out.println("unionOverriding: " + unionOverriding);
-        PropertySource unionIgnoringDuplicates = PropertySourceBuilder.of(props1).withAggregationPolicy(AggregationPolicy.IGNORE_DUPLICATES).addProviders(props2).build();
-        System.out.println("unionIgnoringDuplicates: " + unionIgnoringDuplicates);
-        PropertySource unionCombined = PropertySourceBuilder.of(props1).withAggregationPolicy(AggregationPolicy.COMBINE).addProviders(props2).build();
-        System.out.println("unionCombined: " + unionCombined);
-        try{
-            PropertySourceBuilder.of(props1).withAggregationPolicy(AggregationPolicy.EXCEPTION).addProviders(props2).build();
-        }
-        catch(ConfigException e){
-            // expected!
-        }
-    }
-
-    /**
-     * For advanced use cases aggregation .
-     */
-    @Test
-    public void dynamicAggregationTests() {
-        PropertySource props1 = PropertySourceBuilder.of().addPaths("classpath:ucs/UC2CombineProperties/props1.properties").build();
-        PropertySource props2 = PropertySourceBuilder.of().addPaths("classpath:ucs/UC2CombineProperties/props2.properties").build();
-        PropertySource props = PropertySourceBuilder.of().withAggregationPolicy((k, v1, v2) -> (v1 != null ? v1 : "") + '[' + v2 + "]").withName("dynamicAggregationTests")
-                .aggregate(props1, props2).build();
-        System.out.println(props);
-    }
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/java/org/apache/tamaya/ucs/deltaspike/ConfigFiltering.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/tamaya/ucs/deltaspike/ConfigFiltering.java b/core/src/test/java/org/apache/tamaya/ucs/deltaspike/ConfigFiltering.java
deleted file mode 100644
index 3269b3c..0000000
--- a/core/src/test/java/org/apache/tamaya/ucs/deltaspike/ConfigFiltering.java
+++ /dev/null
@@ -1,60 +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.
- */
-package org.apache.tamaya.ucs.deltaspike;
-
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.core.properties.PropertySourceBuilder;
-
-import java.net.URL;
-
-/**
- * This is one of possible multiple comparisons of Tamaya functionality with Deltapike.
- * <pre>
- * A company uses REST endpoints and need to talk to those.
- * So we need to configure a few things:
- * 1.) the endpoint URL
- * 2.) the username which should be used to connect (e.g. over https, BASIC auth, whatever)
- * 3.) the passphrase which should be used to connect.
- *
- * The security credentials (passphrase) should not get stored in plaintext but encrypted using PKI. It should of course also not get logged out in clear text but shall get masked if logging out the configured values is enabled.
- *
- * In DeltaSpike I'd just register a ConfigFilter to do the password decoding on the fly.
- * </pre>
- */
-public class ConfigFiltering {
-
-    public void scenario1UseAdapter(){
-        URL endPoint = Configuration.current().get("endPointURL", URL.class).get();
-        String uid = Configuration.current().get("endPointURL.user").get();
-//        String pwd = Configuration.current().getAdapted("endPointURL.password", v -> MyPKI.decrypt(v));
-    }
-
-    public void scenario1AddFilterOnSPI(){
-        URL endPoint = Configuration.current().get("endPointURL", URL.class).get();
-        String uid = Configuration.current().get("endPointURL.user").get();
-        String pwd = Configuration.current().get("endPointURL.password").get();
-
-        // In the SPI
-        PropertySourceBuilder.of().addPaths("...").filterValues((k,v) -> k.equals("endPointURL.password")?MyPKI.decrypt(v):v).build();
-    }
-
-    private static class MyPKI{
-        public static String decrypt(String val){return val;};
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/beans.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/beans.xml b/core/src/test/resources/META-INF/beans.xml
deleted file mode 100644
index 1d5c20b..0000000
--- a/core/src/test/resources/META-INF/beans.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-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.
--->
-
-<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://jboss.org/schema/cdi/beans_1_0.xsd">
-
-</beans>
-

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/config.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/config.properties b/core/src/test/resources/META-INF/config.properties
deleted file mode 100644
index d7b8927..0000000
--- a/core/src/test/resources/META-INF/config.properties
+++ /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.environmentOrder=root,system,ear,application
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/config/example.ini
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/config/example.ini b/core/src/test/resources/META-INF/config/example.ini
deleted file mode 100644
index 95a2b7c..0000000
--- a/core/src/test/resources/META-INF/config/example.ini
+++ /dev/null
@@ -1,31 +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.
-#
-[persons.anatole]
-prename=Anatole
-name=Tresch
-address=Technoparkstrasse 10
-zip=8070
-location=Zürich
-
-[persons.peter]
-prename=Peter
-name=Fischbach
-address=Hand Platz
-zip=4556
-location=Unterland

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/config/example.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/config/example.properties b/core/src/test/resources/META-INF/config/example.properties
deleted file mode 100644
index 93d70f9..0000000
--- a/core/src/test/resources/META-INF/config/example.properties
+++ /dev/null
@@ -1,31 +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.
-#
-persons=joe,anne
-
-persons.joe.prename=Joe
-persons.joe.name=Foo
-persons.joe.address=15, MyBar Street
-persons.joe.zip=80000
-persons.joe.location=Nowhere
-
-persons.anne.prename=Annemarie
-persons.anne.name=Bar
-persons.anne.address=James Strasse 16a
-persons.anne.zip=1234
-persons.anne.location=Nowhere
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/config/example.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/config/example.xml b/core/src/test/resources/META-INF/config/example.xml
deleted file mode 100644
index e3c050a..0000000
--- a/core/src/test/resources/META-INF/config/example.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-#
-# Copyright 2014 Anatole Tresch and other (see authors).
-#
-# 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.
-#
--->
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<properties version="1.0">
-    <entry key="persons.gorilla.prename">Bubu</entry>
-    <entry key="persons.gorilla.name">-</entry>
-    <entry key="persons.gorilla.address">Zurich Zoo</entry>
-    <entry key="persons.gorilla.zip">8111</entry>
-    <entry key="persons.gorilla.location">Zurich</entry>
-</properties>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/configuration/example.ini
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/configuration/example.ini b/core/src/test/resources/META-INF/configuration/example.ini
deleted file mode 100644
index e2cc979..0000000
--- a/core/src/test/resources/META-INF/configuration/example.ini
+++ /dev/null
@@ -1,18 +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.
-ignore=value

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/configuration/example.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/configuration/example.properties b/core/src/test/resources/META-INF/configuration/example.properties
deleted file mode 100644
index ed6148f..0000000
--- a/core/src/test/resources/META-INF/configuration/example.properties
+++ /dev/null
@@ -1,20 +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.
-country=Brazil
-nacionality=Brazilian
-love=poliana
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/configuration/example.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/configuration/example.xml b/core/src/test/resources/META-INF/configuration/example.xml
deleted file mode 100644
index 6a3694a..0000000
--- a/core/src/test/resources/META-INF/configuration/example.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-#
-# Copyright 2014 Anatole Tresch and other (see authors).
-#
-# 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.
-#
--->
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<properties version="1.0">
-    <entry key="twitter.otavio">otaviojava</entry>
-    <entry key="team">Bahia</entry>
-    <entry key="sport">Soccer</entry>
-</properties>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/env/application.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/env/application.properties b/core/src/test/resources/META-INF/env/application.properties
deleted file mode 100644
index fa9c3a7..0000000
--- a/core/src/test/resources/META-INF/env/application.properties
+++ /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.
-#
-environment.applicationId=MyApp1
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/env/ear.ini
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/env/ear.ini b/core/src/test/resources/META-INF/env/ear.ini
deleted file mode 100644
index eb72fd4..0000000
--- a/core/src/test/resources/META-INF/env/ear.ini
+++ /dev/null
@@ -1,20 +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.
-#
-[environment]
-earId=myEar1
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/env/system.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/env/system.properties b/core/src/test/resources/META-INF/env/system.properties
deleted file mode 100644
index c471a3c..0000000
--- a/core/src/test/resources/META-INF/env/system.properties
+++ /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.
-#
-systemId=test
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/meta-model.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/meta-model.properties b/core/src/test/resources/META-INF/meta-model.properties
deleted file mode 100644
index f3199f2..0000000
--- a/core/src/test/resources/META-INF/meta-model.properties
+++ /dev/null
@@ -1,18 +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.
-#

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/services/org.apache.tamaya.core.spi.ConfigurationProviderSpi
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/services/org.apache.tamaya.core.spi.ConfigurationProviderSpi b/core/src/test/resources/META-INF/services/org.apache.tamaya.core.spi.ConfigurationProviderSpi
deleted file mode 100644
index c4ba801..0000000
--- a/core/src/test/resources/META-INF/services/org.apache.tamaya.core.spi.ConfigurationProviderSpi
+++ /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.internal.TestConfigProvider
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/META-INF/services/org.apache.tamaya.core.spi.EnvironmentProvider
----------------------------------------------------------------------
diff --git a/core/src/test/resources/META-INF/services/org.apache.tamaya.core.spi.EnvironmentProvider b/core/src/test/resources/META-INF/services/org.apache.tamaya.core.spi.EnvironmentProvider
deleted file mode 100644
index 74382e7..0000000
--- a/core/src/test/resources/META-INF/services/org.apache.tamaya.core.spi.EnvironmentProvider
+++ /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.metamodel.environment.TestEnvironmentProvider
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/cfg/autoloaded.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/cfg/autoloaded.xml b/core/src/test/resources/cfg/autoloaded.xml
deleted file mode 100644
index b64cb76..0000000
--- a/core/src/test/resources/cfg/autoloaded.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-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.
--->
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<properties version="1.0">
-	<entry key="testFromXml">testValue</entry>
-    <entry key="b">Bill</entry>
-    <entry key="a.compound.area.entry">myCompundAreaVlaueFromXml</entry>
-    <entry key="an.area.entry">myCompundAreaVlaueFromXml2</entry>
-    <!-- DirectMapping test -->
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.value1">This \${JAVA_HOME} is cool!</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.value2">Should not be set because @NoConfig !</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.testProperty">a test property value</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.runtimeVersion">my RT 1-0-0--build-1234</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.int1">1</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.int2">22</entry>
-</properties>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/cfg/test.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/cfg/test.xml b/core/src/test/resources/cfg/test.xml
deleted file mode 100644
index b64cb76..0000000
--- a/core/src/test/resources/cfg/test.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-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.
--->
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<properties version="1.0">
-	<entry key="testFromXml">testValue</entry>
-    <entry key="b">Bill</entry>
-    <entry key="a.compound.area.entry">myCompundAreaVlaueFromXml</entry>
-    <entry key="an.area.entry">myCompundAreaVlaueFromXml2</entry>
-    <!-- DirectMapping test -->
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.value1">This \${JAVA_HOME} is cool!</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.value2">Should not be set because @NoConfig !</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.testProperty">a test property value</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.runtimeVersion">my RT 1-0-0--build-1234</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.int1">1</entry>
-    <entry key="org.apache.tamaya.samples.annotations.AutoConfiguredClass.int2">22</entry>
-</properties>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/test.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/test.properties b/core/src/test/resources/test.properties
deleted file mode 100644
index 6798ad9..0000000
--- a/core/src/test/resources/test.properties
+++ /dev/null
@@ -1,27 +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.
-#
-a=Anatole
-b=Bj�rn
-c=Charles
-d=Dani
-e=Eduard
-f=Fane
-g=Gil
-another.compound.area.entry=thisTimeFromProperties...
-another.area.entry=thisTimeFromProperties2...
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.ini
----------------------------------------------------------------------
diff --git a/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.ini b/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.ini
deleted file mode 100644
index 6f4301b..0000000
--- a/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.ini
+++ /dev/null
@@ -1,41 +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.
-#
-[a.b]
-c=abcValue-fromIni
-a=abaValue-fromIni
-b=abbValue-fromIni
-
-[mixed]
-a.b=abValue
-a.a.a=aaaValue
-b.b.b=bbbValue
-c.c.c=cccValue
-
-[num]
-Int=123
-Byte=100
-BD=2376523725372653.287362836283628362863
-Double=21334.43254
-
-[other]
-boolean=true
-a=aValue
-b=bValue
-c=cValue
-numInt=9999s

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties b/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties
deleted file mode 100644
index 2b19362..0000000
--- a/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.properties
+++ /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 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.
-#
-a=aValue
-b=bValue
-c=cValue
-a.b.c=abcValue
-a.b.a=abaValue
-a.b.b=abbValue
-a.b=abValue
-a.a.a=aaaValue
-b.b.b=bbbValue
-c.c.c=cccValue
-numInt=9999
-num.Int=123
-num.Byte=100
-boolean=true
-num.BD=2376523725372653.287362836283628362863
-num.Double=21334.43254

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.xml b/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.xml
deleted file mode 100644
index 535134f..0000000
--- a/core/src/test/resources/ucs/UC1ReadProperties/UC1ReadPropertiesTest.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-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.
--->
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<properties version="1.0">
-	<entry key="a-xml">aFromXml</entry>
-    <entry key="b-xml">bFromXml</entry>
-    <entry key="a.b.c-xml">abcFromXml</entry>
-</properties>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/ucs/UC2CombineProperties/props1.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/ucs/UC2CombineProperties/props1.properties b/core/src/test/resources/ucs/UC2CombineProperties/props1.properties
deleted file mode 100644
index a7590ae..0000000
--- a/core/src/test/resources/ucs/UC2CombineProperties/props1.properties
+++ /dev/null
@@ -1,24 +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.
-#
-a=a
-b=b
-c=c
-g=g
-h=h
-i=i

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/core/src/test/resources/ucs/UC2CombineProperties/props2.properties
----------------------------------------------------------------------
diff --git a/core/src/test/resources/ucs/UC2CombineProperties/props2.properties b/core/src/test/resources/ucs/UC2CombineProperties/props2.properties
deleted file mode 100644
index 692ced3..0000000
--- a/core/src/test/resources/ucs/UC2CombineProperties/props2.properties
+++ /dev/null
@@ -1,24 +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.
-#
-a=A
-b=B
-c=C
-d=D
-e=E
-f=F

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/dormant/api/pom.xml
----------------------------------------------------------------------
diff --git a/dormant/api/pom.xml b/dormant/api/pom.xml
new file mode 100644
index 0000000..78925f5
--- /dev/null
+++ b/dormant/api/pom.xml
@@ -0,0 +1,85 @@
+<!--
+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</groupId>
+        <artifactId>tamaya-all</artifactId>
+        <version>0.1-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <artifactId>tamaya-api</artifactId>
+    <name>Apache Tamaya - API</name>
+    <description>The API defines a complete SE based API for reading, creating an dmanaging of configuration and
+        environment data.
+    </description>
+    <packaging>jar</packaging>
+
+    <properties>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>attach-javadocs</id>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <additionalparam>-Xdoclint:none</additionalparam>
+                    <detectLinks>false</detectLinks>
+                    <keywords>true</keywords>
+                    <linksource>false</linksource>
+                    <failOnError>false</failOnError>
+                    <verbose>false</verbose>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>prepare-agent</id>
+                        <goals>
+                            <goal>prepare-agent</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/dormant/api/src/main/java/org/apache/tamaya/ConfigException.java
----------------------------------------------------------------------
diff --git a/dormant/api/src/main/java/org/apache/tamaya/ConfigException.java b/dormant/api/src/main/java/org/apache/tamaya/ConfigException.java
new file mode 100644
index 0000000..bac2ef4
--- /dev/null
+++ b/dormant/api/src/main/java/org/apache/tamaya/ConfigException.java
@@ -0,0 +1,44 @@
+/*
+ * 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;
+
+/**
+ * Exception class (runtime exception) for configuration issues.
+ */
+public class ConfigException extends RuntimeException{
+
+    private static final long serialVersionUID = -5886094818057522680L;
+
+    /**
+     * Creates a new configuration exception.
+     * @param message the exception message, not null.
+     */
+    public ConfigException(String message){
+        super(message);
+    }
+
+    /**
+     * Creates a new configuration exception.
+     * @param message the exception message, not null.
+     * @param t the throwable.
+     */
+    public ConfigException(String message, Throwable t){
+        super(message, t);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/dormant/api/src/main/java/org/apache/tamaya/ConfigQuery.java
----------------------------------------------------------------------
diff --git a/dormant/api/src/main/java/org/apache/tamaya/ConfigQuery.java b/dormant/api/src/main/java/org/apache/tamaya/ConfigQuery.java
new file mode 100644
index 0000000..58d8742
--- /dev/null
+++ b/dormant/api/src/main/java/org/apache/tamaya/ConfigQuery.java
@@ -0,0 +1,37 @@
+/*
+ * 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;
+
+
+/**
+ * Interface for an query that converts a Configuration into another object. One typical
+ * use cases would creating a complex configuration parameter type fromMap a Configuration instance or
+ * constraint views on configuration.
+ */
+@FunctionalInterface
+public interface ConfigQuery<T>{
+
+    /**
+     * Queries the given configuration.
+     * @param config the configuration to be wuiried, not null.
+     * @return the result T.
+     */
+    T query(Configuration config);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/dormant/api/src/main/java/org/apache/tamaya/Configuration.java
----------------------------------------------------------------------
diff --git a/dormant/api/src/main/java/org/apache/tamaya/Configuration.java b/dormant/api/src/main/java/org/apache/tamaya/Configuration.java
new file mode 100644
index 0000000..fa61447
--- /dev/null
+++ b/dormant/api/src/main/java/org/apache/tamaya/Configuration.java
@@ -0,0 +1,366 @@
+/*
+ * 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;
+
+import org.apache.tamaya.spi.ConfigurationFactorySpi;
+import org.apache.tamaya.spi.ConfigurationSpi;
+import org.apache.tamaya.spi.ServiceContext;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.function.UnaryOperator;
+
+/**
+ * A configuration models a aggregated set current properties, identified by a unique key, but adds higher level access functions to
+ * a {@link PropertySource}. Hereby in most cases a configuration is a wrapper around a composite
+ * {@link PropertySource} instance, which may combine multiple child config in well defined tree like structure,
+ * where nodes define logically the rules current priority, filtering, combination and overriding.
+ * <br/>
+ * <h3>Implementation Requirements</h3>
+ * Implementations current this interface must be
+ * <ul>
+ * <li>Thread safe.
+ * <li>Immutable
+ * </ul>
+ * It is not recommended that implementations also are serializable, since the any configuration can be <i>freezed</i>
+ * by reading out its complete configuration map into a serializable and remotable structure. This helps significantly
+ * simplifying the development current this interface, e.g. for being backed up by systems and stores that are not part current
+ * this library at all.
+ */
+public interface Configuration extends PropertyMapSupplier {
+
+    /**
+     * An empty and immutable Configuration instance.
+     */
+    public static final Configuration EMPTY_CONFIGURATION = new Configuration() {
+
+        @Override
+        public String getName() {
+            return "<empty>";
+        }
+
+        @Override
+        public Optional<String> get(String key) {
+            return Optional.empty();
+        }
+
+        @Override
+        public Map<String, String> getProperties() {
+            return Collections.emptyMap();
+        }
+
+        @Override
+        public String toString(){
+            return "PropertySource [name=<empty>]";
+        }
+    };
+
+    /**
+     * Get the name of the property source. The name should be unique for the type of source, whereas the id is used
+     * to ensure unique identity, either locally or remotely.
+     * @return the configuration's name, never null.
+     */
+    String getName();
+
+    /**
+     * Access a property.
+     *
+     * @param key the property's key, not null.
+     * @return the property's keys.
+     */
+    Optional<String> get(String key);
+
+    /**
+     * Determines if this config source should be scanned for its list of properties.
+     *
+     * Generally, slow ConfigSources should return false here.
+     *
+     * @return true if this ConfigSource should be scanned for its list of properties,
+     * false if it should not be scanned.
+     */
+    default boolean isScannable(){
+        return true;
+    }
+
+    /**
+     * Allows to quickly check, if a provider is empty.
+     *
+     * @return true, if the provier is empty.
+     */
+    default boolean isEmpty() {
+        return getProperties().isEmpty();
+    }
+
+    /**
+     * Get the property keys as {@link Boolean}.
+     *
+     * @param key the property's absolute, or relative path, e.g. {@code
+     *            a/b/c/d.myProperty}.
+     * @return the property's keys.
+     * @throws ConfigException if the configured value could not be converted to the target type.
+     */
+	default Boolean getBoolean(String key) {
+		Optional<Boolean> val = get(key, Boolean.class);
+		if (val.isPresent()) {
+			return val.get();
+		}
+		return null;
+	}
+
+    /**
+     * Get the property keys as {@link Integer}.
+     *
+     * @param key the property's absolute, or relative path, e.g. @code
+     *            a/b/c/d.myProperty}.
+     * @return the property's keys.
+     * @throws ConfigException if the configured value could not be converted to the target type.
+     */
+    default OptionalInt getInteger(String key){
+        Optional<Integer> val = get(key, Integer.class);
+        if(val.isPresent()){
+            return OptionalInt.of(val.get());
+        }
+        return OptionalInt.empty();
+    }
+
+
+    /**
+     * Get the property keys as {@link Long}.
+     *
+     * @param key the property's absolute, or relative path, e.g. @code
+     *            a/b/c/d.myProperty}.
+     * @return the property's keys.
+     * @throws ConfigException if the configured value could not be converted to the target type.
+     */
+    default OptionalLong getLong(String key){
+        Optional<Long> val = get(key, Long.class);
+        if(val.isPresent()){
+            return OptionalLong.of(val.get());
+        }
+        return OptionalLong.empty();
+    }
+
+
+    /**
+     * Get the property keys as {@link Double}.
+     *
+     * @param key the property's absolute, or relative path, e.g. @code
+     *            a/b/c/d.myProperty}.
+     * @return the property's keys.
+     * @throws ConfigException if the configured value could not be converted to the target type.
+     */
+    default OptionalDouble getDouble(String key){
+
+        Optional<Double> val = get(key, Double.class);
+        if(val.isPresent()){
+            return OptionalDouble.of(val.get());
+        }
+        return OptionalDouble.empty();
+    }
+
+
+    /**
+     * Get the property keys as type {@code Class<T>}.
+     * <p>
+     * If {@code Class<T>} is not one current
+     * {@code Boolean, Short, Integer, Long, Float, Double, BigInteger,
+     * BigDecimal, String} , an according adapter must be
+     * available to perform the conversion fromMap {@link String} to
+     * {@code Class<T>}.
+     *
+     * @param key     the property's absolute, or relative path, e.g. @code
+     *                a/b/c/d.myProperty}.
+     * @param adapter the PropertyAdapter to perform the conversion fromMap
+     *                {@link String} to {@code Class<T>}, not {@code null}.
+     * @return the property's keys.
+     * @throws ConfigException if the keys could not be converted to the required target
+     *                                  type, or no such property exists.
+     */
+    default <T> Optional<T> getAdapted(String key, PropertyAdapter<T> adapter){
+        Optional<String> value = get(key);
+        if(value.isPresent()) {
+            return Optional.ofNullable(adapter.adapt(value.get()));
+        }
+        return Optional.empty();
+    }
+
+//    /**
+//     * Get the property with the given key as type {@code Class<T>}.
+//     * <p>
+//     * If {@code Class<T>} is not one current
+//     * {@code Boolean, Short, Integer, Long, Float, Double, BigInteger,
+//     * BigDecimal, String} , an according adapter must be
+//     * available to perform the conversion from {@link String} to
+//     * {@code Class<T>}.
+//     *
+//     * @param key     the property's absolute, or relative path, e.g. {@code
+//     *                a/b/c/d.myProperty}.
+//     * @param adapter the PropertyAdapter to perform the conversion from
+//     *                {@link String} to {@code Class<T>}, not {@code null}.
+//     * @return the property value, never null.
+//     * @throws ConfigException if the keys could not be converted to the required target
+//     *                                  type, or no such property exists.
+//     */
+//    default <T> DynamicValue<T> getAdaptedDynamicValue(String key, PropertyAdapter<T> adapter){
+//        Optional<String> value = get(key);
+//        if(value.isPresent()) {
+//            return DynamicValue.ofNullable(getName()+':' + key, adapter.adapt(value.get()));
+//        }
+//        return DynamicValue.empty(getName()+':' + key);
+//    }
+
+
+    /**
+     * Get the property keys as type T. This will implicitly require a corresponding {@link
+     * PropertyAdapter} to be available that is capable current providing type T
+     * fromMap the given String keys.
+     *
+     * @param key          the property's absolute, or relative path, e.g. @code
+     *                     a/b/c/d.myProperty}.
+     * @param type         The target type required, not null.
+     * @return the property value, never null..
+     * @throws ConfigException if the keys could not be converted to the required target
+     *                                  type.
+     */
+    default <T> Optional<T> get(String key, Class<T> type){
+        return getAdapted(key, PropertyAdapter.getInstance(type));
+    }
+
+//    /**
+//     * Get the property value as {@link org.apache.tamaya.DynamicValue}. This will implicitly require a corresponding {@link
+//     * PropertyAdapter} that is capable of converting the String value to the current required type T.
+//     *
+//     * @param key          the property's absolute, or relative path, e.g. {@code
+//     *                     a/b/c/d.myProperty}.
+//     * @param type         The target type required, not null.
+//     * @return the dynamic value instance, never null.
+//     * @throws ConfigException if the keys could not be converted to the required target
+//     *                                  type.
+//     */
+//    default <T> DynamicValue<T> getDynamicValue(String key, Class<T> type){
+//        return getAdaptedDynamicValue(key, PropertyAdapter.getInstance(type));
+//    }
+
+    /**
+     * Extension point for adjusting configuration.
+     *
+     * @param operator A configuration operator, e.g. a filter, or an adjuster
+     *                 combining configurations.
+     * @return the new adjusted configuration, never {@code null}.
+     */
+    default Configuration with(UnaryOperator<Configuration> operator){
+        return operator.apply(this);
+    }
+
+
+    /**
+     * Query a configuration.
+     *
+     * @param query the query, never {@code null}.
+     * @return the result
+     */
+    default <T> T query(Function<Configuration,T> query){
+        return query.apply(this);
+    }
+
+
+    /**
+     * Allows to check if a configuration with a given name is defined.
+     *
+     * @param name the configuration's name, not null, not empty.
+     * @return true, if such a configuration is defined.
+     */
+    public static boolean isAvailable(String name){
+        return ServiceContext.getInstance().getSingleton(ConfigurationSpi.class).isConfigurationAvailable(name);
+    }
+
+    /**
+     * Creates a configuration from a {@link org.apache.tamaya.PropertySource}.
+     *
+     * @param propertySource the property source
+     * @return the corresponding Configuration instance, never null.
+     */
+    public static Configuration from(PropertySource propertySource){
+        return ServiceContext.getInstance().getSingleton(ConfigurationFactorySpi.class, () -> new ConfigurationFactorySpi(){}).from(propertySource);
+    }
+
+    /**
+     * Access a configuration by name.
+     *
+     * @param name the configuration's name, not null, not empty.
+     * @return the corresponding Configuration instance, never null.
+     * @throws ConfigException if no such configuration is defined.
+     */
+    public static Configuration current(String name){
+        return ServiceContext.getInstance().getSingleton(ConfigurationSpi.class).getConfiguration(name);
+    }
+
+    /**
+     * Access a configuration.
+     *
+     * @return the corresponding Configuration instance, never null.
+     * @throws ConfigException if no such configuration is defined.
+     */
+    public static Configuration current(){
+        return ServiceContext.getInstance().getSingleton(ConfigurationSpi.class).getConfiguration();
+    }
+
+    /**
+     * Access a typed configuration, based on the default configuration.
+     *
+     * @param type the annotated configuration type (could be an interface or
+     *             a non abstract class), not null.
+     * @param configurations overriding configurations to be used for evaluating the values for injection into {@code instance}, not null.
+     *                       If no such config is passed, the default configurationa provided by the current
+     *                       registered providers are used.
+     * @return the corresponding typed Configuration instance, never null.
+     * @throws ConfigException if the configuration could not be resolved.
+     */
+    public static <T> T createTemplate(Class<T> type, Configuration... configurations){
+        return ServiceContext.getInstance().getSingleton(ConfigurationSpi.class).createTemplate(type, configurations);
+    }
+
+    /**
+     * Configures an instance, by resolving and injecting the configuration
+     * entries.
+     *
+     * @param instance the instance with configuration annotations, not null.
+     * @param configurations overriding configurations to be used for evaluating the values for injection into {@code instance}, not null.
+     *                       If no such config is passed, the default configurationa provided by the current
+     *                       registered providers are used.
+     * @throws ConfigException if the configuration could not be resolved.
+     */
+    public static void configure(Object instance, Configuration... configurations){
+        ServiceContext.getInstance().getSingleton(ConfigurationSpi.class).configure(instance, configurations);
+    }
+
+    /**
+     * Evaluate the current expression based on the current configuration valid.
+     *
+     * @param configurations overriding configurations to be used for evaluating the values for injection into {@code instance}, not null.
+     *                       If no such config is passed, the default configurationa provided by the current
+     *                       registered providers are used.
+     * @param expression the expression, not null.
+     * @return the evaluated config expression.
+     */
+    public static String evaluateValue(String expression, Configuration... configurations){
+        return ServiceContext.getInstance().getSingleton(ConfigurationSpi.class).evaluateValue(expression, configurations);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/d9964c64/dormant/api/src/main/java/org/apache/tamaya/ConfiguredValue.java
----------------------------------------------------------------------
diff --git a/dormant/api/src/main/java/org/apache/tamaya/ConfiguredValue.java b/dormant/api/src/main/java/org/apache/tamaya/ConfiguredValue.java
new file mode 100644
index 0000000..e75cd51
--- /dev/null
+++ b/dormant/api/src/main/java/org/apache/tamaya/ConfiguredValue.java
@@ -0,0 +1,256 @@
+/*
+ * 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;
+
+import org.apache.tamaya.annotation.LoadPolicy;
+
+import java.beans.PropertyChangeEvent;
+import java.util.Optional;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+
+/**
+ * A accessor for a single configured value. This can be used to support values that may be reinjected, reconfigured or
+ * final.
+ * <h3>Implementation Requirements</h3>
+ * Instances of this class must be
+ * <ul>
+ *     <li>Serializable</li>
+ *     <li>Immutable</li>
+ *     <li>Thread safe</li>
+ * </ul>
+ */
+public interface ConfiguredValue<T> {
+
+    /**
+     * Access the {@link org.apache.tamaya.annotation.LoadPolicy} used for updating this value.
+     * @return the load policy, never null.
+     */
+    LoadPolicy getLoadPolicy();
+
+    /**
+     * get the UTC timestamp in ms of the last access to a value, using get().
+     * @return the UTC timestamp of the last access
+     */
+    long getLastAccess();
+
+    /**
+     * get the UTC timestamp in ms of the last update to the value,.
+     * @return the UTC timestamp of the last update
+     */
+    long getLastUpdate();
+
+    /**
+     * Access if this instance has been updated since the given UTC timestamp in ms.
+     * @param timestamp
+     * @return true, if his instance has been updated since the given UTC timestamp in ms.
+     */
+    boolean isUpdatedSince(long timestamp);
+
+    /**
+     * Access if this instance has been accessed since the given UTC timestamp in ms.
+     * @param timestamp
+     * @return true, if his instance has been accessed since the given UTC timestamp in ms.
+     */
+    boolean isAccessedSince(long timestamp);
+
+    /**
+     * Add a listener to be called, when this value is changed.
+     * @param l the listner, not null
+     */
+    void addListener(Consumer<PropertyChangeEvent> l);
+
+    /**
+     * Removes a listener to be called, when this value is changed.
+     * @param l the listner to be removed, not null
+     */
+    void removeListener(Consumer<PropertyChangeEvent> l);
+
+    /**
+     * Evaluate if the item value has been updated since the last access.
+     * @return true, if item value has been updated since the last access.
+     */
+    default boolean isUpdated(){
+        return isUpdatedSince(getLastAccess());
+    }
+
+    /**
+     * If a value is present in this {@code ConfiguredValue}, returns the value,
+     * otherwise throws {@code ConfigException}.
+     *
+     * @return the non-null value held by this {@code Optional}
+     * @throws org.apache.tamaya.ConfigException if there is no value present
+     *
+     * @see ConfiguredValue#isPresent()
+     */
+    T get();
+
+    /**
+     * If a value is present in this {@code ConfiguredValue}, returns the value,
+     * otherwise throws {@code ConfigException}.
+     *
+     * @return the non-null value held by this {@code Optional}
+     * @throws org.apache.tamaya.ConfigException if there is no value present
+     *
+     * @see ConfiguredValue#isPresent()
+     */
+    default T updateAndGet(){
+        update();
+        return get();
+    }
+
+    /**
+     * Reevaluates the current value based on the instance's settings from the underlying configurations
+     * and applies the new value to its internal state. On change any registered listeners will be triggered.
+     */
+    void update();
+
+    /**
+     * Return {@code true} if there is a value present, otherwise {@code false}.
+     *
+     * @return {@code true} if there is a value present, otherwise {@code false}
+     */
+    boolean isPresent();
+
+    /**
+     * If a value is present, invoke the specified consumer with the value,
+     * otherwise do nothing.
+     *
+     * @param consumer block to be executed if a value is present
+     * @throws NullPointerException if value is present and {@code consumer} is
+     * null
+     */
+    void ifPresent(Consumer<? super T> consumer);
+
+    /**
+     * If a value is present, and the value matches the given predicate,
+     * return an {@code Optional} describing the value, otherwise return an
+     * empty {@code Optional}.
+     *
+     * @param predicate a predicate to apply to the value, if present
+     * @return an {@code Optional} describing the value of this {@code Optional}
+     * if a value is present and the value matches the given predicate,
+     * otherwise an empty {@code Optional}
+     * @throws NullPointerException if the predicate is null
+     */
+    ConfiguredValue<T> filter(Predicate<? super T> predicate);
+
+    /**
+     * If a value is present, apply the provided mapping function to it,
+     * and if the result is non-null, return an {@code Optional} describing the
+     * result.  Otherwise return an empty {@code Optional}.
+     *
+     * @apiNote This method supports post-processing on optional values, without
+     * the need to explicitly check for a return status.  For example, the
+     * following code traverses a stream of file names, selects one that has
+     * not yet been processed, and then opens that file, returning an
+     * {@code Optional<FileInputStream>}:
+     *
+     * <pre>{@code
+     *     Optional<FileInputStream> fis =
+     *         names.stream().filter(name -> !isProcessedYet(name))
+     *                       .findFirst()
+     *                       .map(name -> new FileInputStream(name));
+     * }</pre>
+     *
+     * Here, {@code findFirst} returns an {@code Optional<String>}, and then
+     * {@code map} returns an {@code Optional<FileInputStream>} for the desired
+     * file if one exists.
+     *
+     * @param <U> The type of the result of the mapping function
+     * @param mapper a mapping function to apply to the value, if present
+     * @return an {@code Optional} describing the result of applying a mapping
+     * function to the value of this {@code Optional}, if a value is present,
+     * otherwise an empty {@code Optional}
+     * @throws NullPointerException if the mapping function is null
+     */
+    <U> ConfiguredValue<U> map(Function<? super T, ? extends U> mapper);
+
+    /**
+     * If a value is present, apply the provided {@code Optional}-bearing
+     * mapping function to it, return that result, otherwise return an empty
+     * {@code Optional}.  This method is similar to {@link #map(Function)},
+     * but the provided mapper is one whose result is already an {@code Optional},
+     * and if invoked, {@code flatMap} does not wrap it with an additional
+     * {@code Optional}.
+     *
+     * @param <U> The type parameter to the {@code Optional} returned by
+     * @param mapper a mapping function to apply to the value, if present
+     *           the mapping function
+     * @return the result of applying an {@code Optional}-bearing mapping
+     * function to the value of this {@code Optional}, if a value is present,
+     * otherwise an empty {@code Optional}
+     * @throws NullPointerException if the mapping function is null or returns
+     * a null result
+     */
+    <U> ConfiguredValue<U> flatMap(Function<? super T, ConfiguredValue<U>> mapper);
+
+    /**
+     * Return the value if present, otherwise return {@code other}.
+     *
+     * @param other the value to be returned if there is no value present, may
+     * be null
+     * @return the value, if present, otherwise {@code other}
+     */
+    T orElse(T other);
+
+    /**
+     * Return the value if present, otherwise invoke {@code other} and return
+     * the result of that invocation.
+     *
+     * @param other a {@code Supplier} whose result is returned if no value
+     * is present
+     * @return the value if present otherwise the result of {@code other.get()}
+     * @throws NullPointerException if value is not present and {@code other} is
+     * null
+     */
+    T orElseGet(Supplier<? extends T> other);
+
+    /**
+     * Return the contained value, if present, otherwise throw an exception
+     * to be created by the provided supplier.
+     *
+     * @apiNote A method reference to the exception constructor with an empty
+     * argument list can be used as the supplier. For example,
+     * {@code IllegalStateException::new}
+     *
+     * @param <X> Type of the exception to be thrown
+     * @param exceptionSupplier The supplier which will return the exception to
+     * be thrown
+     * @return the present value
+     * @throws X if there is no value present
+     * @throws NullPointerException if no value is present and
+     * {@code exceptionSupplier} is null
+     */
+    <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X;
+
+    /**
+     * Converts this value to an {@link java.util.Optional} instance.
+     * @return an {@link java.util.Optional} instance, never null.
+     */
+    default Optional<T> toOptional(){
+        if(isPresent()){
+            return Optional.of(get());
+        }
+        return Optional.empty();
+    }
+
+}