X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FXMLRouterConfigurationImpl.java;h=7a915766ec93d9bca00647dc9c96d13e5131a17d;hb=537cfb1a832b99e2c0a55b4634cd2a42f7fbcc09;hp=b0b02713017ed583b421b3f96e54c5015fc2bf4a;hpb=1e030ca3ecfaf7a3c179978c297a6aa6b31aead3;p=xmlrouter diff --git a/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigurationImpl.java b/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigurationImpl.java index b0b0271..7a91576 100644 --- a/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigurationImpl.java +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigurationImpl.java @@ -15,8 +15,13 @@ */ package org.wamblee.xmlrouter.impl; +import java.util.ArrayList; import java.util.concurrent.locks.ReentrantReadWriteLock; +import org.wamblee.general.Pair; +import org.wamblee.xmlrouter.common.Id; +import org.wamblee.xmlrouter.config.RouterConfig; + /** * Implements the XML Router configuration interface including the required * locking. @@ -33,39 +38,40 @@ public class XMLRouterConfigurationImpl implements XMLRouterConfiguration { private ExtendedRouterConfig config; private TransformationPaths transformations; - public XMLRouterConfigurationImpl(ExtendedRouterConfig aConfig, - TransformationPaths aTransformations) { + public XMLRouterConfigurationImpl(ExtendedRouterConfig aConfig) { config = aConfig; - transformations = aTransformations; - } - - @Override - public void startConfigurationChange() { - wlock.lock(); + transformations = new TransformationPaths(config.transformationConfig() + .values()); } - @Override - public void endConfigurationChange() { - wlock.unlock(); + public XMLRouterConfigurationImpl() { + this(new CompositeRouterConfig(new Id("routerconfig"), + new ArrayList())); } @Override - public void startPublishEvent() { + public Pair getConfig() { rlock.lock(); + try { + return new Pair(config, + transformations); + } finally { + rlock.unlock(); + } } @Override - public void endPublishEvent() { - rlock.unlock(); - } + public void setRouterConfig(ExtendedRouterConfig aConfig) { - @Override - public ExtendedRouterConfig routerConfig() { - return config; - } + TransformationPaths newTransformations = new TransformationPaths( + aConfig.transformationConfig().values()); - @Override - public TransformationPaths transformations() { - return transformations; + wlock.lock(); + try { + config = aConfig; + transformations = newTransformations; + } finally { + wlock.unlock(); + } } }