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 <ple...@apache.org> Authored: Sun Mar 12 00:28:10 2017 +0100 Committer: Oliver B. Fischer <ple...@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