You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ai...@apache.org on 2008/07/08 11:07:38 UTC
svn commit: r674747 - in /incubator/qpid/trunk/qpid/java/client/src:
main/java/org/apache/qpid/client/BasicMessageConsumer.java
test/java/org/apache/qpid/client/MessageListenerTest.java
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);