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);