You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2006/07/06 19:50:57 UTC

svn commit: r419629 - in /incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker: BrokerFilter.java EmptyBroker.java ErrorBroker.java MutableBrokerFilter.java region/AbstractRegion.java region/Region.java region/RegionBroker.java

Author: jstrachan
Date: Thu Jul  6 10:50:56 2006
New Revision: 419629

URL: http://svn.apache.org/viewvc?rev=419629&view=rev
Log:
added a helper method so a BrokerFilter can lookup all the active destinations for a specific wildcard which can be useful for implementing things like AMQ-452 to support virtual destinations

Modified:
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerFilter.java
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/EmptyBroker.java
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/ErrorBroker.java
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Region.java
    incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerFilter.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerFilter.java?rev=419629&r1=419628&r2=419629&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerFilter.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerFilter.java Thu Jul  6 10:50:56 2006
@@ -16,8 +16,6 @@
  */
 package org.apache.activemq.broker;
 
-import java.util.Map;
-import java.util.Set;
 import org.apache.activemq.broker.region.Destination;
 import org.apache.activemq.broker.region.Subscription;
 import org.apache.activemq.command.ActiveMQDestination;
@@ -35,6 +33,9 @@
 import org.apache.activemq.command.SessionInfo;
 import org.apache.activemq.command.TransactionId;
 
+import java.util.Map;
+import java.util.Set;
+
 /**
  * Allows you to intercept broker operation so that features such as security can be 
  * implemented as a pluggable filter.
@@ -48,7 +49,6 @@
     public BrokerFilter(Broker next) {
         this.next=next;
     }
-    
    
     public Broker getAdaptor(Class type){
         if (type.isInstance(this)){
@@ -59,6 +59,10 @@
 
     public Map getDestinationMap() {
         return next.getDestinationMap();
+    }
+
+    public Set getDestinations(ActiveMQDestination destination) {
+        return next.getDestinations(destination);
     }
 
     public void acknowledge(ConnectionContext context, MessageAck ack) throws Exception {

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/EmptyBroker.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/EmptyBroker.java?rev=419629&r1=419628&r2=419629&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/EmptyBroker.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/EmptyBroker.java Thu Jul  6 10:50:56 2006
@@ -16,9 +16,6 @@
  */
 package org.apache.activemq.broker;
 
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
 import org.apache.activemq.broker.region.Destination;
 import org.apache.activemq.broker.region.Subscription;
 import org.apache.activemq.command.ActiveMQDestination;
@@ -36,6 +33,10 @@
 import org.apache.activemq.command.SessionInfo;
 import org.apache.activemq.command.TransactionId;
 
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * Dumb implementation - used to be overriden by listeners
  * 
@@ -60,6 +61,10 @@
 
     public Map getDestinationMap() {
         return Collections.EMPTY_MAP;
+    }
+
+    public Set getDestinations(ActiveMQDestination destination) {
+        return Collections.EMPTY_SET;
     }
 
     public void addConnection(ConnectionContext context,ConnectionInfo info) throws Exception{

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/ErrorBroker.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/ErrorBroker.java?rev=419629&r1=419628&r2=419629&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/ErrorBroker.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/ErrorBroker.java Thu Jul  6 10:50:56 2006
@@ -54,6 +54,10 @@
         return Collections.EMPTY_MAP;
     }
 
+    public Set getDestinations(ActiveMQDestination destination) {
+        return Collections.EMPTY_SET;
+    }
+
     public Broker getAdaptor(Class type){
         if (type.isInstance(this)){
             return this;

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java?rev=419629&r1=419628&r2=419629&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/MutableBrokerFilter.java Thu Jul  6 10:50:56 2006
@@ -16,8 +16,6 @@
  */
 package org.apache.activemq.broker;
 
-import java.util.Map;
-import java.util.Set;
 import org.apache.activemq.broker.region.Destination;
 import org.apache.activemq.broker.region.Subscription;
 import org.apache.activemq.command.ActiveMQDestination;
@@ -35,6 +33,9 @@
 import org.apache.activemq.command.SessionInfo;
 import org.apache.activemq.command.TransactionId;
 
+import java.util.Map;
+import java.util.Set;
+
 /**
  * Like a BrokerFilter but it allows you to switch the getNext().broker.  This has more 
  * overhead than a BrokerFilter since access to the getNext().broker has to synchronized
@@ -72,6 +73,10 @@
         
     public Map getDestinationMap() {
         return getNext().getDestinationMap();
+    }
+
+    public Set getDestinations(ActiveMQDestination destination) {
+        return getNext().getDestinations(destination);
     }
 
     public void acknowledge(ConnectionContext context, MessageAck ack) throws Exception {

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java?rev=419629&r1=419628&r2=419629&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/AbstractRegion.java Thu Jul  6 10:50:56 2006
@@ -134,6 +134,17 @@
         }
     }
     
+    /**
+     * Provide an exact or wildcard lookup of destinations in the region
+     * 
+     * @return a set of matching destination objects.
+     */
+    public Set getDestinations(ActiveMQDestination destination) {
+        synchronized(destinationsMutex){
+            return destinationMap.get(destination);
+        }
+    }
+    
     public Map getDestinationMap() {
         synchronized(destinationsMutex){
             return new HashMap(destinations);

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Region.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Region.java?rev=419629&r1=419628&r2=419629&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Region.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Region.java Thu Jul  6 10:50:56 2006
@@ -26,6 +26,7 @@
 import org.apache.activemq.command.RemoveSubscriptionInfo;
 
 import java.util.Map;
+import java.util.Set;
 
 /**
  * A Region is used to implement the different QOS options available to 
@@ -114,5 +115,12 @@
     public void processDispatchNotification(MessageDispatchNotification messageDispatchNotification) throws Exception;
 
     public void gc();
+
+    /**
+     * Provide an exact or wildcard lookup of destinations in the region
+     * 
+     * @return a set of matching destination objects.
+     */
+    public Set getDestinations(ActiveMQDestination destination);
     
 }

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
URL: http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java?rev=419629&r1=419628&r2=419629&view=diff
==============================================================================
--- incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java Thu Jul  6 10:50:56 2006
@@ -103,6 +103,21 @@
         return answer;
     }
 
+    public Set getDestinations(ActiveMQDestination destination) {
+        switch(destination.getDestinationType()) {
+        case ActiveMQDestination.QUEUE_TYPE:
+            return queueRegion.getDestinations(destination);
+        case ActiveMQDestination.TOPIC_TYPE:
+            return topicRegion.getDestinations(destination);
+        case ActiveMQDestination.TEMP_QUEUE_TYPE:
+            return tempQueueRegion.getDestinations(destination);
+        case ActiveMQDestination.TEMP_TOPIC_TYPE:
+            return tempTopicRegion.getDestinations(destination);
+        default:
+            return Collections.EMPTY_SET;
+        }
+    }
+
     public Broker getAdaptor(Class type){
         if (type.isInstance(this)){
             return this;