You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2014/01/28 14:53:34 UTC

git commit: https://issues.apache.org/jira/browse/AMQ-4995 - reapply destination interceptor after change

Updated Branches:
  refs/heads/trunk ad3041034 -> 55da9bc82


https://issues.apache.org/jira/browse/AMQ-4995 - reapply destination interceptor after change


Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/55da9bc8
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/55da9bc8
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/55da9bc8

Branch: refs/heads/trunk
Commit: 55da9bc821184a320fc551ec8e131d1dcbf0d2bb
Parents: ad30410
Author: Dejan Bosanac <de...@nighttale.net>
Authored: Tue Jan 28 14:53:18 2014 +0100
Committer: Dejan Bosanac <de...@nighttale.net>
Committed: Tue Jan 28 14:53:18 2014 +0100

----------------------------------------------------------------------
 .../org/apache/activemq/broker/BrokerFilter.java     |  5 +++++
 .../java/org/apache/activemq/broker/EmptyBroker.java |  5 +++++
 .../java/org/apache/activemq/broker/ErrorBroker.java |  5 +++++
 .../apache/activemq/broker/MutableBrokerFilter.java  |  5 +++++
 .../activemq/broker/region/AbstractRegion.java       | 15 +++++++++++++++
 .../org/apache/activemq/broker/region/Region.java    |  2 ++
 .../apache/activemq/broker/region/RegionBroker.java  |  7 +++++++
 .../activemq/plugin/RuntimeConfigurationBroker.java  |  1 +
 .../java/org/apache/activemq/VirtualDestTest.java    | 14 ++++++++++++++
 9 files changed, 59 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java
index 7bc675e..b1d3c18 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerFilter.java
@@ -366,6 +366,11 @@ public class BrokerFilter implements Broker {
     }
 
     @Override
