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 2013/01/24 15:54:49 UTC

svn commit: r1438032 - in /activemq/trunk: activemq-broker/src/main/java/org/apache/activemq/plugin/ activemq-core/src/test/java/org/apache/activemq/broker/virtual/ activemq-core/src/test/resources/org/apache/activemq/broker/virtual/

Author: dejanb
Date: Thu Jan 24 14:54:49 2013
New Revision: 1438032

URL: http://svn.apache.org/viewvc?rev=1438032&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-4271 - virtualSelectorCacheBrokerPlugin support for consumers with no selectors

Modified:
    activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/plugin/SubQueueSelectorCacheBroker.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/virtual/VirtualTopicDisconnectSelectorTest.java
    activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/virtual/disconnected-selector.xml

Modified: activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/plugin/SubQueueSelectorCacheBroker.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/plugin/SubQueueSelectorCacheBroker.java?rev=1438032&r1=1438031&r2=1438032&view=diff
==============================================================================
--- activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/plugin/SubQueueSelectorCacheBroker.java (original)
+++ activemq/trunk/activemq-broker/src/main/java/org/apache/activemq/plugin/SubQueueSelectorCacheBroker.java Thu Jan 24 14:54:49 2013
@@ -86,9 +86,15 @@ public class SubQueueSelectorCacheBroker
     @Override
     public Subscription addConsumer(ConnectionContext context, ConsumerInfo info) throws Exception {
         LOG.debug("Caching consumer selector [" + info.getSelector() + "] on a " + info.getDestination().getQualifiedName());
-        if (info.getSelector() != null) {
-            subSelectorCache.put(info.getDestination().getQualifiedName(), info.getSelector());
-        } //if
+        String selector = info.getSelector();
+
+        // As ConcurrentHashMap doesn't support null values, use always true expression
+        if (selector == null) {
+            selector = "TRUE";
+        }
+
+        subSelectorCache.put(info.getDestination().getQualifiedName(), selector);
+
         return super.addConsumer(context, info);
     }
 

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/virtual/VirtualTopicDisconnectSelectorTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/virtual/VirtualTopicDisconnectSelectorTest.java?rev=1438032&r1=1438031&r2=1438032&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/virtual/VirtualTopicDisconnectSelectorTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/virtual/VirtualTopicDisconnectSelectorTest.java Thu Jan 24 14:54:49 2013
@@ -44,10 +44,16 @@ public class VirtualTopicDisconnectSelec
 
     private static final Logger LOG = LoggerFactory.getLogger(VirtualTopicDisconnectSelectorTest.class);
     protected Connection connection;
-    protected int total = 3000;
-    protected String messageSelector;
 
-    public void testVirtualTopicDisconnect() throws Exception {
+    public void testVirtualTopicSelectorDisconnect() throws Exception {
+        testVirtualTopicDisconnect("odd = 'no'", 3000, 1500);
+    }
+
+    public void testVirtualTopicNoSelectorDisconnect() throws Exception {
+        testVirtualTopicDisconnect(null, 3000, 3000);
+    }
+
+    public void testVirtualTopicDisconnect(String messageSelector, int total , int expected) throws Exception {
         if (connection == null) {
             connection = createConnection();
         }
@@ -63,7 +69,7 @@ public class VirtualTopicDisconnectSelec
         LOG.info("Sending to: " + producerDestination);
         LOG.info("Consuming from: " + destination );
 
-        MessageConsumer consumer = session.createConsumer(destination, messageSelector);
+        MessageConsumer consumer = createConsumer(session, destination, messageSelector);
 
         MessageListener listener = new MessageListener(){
             public void onMessage(Message message){
@@ -93,12 +99,12 @@ public class VirtualTopicDisconnectSelec
                consumer.close();
             }
             if (i==reconnectCount){
-                consumer = session.createConsumer(destination, messageSelector);
+                consumer = createConsumer(session, destination, messageSelector);
                 consumer.setMessageListener(listener);
             }
         }
 
-        assertMessagesArrived(messageList,total/2,10000);
+        assertMessagesArrived(messageList, expected ,10000);
     }
             
     protected Destination getConsumerDsetination() {
@@ -112,7 +118,14 @@ public class VirtualTopicDisconnectSelec
 
     protected void setUp() throws Exception {
         super.setUp();
-        messageSelector = "odd = 'no'";
+    }
+
+    protected MessageConsumer createConsumer(Session session, Destination destination, String messageSelector) throws JMSException {
+        if (messageSelector != null) {
+            return session.createConsumer(destination, messageSelector);
+        } else {
+            return session.createConsumer(destination);
+        }
     }
 
     protected TextMessage createMessage(Session session, int i) throws JMSException {

Modified: activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/virtual/disconnected-selector.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/virtual/disconnected-selector.xml?rev=1438032&r1=1438031&r2=1438032&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/virtual/disconnected-selector.xml (original)
+++ activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/virtual/disconnected-selector.xml Thu Jan 24 14:54:49 2013
@@ -36,7 +36,7 @@
             </virtualDestinationInterceptor>
         </destinationInterceptors>
         <plugins>
-            <virtualSelectorCacheBrokerPlugin persistFile = "selectorcache.data"/>
+            <virtualSelectorCacheBrokerPlugin persistFile = "target/selectorcache.data"/>
         </plugins>
     </broker>
 </beans>