Reduced the time during which the configuration is locked. Computation of paths now...
[xmlrouter] / impl / src / main / java / org / wamblee / xmlrouter / impl / XMLRouterConfigurationImpl.java
index 99db0fd2b65a71b77e0e3eaade316cdbd4bcbf23..fe6d50773e7f4d9c5399f5b7abfe9b5d2e38a19e 100644 (file)
@@ -38,23 +38,14 @@ public class XMLRouterConfigurationImpl implements XMLRouterConfiguration {
 
     public XMLRouterConfigurationImpl(ExtendedRouterConfig aConfig) {
         config = aConfig;
-        transformations = new TransformationPaths();
+        transformations = new TransformationPaths(config.transformationConfig()
+            .map());
     }
 
     public XMLRouterConfigurationImpl() {
         this(new CompositeRouterConfig(new ArrayList<RouterConfig>()));
     }
 
-    @Override
-    public void startConfigurationChange() {
-        wlock.lock();
-    }
-
-    @Override
-    public void endConfigurationChange() {
-        wlock.unlock();
-    }
-
     @Override
     public void startPublishEvent() {
         rlock.lock();
@@ -72,9 +63,17 @@ public class XMLRouterConfigurationImpl implements XMLRouterConfiguration {
 
     @Override
     public void setRouterConfig(ExtendedRouterConfig aConfig) {
-        config = aConfig;
-        transformations.replaceTransformations(config.transformationConfig()
-            .map());
+
+        TransformationPaths newTransformations = new TransformationPaths(
+            aConfig.transformationConfig().map());
+
+        wlock.lock();
+        try {
+            config = aConfig;
+            transformations = newTransformations;
+        } finally {
+            wlock.unlock();
+        }
     }
 
     @Override