You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2012/07/26 05:11:45 UTC

svn commit: r1365871 - in /activemq/trunk/activemq-core/src: main/java/org/apache/activemq/ActiveMQQueueBrowser.java test/java/org/apache/activemq/joramtests/JoramJmsTest.java

Author: chirino
Date: Thu Jul 26 03:11:45 2012
New Revision: 1365871

URL: http://svn.apache.org/viewvc?rev=1365871&view=rev
Log:
Fixes AMQ-3945: QueueBrowser missing messages on first browse.

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQQueueBrowser.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/joramtests/JoramJmsTest.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQQueueBrowser.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQQueueBrowser.java?rev=1365871&r1=1365870&r2=1365871&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQQueueBrowser.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQQueueBrowser.java Thu Jul 26 03:11:45 2012
@@ -19,15 +19,13 @@ package org.apache.activemq;
 import java.util.Enumeration;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import javax.jms.*;
 import javax.jms.IllegalStateException;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.Queue;
-import javax.jms.QueueBrowser;
 
 import org.apache.activemq.command.ActiveMQDestination;
 import org.apache.activemq.command.ConsumerId;
 import org.apache.activemq.command.MessageDispatch;
+import org.apache.activemq.selector.SelectorParser;
 
 /**
  * A client uses a <CODE>QueueBrowser</CODE> object to look at messages on a
@@ -69,27 +67,27 @@ public class ActiveMQQueueBrowser implem
 
     /**
      * Constructor for an ActiveMQQueueBrowser - used internally
-     *
-     * @param theSession
-     * @param dest
-     * @param selector
      * @throws JMSException
      */
     protected ActiveMQQueueBrowser(ActiveMQSession session, ConsumerId consumerId, ActiveMQDestination destination, String selector, boolean dispatchAsync) throws JMSException {
+        if (destination == null) {
+            throw new InvalidDestinationException("Don't understand null destinations");
+        } else if (destination.getPhysicalName() == null) {
+            throw new InvalidDestinationException("The destination object was not given a physical name.");
+        }
+        if (selector != null && selector.trim().length() != 0) {
+            // Validate the selector
+            SelectorParser.parse(selector);
+        }
+
         this.session = session;
         this.consumerId = consumerId;
         this.destination = destination;
         this.selector = selector;
         this.dispatchAsync = dispatchAsync;
-        this.consumer = createConsumer();
     }
 
     /**
-     * @param session
-     * @param originalDestination
-     * @param selectorExpression
-     * @param cnum
-     * @return
      * @throws JMSException
      */
     private ActiveMQMessageConsumer createConsumer() throws JMSException {
@@ -185,7 +183,7 @@ public class ActiveMQQueueBrowser implem
             }
 
             try {
-                Message answer = consumer.receiveNoWait();
+                javax.jms.Message answer = consumer.receiveNoWait();
                 if (answer != null) {
                     return answer;
                 }

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/joramtests/JoramJmsTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/joramtests/JoramJmsTest.java?rev=1365871&r1=1365870&r2=1365871&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/joramtests/JoramJmsTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/joramtests/JoramJmsTest.java Thu Jul 26 03:11:45 2012
@@ -28,6 +28,7 @@ import org.objectweb.jtests.jms.conform.
 import org.objectweb.jtests.jms.conform.message.headers.MessageHeaderTest;
 import org.objectweb.jtests.jms.conform.message.properties.JMSXPropertyTest;
 import org.objectweb.jtests.jms.conform.message.properties.MessagePropertyConversionTest;
+import org.objectweb.jtests.jms.conform.queue.QueueBrowserTest;
 import org.objectweb.jtests.jms.conform.queue.TemporaryQueueTest;
 import org.objectweb.jtests.jms.conform.selector.SelectorSyntaxTest;
 import org.objectweb.jtests.jms.conform.session.QueueSessionTest;
@@ -58,9 +59,9 @@ public class JoramJmsTest extends TestCa
         suite.addTestSuite(TopicSessionTest.class);
         suite.addTestSuite(TemporaryTopicTest.class);
         suite.addTestSuite(UnifiedSessionTest.class);
+        suite.addTestSuite(QueueBrowserTest.class);
 // TODO: figure out why the following tests are failing..
 //        suite.addTestSuite(MessagePropertyTest.class);
-//        suite.addTestSuite(QueueBrowserTest.class);
 //        suite.addTestSuite(SelectorTest.class);
         return suite;
     }