public void merge(Map<String, Object> scr) { merge(this, scr); }
public void merge(Map<String, Object> scr) { merge(this, scr); }
private void merge(Map into, Map<?, ?> from) { for (Map.Entry<?, ?> entry : from.entrySet()) { if (entry.getValue() instanceof Map) { Object in = into.get(entry.getKey()); if (in instanceof Map) { merge(((Map) in), ((Map) entry.getValue())); } else { into.put(entry.getKey(), entry.getValue()); } } else { into.put(entry.getKey(), entry.getValue()); } } }
private void merge(Map into, Map<?, ?> from) { for (Map.Entry<?, ?> entry : from.entrySet()) { if (entry.getValue() instanceof Map) { Object in = into.get(entry.getKey()); if (in instanceof Map) { merge(((Map) in), ((Map) entry.getValue())); } else { into.put(entry.getKey(), entry.getValue()); } } else { into.put(entry.getKey(), entry.getValue()); } } }
protected void readProfiles(Config config) { if (config == null || config.isEmpty()) return; Config environments = (Config) config.remove("environments"); if (environments != null) { Config env = environments.config(environment.shortName); if (env != null) config.merge(env); env = environments.config(environment.name().toLowerCase()); if (env != null) config.merge(env); } Config profiles = (Config) config.remove("profiles"); if (profiles == null || profiles.isEmpty()) return; for (String profile : this.profiles) { Config subConfig = profiles.config(profile); readProfiles(subConfig); config.merge(subConfig); } if (this.config != config) this.config.merge(config); }
@Test public void test_merge_1() { Config configA = new Config(); Config configB = new Config(); EvalTools.prepare("a { b = 1 }").get(configA); EvalTools.prepare("a { c = 2 }").get(configB); Assert.assertEquals(1, configA.size()); Assert.assertEquals(1, ((Map) configA.get("a")).size()); Assert.assertEquals(1, ((Map) configA.get("a")).get("b")); configA.merge(configB); Assert.assertEquals(1, configA.size()); Assert.assertEquals(2, ((Map) configA.get("a")).size()); Assert.assertEquals(1, ((Map) configA.get("a")).get("b")); Assert.assertEquals(2, ((Map) configA.get("a")).get("c")); }
@Test public void test_merge_3() { Config configA = new Config(); Config configB = new Config(); EvalTools.prepare("a = 1").get(configA); EvalTools.prepare("a { c = 2 }").get(configB); Assert.assertEquals(1, configA.size()); Assert.assertEquals(1, configA.get("a")); configA.merge(configB); Assert.assertEquals(1, configA.size()); Assert.assertEquals(1, ((Map) configA.get("a")).size()); Assert.assertEquals(2, ((Map) configA.get("a")).get("c")); }
@Test public void test_merge_2() { Config configA = new Config(); Config configB = new Config(); EvalTools.prepare("a { b = 1 }").get(configA); EvalTools.prepare("a = 1").get(configB); Assert.assertEquals(1, configA.size()); Assert.assertEquals(1, ((Map) configA.get("a")).size()); Assert.assertEquals(1, ((Map) configA.get("a")).get("b")); configA.merge(configB); Assert.assertEquals(1, configA.size()); Assert.assertEquals(1, configA.get("a")); }