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 2009/02/26 17:39:43 UTC

svn commit: r748204 - in /activemq/trunk/activemq-core/src: main/java/org/apache/activemq/broker/region/Queue.java test/java/org/apache/activemq/JmsQueueBrowserTest.java

Author: dejanb
Date: Thu Feb 26 16:39:40 2009
New Revision: 748204

URL: http://svn.apache.org/viewvc?rev=748204&view=rev
Log:
fix for https://issues.apache.org/activemq/browse/AMQ-1859

Modified:
    activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueBrowserTest.java

Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java?rev=748204&r1=748203&r2=748204&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/Queue.java Thu Feb 26 16:39:40 2009
@@ -287,8 +287,8 @@
                 QueueBrowserSubscription browserSubscription = (QueueBrowserSubscription) sub;
             	
                 // do again in iterate to ensure new messages are dispatched
-                doPageIn(false);
-            
+                pageInMessages(false);
+                
             	synchronized (pagedInMessages) {
             	    if (!pagedInMessages.isEmpty()) {
             	        BrowserDispatch browserDispatch = new BrowserDispatch(browserSubscription, pagedInMessages.values());
@@ -1339,6 +1339,10 @@
             Subscription target = null;
             int interestCount=0;
             for (Subscription s : consumers) {
+            	if (s instanceof QueueBrowserSubscription) {
+            		interestCount++;
+            		continue;
+            	}
                 if (dispatchSelector.canSelect(s, node)) {
                     if (!fullConsumers.contains(s)) {
                         if (!s.isFull()) {

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueBrowserTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueBrowserTest.java?rev=748204&r1=748203&r2=748204&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueBrowserTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JmsQueueBrowserTest.java Thu Feb 26 16:39:40 2009
@@ -95,4 +95,37 @@
         consumer.close();
 
     }
+    
+    public void testBrowseReceive() throws Exception {
+        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        ActiveMQQueue destination = new ActiveMQQueue("TEST");
+       
+        connection.start();
+
+        Message[] outbound = new Message[]{session.createTextMessage("First Message"),
+                                           session.createTextMessage("Second Message"),
+                                           session.createTextMessage("Third Message")};
+
+        
+        MessageProducer producer = session.createProducer(destination);
+        producer.send(outbound[0]);
+        
+        // create browser first
+        QueueBrowser browser = session.createBrowser((Queue) destination);
+        Enumeration enumeration = browser.getEnumeration();
+        
+        // create consumer
+        MessageConsumer consumer = session.createConsumer(destination);
+        
+        // browse the first message
+        assertTrue("should have received the fisrts message", enumeration.hasMoreElements());
+        assertEquals(outbound[0], (Message) enumeration.nextElement());
+        
+        // Receive the first message.
+        assertEquals(outbound[0], consumer.receive(1000));
+        consumer.close();
+        browser.close();
+        producer.close();
+
+    }    
 }