X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FXMLRouterConfigService.java;fp=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FXMLRouterConfigService.java;h=cd1997299d5e631f055fbda2060e0a56f9000c99;hb=6c41c1cabffcc509c5b736f73578930808f6616f;hp=203e56fd5d0e1632cf65ba6b5ec40da1853541fb;hpb=6524a285da907680a5ac0d02219811ad681461b5;p=xmlrouter diff --git a/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigService.java b/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigService.java index 203e56f..cd19972 100644 --- a/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigService.java +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigService.java @@ -19,8 +19,12 @@ import java.util.concurrent.atomic.AtomicLong; import org.wamblee.xmlrouter.common.Id; import org.wamblee.xmlrouter.config.Config; +import org.wamblee.xmlrouter.config.ConfigException; +import org.wamblee.xmlrouter.config.DocumentType; +import org.wamblee.xmlrouter.config.Filter; import org.wamblee.xmlrouter.config.RouterConfig; import org.wamblee.xmlrouter.config.RouterConfigService; +import org.wamblee.xmlrouter.config.Transformation; // TODO pass unique id of config service in the constructor to allow multiple instances with // unique ids (ServiceFactory) @@ -33,30 +37,58 @@ import org.wamblee.xmlrouter.config.RouterConfigService; */ public class XMLRouterConfigService implements RouterConfigService { + private String application; private AtomicLong sequence; private XMLRouterConfiguration config; private Config routerConfigs; - public XMLRouterConfigService(XMLRouterConfiguration aConfig) { + public XMLRouterConfigService(String aApplication, + XMLRouterConfiguration aConfig) { + application = aApplication; sequence = new AtomicLong(1L); config = aConfig; - routerConfigs = new ConfigImpl(new Id("config")) { - public RouterConfig wrap(String aPrefix, RouterConfig aT) { - return aT; + routerConfigs = new ConfigImpl(new Id( + aApplication)) { + public RouterConfig wrap(final String aPrefix, final RouterConfig aT) { + return new RouterConfig() { + @Override + public Id getId() { + return new Id(aT.getId().toString()); + } + + @Override + public Config documentTypeConfig() { + return aT.documentTypeConfig(); + } + + @Override + public Config filterConfig() { + return aT.filterConfig(); + } + + @Override + public Config transformationConfig() { + return aT.transformationConfig(); + } + }; } }; } @Override public RouterConfig emptyConfig(String aId) { - // TODO check AP{ impacts. - return new SingleRouterConfig(new Id(aId)); + return new SingleRouterConfig(new Id(application + "." + + aId)); } @Override public void apply(RouterConfig aConfig, Id aOldConfig) { if (aOldConfig != null) { - routerConfigs.remove(aOldConfig); + if (!routerConfigs.remove(new Id(application + "." + + aOldConfig.getId()))) { + throw new ConfigException("Unknown routerconfig '" + + aOldConfig + "'"); + } } routerConfigs.add(aConfig); update(); @@ -73,5 +105,4 @@ public class XMLRouterConfigService implements RouterConfigService { new Id("routerconfig"), routerConfigs.values()); config.setRouterConfig(newconfig); } - }