diff --git a/li.strolch.agent/src/main/java/li/strolch/runtime/configuration/ConfigurationSaxParser.java b/li.strolch.agent/src/main/java/li/strolch/runtime/configuration/ConfigurationSaxParser.java index f64d6e659..134d71465 100644 --- a/li.strolch.agent/src/main/java/li/strolch/runtime/configuration/ConfigurationSaxParser.java +++ b/li.strolch.agent/src/main/java/li/strolch/runtime/configuration/ConfigurationSaxParser.java @@ -452,6 +452,10 @@ public class ConfigurationSaxParser extends DefaultHandler { if (thisComponentBuilder == null) { this.componentBuilders.add(otherComponentBuilder); } else { + if (StringHelper.isNotEmpty(otherComponentBuilder.getImpl())) { + thisComponentBuilder.setImpl(otherComponentBuilder.getImpl()); + thisComponentBuilder.setDependencies(otherComponentBuilder.getDependencies()); + } thisComponentBuilder.getProperties().putAll(otherComponentBuilder.getProperties()); } } @@ -552,6 +556,10 @@ public class ConfigurationSaxParser extends DefaultHandler { return this.dependencies; } + public void setDependencies(Set dependencies) { + this.dependencies = dependencies; + } + public void addDependency(String dependency) { this.dependencies.add(dependency); } diff --git a/li.strolch.agent/src/test/java/li/strolch/runtime/configuration/ConfigurationParserTest.java b/li.strolch.agent/src/test/java/li/strolch/runtime/configuration/ConfigurationParserTest.java index 64bdea36e..f0d5d0d85 100644 --- a/li.strolch.agent/src/test/java/li/strolch/runtime/configuration/ConfigurationParserTest.java +++ b/li.strolch.agent/src/test/java/li/strolch/runtime/configuration/ConfigurationParserTest.java @@ -78,6 +78,7 @@ public class ConfigurationParserTest { assertEquals("li.strolch.runtime.privilege.DefaultStrolchPrivilegeHandler", privilegeHandlerConfiguration.getImpl()); assertEquals(1, privilegeHandlerConfiguration.getPropertyKeys().size()); + assertEquals(1, privilegeHandlerConfiguration.getDependencies().size()); assertTrue(privilegeHandlerConfiguration.getDependencies().contains("PersistenceHandler")); assertEquals("PrivilegeConfig.xml", privilegeHandlerConfiguration.getString("privilegeConfigFile", null)); @@ -178,5 +179,26 @@ public class ConfigurationParserTest { assertEquals(2, realmHandlerConfiguration.getPropertyKeys().size()); assertEquals("EMPTY", realmHandlerConfiguration.getString("dataStoreMode", null)); assertEquals("noob", realmHandlerConfiguration.getString("foo", null)); + + // + // ServiceHandler + // li.strolch.service.api.ServiceHandler + // li.strolch.service.YetAnotherServiceHandler + // RealmHandler + // + // foo + // + // + ComponentConfiguration serviceHandlerConfiguration = strolchConfiguration + .getComponentConfiguration("ServiceHandler"); + assertNotNull("Should have created a ServiceHandler Configuration", serviceHandlerConfiguration); + assertEquals("ServiceHandler", serviceHandlerConfiguration.getName()); + assertEquals("li.strolch.service.api.ServiceHandler", serviceHandlerConfiguration.getApi()); + assertEquals("li.strolch.service.YetAnotherServiceHandler", serviceHandlerConfiguration.getImpl()); + assertEquals(2, serviceHandlerConfiguration.getDependencies().size()); + assertTrue(serviceHandlerConfiguration.getDependencies().contains("RealmHandler")); + assertTrue(serviceHandlerConfiguration.getDependencies().contains("PrivilegeHandler")); + assertEquals(1, serviceHandlerConfiguration.getPropertyKeys().size()); + assertEquals("foo", serviceHandlerConfiguration.getString("bar", null)); } } diff --git a/li.strolch.agent/src/test/resources/configtest/config/StrolchConfiguration.xml b/li.strolch.agent/src/test/resources/configtest/config/StrolchConfiguration.xml index db199a0cc..426ad172c 100644 --- a/li.strolch.agent/src/test/resources/configtest/config/StrolchConfiguration.xml +++ b/li.strolch.agent/src/test/resources/configtest/config/StrolchConfiguration.xml @@ -68,6 +68,17 @@ noob + + + ServiceHandler + li.strolch.service.api.ServiceHandler + li.strolch.service.YetAnotherServiceHandler + RealmHandler + PrivilegeHandler + + foo + + \ No newline at end of file