Repository: incubator-tamaya-extensions Updated Branches: refs/heads/master feaa76538 -> 78415bc9b
[TAMAYA-244] Removed possible causes for NullPointerExceptions. 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/78415bc9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/tree/78415bc9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/diff/78415bc9 Branch: refs/heads/master Commit: 78415bc9bcd1aa3574282e6570a6fa1f0e130988 Parents: feaa765 Author: Oliver B. Fischer <ple...@apache.org> Authored: Sun Mar 12 00:41:31 2017 +0100 Committer: Oliver B. Fischer <ple...@apache.org> Committed: Sun Mar 12 00:41:31 2017 +0100 ---------------------------------------------------------------------- .../tamaya/functions/CombinedConfiguration.java | 27 ++++++++++++++------ .../functions/CombinedConfigurationTest.java | 7 +++++ 2 files changed, 26 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/78415bc9/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 a268736..234e03c 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 @@ -24,9 +24,7 @@ import org.apache.tamaya.Configuration; import org.apache.tamaya.TypeLiteral; import org.apache.tamaya.spi.ConfigurationContext; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * Combines a set of child configurations to a new one, by overriding the first entries with result from @@ -35,8 +33,12 @@ import java.util.Map; class CombinedConfiguration implements Configuration{ /** The name of the new configuration. */ private final String name; - /** The configuration's in evaluation order. Instances with higher indices override results with lower ones. */ - private final Configuration[] configurations; + + /** + * The configuration's in evaluation order. Instances with higher indices + * override results with lower ones. + */ + private final ArrayList<Configuration> configurations = new ArrayList<>(); /** * Creates a combined configuration instance. @@ -45,7 +47,16 @@ class CombinedConfiguration implements Configuration{ */ public CombinedConfiguration(String configName, Configuration... configs) { this.name = configName; - this.configurations = configs == null ? new Configuration[0] : configs.clone(); + + if (null != configs) { + for (Configuration config : configs) { + if (config == null) { + continue; + } + + configurations.add(config); + } + } } @Override @@ -133,14 +144,14 @@ class CombinedConfiguration implements Configuration{ @Override public ConfigurationContext getContext() { // TODO thjink on combining the participating contexts... - return configurations[0].getContext(); + return configurations.get(0).getContext(); } @Override public String toString() { return "CombinedConfiguration{" + "name='" + name + '\'' + - ", configurations=" + Arrays.toString(configurations) + + ", configurations=" + configurations + '}'; } } http://git-wip-us.apache.org/repos/asf/incubator-tamaya-extensions/blob/78415bc9/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 index 585e1f7..e56c0cc 100644 --- a/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java +++ b/modules/functions/src/test/java/org/apache/tamaya/functions/CombinedConfigurationTest.java @@ -78,6 +78,13 @@ public class CombinedConfigurationTest { } @Test + public void createCombinedConfigurationWithNullNullAsSingleConfiguration() { + CombinedConfiguration cc = new CombinedConfiguration("abc", null, null); + + assertThat(cc.get("nil")).isNull(); + } + + @Test public void requestedEntryIsntInAnyConfigration() throws Exception { CombinedConfiguration cc = new CombinedConfiguration("abc", configWithA1, configWithB, configWithC);