X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FXMLRouterConfigService.java;h=a20da62d53f60ca6a6b36306b0177b7a41db29c1;hb=3b2c669b25bfcb5a3c3f06ff9180d85143bebb2a;hp=230a6dcf6d8bfc06e77efcca22dff88374833808;hpb=13b475f8216ad5d74d64df4122ea6812554f7a14;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 230a6dc..a20da62 100644 --- a/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigService.java +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigService.java @@ -18,9 +18,9 @@ package org.wamblee.xmlrouter.impl; import java.util.concurrent.atomic.AtomicLong; import org.wamblee.xmlrouter.common.Id; -import org.wamblee.xmlrouter.config.Config; -import org.wamblee.xmlrouter.config.RouterConfig; -import org.wamblee.xmlrouter.config.RouterConfigService; +import org.wamblee.xmlrouter.config.DocumentType; +import org.wamblee.xmlrouter.config.Filter; +import org.wamblee.xmlrouter.config.Transformation; /** * Router configuration service providing an atomic configuration API for the @@ -30,34 +30,60 @@ 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(sequence) { - public RouterConfig wrap(Id aId, RouterConfig aT) { - return aT; + routerConfigs = new ConfigImpl(RouterConfig.class, + aApplication) { + public RouterConfig wrap(final RouterConfig aT) { + return new RouterConfig() { + @Override + public Id getId() { + return aT.getId(); + } + + @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() { - return new SingleRouterConfig(sequence); + public RouterConfig emptyConfig(String aId) { + return new SingleRouterConfig(application + "." + aId); } @Override - public Id apply(RouterConfig aConfig, - Id aOldConfig) { + 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 + "'"); + } } - Id id = routerConfigs.add(aConfig); + routerConfigs.add(aConfig); update(); - return id; } @Override @@ -68,8 +94,7 @@ public class XMLRouterConfigService implements RouterConfigService { private void update() { ExtendedRouterConfig newconfig = new CompositeRouterConfig( - routerConfigs.map().values()); + new Id("routerconfig"), routerConfigs.values()); config.setRouterConfig(newconfig); } - }