Author: aidan
Date: Tue Jul  8 02:07:37 2008
New Revision: 674747

URL: http://svn.apache.org/viewvc?rev=674747&view=rev
Log:
QPID-293 allow messages which have been received by the consumer before a 
message listener has been set to be delivered.

BasicMessageConsumer.java: If there are messages on the synchronous queue when 
a message listener is set, deliver them to it since they can no longer be 
consumed().

MessageListenerTest.java: Uncomment code that will make the test fail and 
demonstrate the bug

Modified:
    
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
    
incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java

Modified: 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java?rev=674747&r1=674746&r2=674747&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java
 Tue Jul  8 02:07:37 2008
@@ -277,6 +277,14 @@
                     _messageListener.set(messageListener);
                     _session.setHasMessageListeners();
                     _session.startDispatcherIfNecessary();
+                    
+                    // If we already have messages on the queue, deliver them 
to the listener
+                    Object o = _synchronousQueue.poll();
+                    while (o != null)
+                    {
+                        messageListener.onMessage((Message) o);
+                        o = _synchronousQueue.poll();
+                    }
                 }
             }
         }

Modified: 
incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java?rev=674747&r1=674746&r2=674747&view=diff
==============================================================================
--- 
incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java
 (original)
+++ 
incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java
 Tue Jul  8 02:07:37 2008
@@ -132,16 +132,16 @@
 
     }
 
-    public void testRecieveTheUseMessageListener() throws Exception
+    public void testRecieveThenUseMessageListener() throws Exception
     {
 
         _logger.error("Test disabled as initial receive is not called first");
         // Perform initial receive to start connection
-        // assertTrue(_consumer.receive(2000) != null);
-        // receivedCount++;
+        assertTrue(_consumer.receive(2000) != null);
+        receivedCount++;
 
         // Sleep to ensure remaining 4 msgs end up on _synchronousQueue
-        // Thread.sleep(1000);
+        Thread.sleep(1000);
 
         // Set the message listener and wait for the messages to come in.
         _consumer.setMessageListener(this);


Reply via email to