https://issues.apache.org/jira/browse/AMQ-5160 - make runtime configuration plugin work properly with destination filters
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/14fcd7cb Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/14fcd7cb Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/14fcd7cb Branch: refs/heads/trunk Commit: 14fcd7cbea6fb2ac5dbde98ae218f9d7bef968e3 Parents: a4682fc Author: Dejan Bosanac <[email protected]> Authored: Tue Jun 3 13:26:43 2014 +0200 Committer: Dejan Bosanac <[email protected]> Committed: Tue Jun 3 13:26:43 2014 +0200 ---------------------------------------------------------------------- .../broker/region/DestinationFilter.java | 4 ++++ .../plugin/RuntimeConfigurationBroker.java | 21 ++++++++++---------- 2 files changed, 14 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/14fcd7cb/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java ---------------------------------------------------------------------- diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java b/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java index 7e21bcc..ff25dd5 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java @@ -402,4 +402,8 @@ public class DestinationFilter implements Destination { topic.deleteSubscription(context, key); } } + + public Destination getNext() { + return next; + } } http://git-wip-us.apache.org/repos/asf/activemq/blob/14fcd7cb/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 b11b529..b764495 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 @@ -52,12 +52,7 @@ import org.apache.activemq.broker.BrokerContext; import org.apache.activemq.broker.BrokerFilter; import org.apache.activemq.broker.ConnectionContext; import org.apache.activemq.broker.jmx.ManagementContext; -import org.apache.activemq.broker.region.CompositeDestinationInterceptor; -import org.apache.activemq.broker.region.Destination; -import org.apache.activemq.broker.region.DestinationInterceptor; -import org.apache.activemq.broker.region.Queue; -import org.apache.activemq.broker.region.RegionBroker; -import org.apache.activemq.broker.region.Topic; +import org.apache.activemq.broker.region.*; import org.apache.activemq.broker.region.policy.PolicyEntry; import org.apache.activemq.broker.region.policy.PolicyMap; import org.apache.activemq.broker.region.virtual.CompositeQueue; @@ -439,12 +434,16 @@ public class RuntimeConfigurationBroker extends BrokerFilter { private void applyRetrospectively(PolicyEntry updatedEntry) { RegionBroker regionBroker = (RegionBroker) getBrokerService().getRegionBroker(); for (Destination destination : regionBroker.getDestinations(updatedEntry.getDestination())) { - if (destination.getActiveMQDestination().isQueue()) { - updatedEntry.update((Queue) destination); - } else if (destination.getActiveMQDestination().isTopic()) { - updatedEntry.update((Topic) destination); + Destination target = destination; + if (destination instanceof DestinationFilter) { + target = ((DestinationFilter)destination).getNext(); } - LOG.debug("applied update to:" + destination); + if (target.getActiveMQDestination().isQueue()) { + updatedEntry.update((Queue) target); + } else if (target.getActiveMQDestination().isTopic()) { + updatedEntry.update((Topic) target); + } + LOG.debug("applied update to:" + target); } }
