You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2013/06/04 17:27:35 UTC
svn commit: r1489471 - in
/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region:
DestinationFilter.java TopicRegion.java virtual/VirtualTopicInterceptor.java
Author: tabish
Date: Tue Jun 4 15:27:18 2013
New Revision: 1489471
URL: http://svn.apache.org/r1489471
Log:
Fix for: https://issues.apache.org/jira/browse/AMQ-4571
test case for AMQ-4356 validates this
Modified:
activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java
activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicRegion.java
activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/virtual/VirtualTopicInterceptor.java
Modified: activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java?rev=1489471&r1=1489470&r2=1489471&view=diff
==============================================================================
--- activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java (original)
+++ activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/DestinationFilter.java Tue Jun 4 15:27:18 2013
@@ -33,6 +33,7 @@ import org.apache.activemq.command.Produ
import org.apache.activemq.store.MessageStore;
import org.apache.activemq.usage.MemoryUsage;
import org.apache.activemq.usage.Usage;
+import org.apache.activemq.util.SubscriptionKey;
/**
*
@@ -386,4 +387,10 @@ public class DestinationFilter implement
public boolean isDLQ() {
return next.isDLQ();
}
+
+ public void deleteSubscription(ConnectionContext context, SubscriptionKey key) throws Exception {
+ if (next instanceof Topic) {
+ ((Topic) next).deleteSubscription(context, key);
+ }
+ }
}
Modified: activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicRegion.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicRegion.java?rev=1489471&r1=1489470&r2=1489471&view=diff
==============================================================================
--- activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicRegion.java (original)
+++ activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/TopicRegion.java Tue Jun 4 15:27:18 2013
@@ -31,7 +31,6 @@ import javax.jms.JMSException;
import org.apache.activemq.advisory.AdvisorySupport;
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.policy.PolicyEntry;
-import org.apache.activemq.broker.region.virtual.VirtualTopicInterceptor;
import org.apache.activemq.command.ActiveMQDestination;
import org.apache.activemq.command.ConnectionId;
import org.apache.activemq.command.ConsumerId;
@@ -198,9 +197,9 @@ public class TopicRegion extends Abstrac
if (dest instanceof Topic){
Topic topic = (Topic)dest;
topic.deleteSubscription(context, key);
- } else if (dest instanceof VirtualTopicInterceptor) {
- VirtualTopicInterceptor virtualTopic = (VirtualTopicInterceptor) dest;
- virtualTopic.getTopic().deleteSubscription(context, key);
+ } else if (dest instanceof DestinationFilter) {
+ DestinationFilter filter = (DestinationFilter) dest;
+ filter.deleteSubscription(context, key);
}
}
} finally {
Modified: activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/virtual/VirtualTopicInterceptor.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/virtual/VirtualTopicInterceptor.java?rev=1489471&r1=1489470&r2=1489471&view=diff
==============================================================================
--- activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/virtual/VirtualTopicInterceptor.java (original)
+++ activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/broker/region/virtual/VirtualTopicInterceptor.java Tue Jun 4 15:27:18 2013
@@ -26,15 +26,14 @@ import org.apache.activemq.command.Messa
import org.apache.activemq.util.LRUCache;
/**
- * A Destination which implements <a
- * href="http://activemq.org/site/virtual-destinations.html">Virtual Topic</a>
+ * A Destination which implements <a href="http://activemq.org/site/virtual-destinations.html">Virtual Topic</a>
*/
public class VirtualTopicInterceptor extends DestinationFilter {
private final String prefix;
private final String postfix;
private final boolean local;
- private final LRUCache<ActiveMQDestination,ActiveMQQueue> cache = new LRUCache<ActiveMQDestination,ActiveMQQueue>();
+ private final LRUCache<ActiveMQDestination, ActiveMQQueue> cache = new LRUCache<ActiveMQDestination, ActiveMQQueue>();
public VirtualTopicInterceptor(Destination next, String prefix, String postfix, boolean local) {
super(next);
@@ -58,11 +57,11 @@ public class VirtualTopicInterceptor ext
protected ActiveMQDestination getQueueConsumersWildcard(ActiveMQDestination original) {
ActiveMQQueue queue;
- synchronized(cache){
+ synchronized (cache) {
queue = cache.get(original);
- if (queue==null){
+ if (queue == null) {
queue = new ActiveMQQueue(prefix + original.getPhysicalName() + postfix);
- cache.put(original,queue);
+ cache.put(original, queue);
}
}
return queue;