X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FXMLRouterConfigurationImpl.java;fp=impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fxmlrouter%2Fimpl%2FXMLRouterConfigurationImpl.java;h=b0b02713017ed583b421b3f96e54c5015fc2bf4a;hb=1e030ca3ecfaf7a3c179978c297a6aa6b31aead3;hp=0000000000000000000000000000000000000000;hpb=d96c59e2c9e5b15c4ce2023ac93d70b4c0ddf568;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 new file mode 100644 index 0000000..b0b0271 --- /dev/null +++ b/impl/src/main/java/org/wamblee/xmlrouter/impl/XMLRouterConfigurationImpl.java @@ -0,0 +1,71 @@ +/* + * Copyright 2005-2011 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.wamblee.xmlrouter.impl; + +import java.util.concurrent.locks.ReentrantReadWriteLock; + +/** + * Implements the XML Router configuration interface including the required + * locking. + * + * @author Erik Brakkee + */ +public class XMLRouterConfigurationImpl implements XMLRouterConfiguration { + + private final ReentrantReadWriteLock rwlock = new ReentrantReadWriteLock( + true); + private final ReentrantReadWriteLock.ReadLock rlock = rwlock.readLock(); + private final ReentrantReadWriteLock.WriteLock wlock = rwlock.writeLock(); + + private ExtendedRouterConfig config; + private TransformationPaths transformations; + + public XMLRouterConfigurationImpl(ExtendedRouterConfig aConfig, + TransformationPaths aTransformations) { + config = aConfig; + transformations = aTransformations; + } + + @Override + public void startConfigurationChange() { + wlock.lock(); + } + + @Override + public void endConfigurationChange() { + wlock.unlock(); + } + + @Override + public void startPublishEvent() { + rlock.lock(); + } + + @Override + public void endPublishEvent() { + rlock.unlock(); + } + + @Override + public ExtendedRouterConfig routerConfig() { + return config; + } + + @Override + public TransformationPaths transformations() { + return transformations; + } +}