+    public void reapplyInterceptor() {
+        next.reapplyInterceptor();
+    }
+
+    @Override
     public Scheduler getScheduler() {
        return next.getScheduler();
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java
index 9110059..2d2e6ba 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/EmptyBroker.java
@@ -358,6 +358,11 @@ public class EmptyBroker implements Broker {
     }
 
     @Override
+    public void reapplyInterceptor() {
+
+    }
+
+    @Override
     public Scheduler getScheduler() {
         return null;
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java
index db75d27..f692d8a 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/ErrorBroker.java
@@ -368,6 +368,11 @@ public class ErrorBroker implements Broker {
     }
 
     @Override
+    public void reapplyInterceptor() {
+        throw new BrokerStoppedException(this.message);
+    }
+
+    @Override
     public Scheduler getScheduler() {
         throw new BrokerStoppedException(this.message);
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java b/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
index 0e6b199..112378a 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
@@ -377,6 +377,11 @@ public class MutableBrokerFilter implements Broker {
     }
 
     @Override
+    public void reapplyInterceptor() {
+        getNext().reapplyInterceptor();
+    }
+
+    @Override
     public Scheduler getScheduler() {
        return getNext().getScheduler();
     }

http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
index efa02cb..7f7b7e4 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
@@ -31,6 +31,7 @@ import org.apache.activemq.broker.ConsumerBrokerExchange;
 import org.apache.activemq.DestinationDoesNotExistException;
 import org.apache.activemq.broker.ProducerBrokerExchange;
 import org.apache.activemq.broker.region.policy.PolicyEntry;
+import org.apache.activemq.broker.region.virtual.CompositeDestinationFilter;
 import org.apache.activemq.command.ActiveMQDestination;
 import org.apache.activemq.command.ConsumerControl;
 import org.apache.activemq.command.ConsumerId;
@@ -580,4 +581,18 @@ public abstract class AbstractRegion implements Region {
             }
         }
     }
+
+    public void reapplyInterceptor() {
+        DestinationInterceptor destinationInterceptor = broker.getDestinationInterceptor();
+        Map<ActiveMQDestination, Destination> map = getDestinationMap();
+        for (ActiveMQDestination key : map.keySet()) {
+            Destination destination = map.get(key);
+            if (destination instanceof CompositeDestinationFilter) {
+                destination = ((CompositeDestinationFilter)destination).next;
+            }
+            destination = destinationInterceptor.intercept(destination);
+            getDestinationMap().put(key, destination);
+            destinations.put(key, destination);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-broker/src/main/java/org/apache/activemq/broker/region/Region.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/Region.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/Region.java
index ab9d1eb..d9d7c9d 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/Region.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/Region.java
@@ -149,5 +149,7 @@ public interface Region extends Service {
     Set <Destination>getDestinations(ActiveMQDestination destination);
     
     void processConsumerControl(ConsumerBrokerExchange consumerExchange, ConsumerControl control);
+
+    void reapplyInterceptor();
     
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
index 40f599b..4d54753 100755
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
@@ -859,4 +859,11 @@ public class RegionBroker extends EmptyBroker {
     public void setAllowTempAutoCreationOnSend(boolean allowTempAutoCreationOnSend) {
         this.allowTempAutoCreationOnSend = allowTempAutoCreationOnSend;
     }
+
+    public void reapplyInterceptor() {
+        queueRegion.reapplyInterceptor();
+        topicRegion.reapplyInterceptor();
+        tempQueueRegion.reapplyInterceptor();
+        tempTopicRegion.reapplyInterceptor();
+    }
 }

http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java
----------------------------------------------------------------------
diff --git a/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java b/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java
index 90dba00..73c172d 100644
--- a/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java
+++ b/activemq-runtime-config/src/main/java/org/apache/activemq/plugin/RuntimeConfigurationBroker.java
@@ -580,6 +580,7 @@ public class RuntimeConfigurationBroker extends BrokerFilter {
                         RegionBroker regionBroker = (RegionBroker) getBrokerService().getRegionBroker();
                         ((CompositeDestinationInterceptor) regionBroker.getDestinationInterceptor()).setInterceptors(destinationInterceptors);
                         info("applied new: " + interceptorsList);
+                        regionBroker.reapplyInterceptor();
                     }
                 }
             });

http://git-wip-us.apache.org/repos/asf/activemq/blob/55da9bc8/activemq-runtime-config/src/test/java/org/apache/activemq/VirtualDestTest.java
----------------------------------------------------------------------
diff --git a/activemq-runtime-config/src/test/java/org/apache/activemq/VirtualDestTest.java b/activemq-runtime-config/src/test/java/org/apache/activemq/VirtualDestTest.java
index 5c007a7..94a1046 100644
--- a/activemq-runtime-config/src/test/java/org/apache/activemq/VirtualDestTest.java
+++ b/activemq-runtime-config/src/test/java/org/apache/activemq/VirtualDestTest.java
@@ -81,6 +81,20 @@ public class VirtualDestTest extends RuntimeConfigTestSupport {
     }
 
     @Test
+    public void testModComposite() throws Exception {
+        final String brokerConfig = configurationSeed + "-mod-composite-vd-broker";
+        applyNewConfig(brokerConfig, configurationSeed + "-add-composite-vd");
+        startBroker(brokerConfig);
+        assertTrue("broker alive", brokerService.isStarted());
+        exerciseCompositeQueue("VirtualDestination.CompositeQueue", "VirtualDestination.QueueConsumer");
+
+        applyNewConfig(brokerConfig, configurationSeed + "-mod-composite-vd", SLEEP);
+        exerciseCompositeQueue("VirtualDestination.CompositeQueue", "VirtualDestination.QueueConsumer");
+
+        exerciseCompositeQueue("VirtualDestination.CompositeQueue", "VirtualDestination.CompositeQueue");
+    }
+
+    @Test
     public void testNewNoDefaultVirtualTopicSupport() throws Exception {
         final String brokerConfig = configurationSeed + "-no-vd-vt-broker";
         applyNewConfig(brokerConfig, RuntimeConfigTestSupport.EMPTY_UPDATABLE_CONFIG);