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();
+
+    }    
 }


Reply via email to