You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by pl...@apache.org on 2017/03/11 23:31:52 UTC

incubator-tamaya-extensions git commit: [TAMAYA-244] Added the first tests and made some small improvements to the CombinedConfiguration.

Repository: incubator-tamaya-extensions
Updated Branches:
  refs/heads/master fe572c185 -> 2ab6ceedd


[TAMAYA-244] Added the first tests and made some small improvements to the CombinedConfiguration.


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

Branch: refs/heads/master
Commit: 2ab6ceeddbe1e3d41a10feba89e23adb6d8ef366
Parents: fe572c1
Author: Oliver B. Fischer <pl...@apache.org>
Authored: Sun Mar 12 00:28:10 2017 +0100
Committer: Oliver B. Fischer <pl...@apache.org>
Committed: Sun Mar 12 00:29:06 2017 +0100

----------------------------------------------------------------------
 modules/functions/pom.xml                       |   5 +
 .../tamaya/functions/CombinedConfiguration.java |   4 +-
 .../functions/CombinedConfigurationTest.java    | 117 +++++++++++++++++++
 3 files changed, 124 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2ab6ceed/modules/functions/pom.xml
----------------------------------------------------------------------
diff --git a/modules/functions/pom.xml b/modules/functions/pom.xml
index 3bd96cc..0289465 100644
--- a/modules/functions/pom.xml
+++ b/modules/functions/pom.xml
@@ -56,6 +56,11 @@ under the License.
         </dependency>
 
         <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+        </dependency>
+
+        <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>java-hamcrest</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2ab6ceed/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java b/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java
index 8a479e9..a268736 100644
--- a/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java
+++ b/modules/functions/src/main/java/org/apache/tamaya/functions/CombinedConfiguration.java
@@ -43,9 +43,9 @@ class CombinedConfiguration implements Configuration{
      * @param configName the name of the new config.
      * @param configs the configurations hereby instances with higher indices override results with lower ones.
      */
-    public CombinedConfiguration(String configName, Configuration... configs){
+    public CombinedConfiguration(String configName, Configuration... configs) {
         this.name = configName;
-        this.configurations =configs.clone();
+        this.configurations = configs == null ? new Configuration[0] : configs.clone();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/2ab6ceed/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java
----------------------------------------------------------------------
diff --git a/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java b/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java
new file mode 100644
index 0000000..1e17d7d
--- /dev/null
+++ b/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java
@@ -0,0 +1,117 @@
+package org.apache.tamaya.functions;
+
+import org.apache.tamaya.ConfigOperator;
+import org.apache.tamaya.ConfigQuery;
+import org.apache.tamaya.Configuration;
+import org.apache.tamaya.TypeLiteral;
+import org.apache.tamaya.spi.ConfigurationContext;
+import org.apache.tamaya.spi.ConfigurationContextBuilder;
+import org.apache.tamaya.spisupport.DefaultConfiguration;
+import org.apache.tamaya.spisupport.DefaultConfigurationContext;
+import org.apache.tamaya.spisupport.DefaultConfigurationContextBuilder;
+import org.apache.tamaya.spisupport.SimplePropertySource;
+import org.junit.Test;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.TreeMap;
+
+import static java.util.Collections.singletonMap;
+import static org.assertj.core.api.Assertions.assertThat;
+
+
+public class CombinedConfigurationTest {
+    private Configuration configWithA1;
+    private Configuration configWithA2;
+    private Configuration configWithB;
+    private Configuration configWithC;
+    private Configuration configWithoutEntries;
+
+    {
+        SimplePropertySource sourceWithKeyA1 = new SimplePropertySource("A", singletonMap("a", "a1"));
+        SimplePropertySource sourceWithKeyA2 = new SimplePropertySource("A", singletonMap("a", "a2"));
+        SimplePropertySource sourceWithKeyB = new SimplePropertySource("B", singletonMap("b", "b"));
+        SimplePropertySource sourceWithKeyC = new SimplePropertySource("C", singletonMap("c", "c"));
+        SimplePropertySource sourceWithoutKeys = new SimplePropertySource("NONE", Collections.<String, String>emptyMap());
+
+        ConfigurationContext ccWithA1 = new DefaultConfigurationContextBuilder().addPropertySources(sourceWithKeyA1)
+                                                                                .build();
+        ConfigurationContext ccWithA2 = new DefaultConfigurationContextBuilder().addPropertySources(sourceWithKeyA2)
+                                                                                .build();
+        ConfigurationContext ccWithB = new DefaultConfigurationContextBuilder().addPropertySources(sourceWithKeyB)
+                                                                               .build();
+        ConfigurationContext ccWithC = new DefaultConfigurationContextBuilder().addPropertySources(sourceWithKeyC)
+                                                                               .build();
+        ConfigurationContext ccWithoutEntries = new DefaultConfigurationContextBuilder().addPropertySources(sourceWithoutKeys)
+                                                                                        .build();
+
+        configWithA1 = new DefaultConfiguration(ccWithA1);
+        configWithA2 = new DefaultConfiguration(ccWithA2);
+        configWithB = new DefaultConfiguration(ccWithB);
+        configWithC = new DefaultConfiguration(ccWithC);
+        configWithoutEntries = new DefaultConfiguration(ccWithoutEntries);
+    }
+
+    @Test
+    public void createCombinedConfigurationWithNullAsSingleConfiguration() {
+        CombinedConfiguration cc = new CombinedConfiguration("abc", null);
+
+        assertThat(cc.get("nil")).isNull();
+    }
+
+    @Test
+    public void requestedEntryIsntInAnyConfigration() throws Exception {
+
+        CombinedConfiguration cc = new CombinedConfiguration("abc", configWithA1, configWithB, configWithC);
+
+        assertThat(cc.get("key")).isNull();
+    }
+
+    @Test
+    public void requestedEntryIsInTheFirstAndThridConfiguration() {
+        CombinedConfiguration cc = new CombinedConfiguration("abc", configWithA1, configWithB, configWithA2);
+
+        assertThat(cc.get("a")).isEqualTo("a2");
+    }
+
+    @Test
+    public void requestedEntryIsOnlyInOneConfiguration() {
+        CombinedConfiguration cc = new CombinedConfiguration("abc", configWithA1, configWithB, configWithC);
+
+        assertThat(cc.get("b")).isEqualTo("b");
+    }
+
+    // getOrDefault none one three
+
+    // String getOrDefault(String var1, String var2); none one three
+
+    // <T> T getOrDefault(String var1, Class<T> var2, T var3);  none one three
+
+    // <T> T get(String var1, Class<T> var2);  none one three
+
+    // <T> T get(String var1, TypeLiteral<T> var2);  none one three
+
+    // <T> T getOrDefault(String var1, TypeLiteral<T> var2, T var3);  none one three
+
+    // Map<String, String> getProperties();  none one three
+
+    // Configuration with(ConfigOperator var1);  none one three
+
+    // <T> T query(ConfigQuery<T> var1);  none one three
+
+    // ConfigurationContext getContext();  none one three
+
+
+    private static class InMemoryConfiguration extends DefaultConfiguration {
+        public InMemoryConfiguration(ConfigurationContext configurationContext) {
+            super(configurationContext);
+        }
+        //        private Map<String, String> entries = new TreeMap<>();
+
+//        public InMemoryConfiguration addEntry(String key, String value) {
+//            entries.put(key, value);
+//
+//            return this;
+//        }
+    }
+}
\ No newline at end of file