Author: rajith Date: Wed Jun 3 03:12:03 2009 New Revision: 781244 URL: http://svn.apache.org/viewvc?rev=781244&view=rev Log: This is a fix for QPID-1888 The SelectorTest contains a test case to catch this as the JMS tck does not have one.
Added: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java?rev=781244&r1=781243&r2=781244&view=diff ============================================================================== --- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java (original) +++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java Wed Jun 3 03:12:03 2009 @@ -204,6 +204,24 @@ } } }); + + JMS_PROPERTY_EXPRESSIONS.put("JMSMessageID", new Expression() + { + public Object evaluate(AbstractJMSMessage message) + { + try + { + return message.getJMSMessageID(); + } + catch (Exception e) + { + _logger.warn("Error evaluating property",e); + + return null; + } + + } + }); } Added: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java?rev=781244&view=auto ============================================================================== --- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java (added) +++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java Wed Jun 3 03:12:03 2009 @@ -0,0 +1,61 @@ +package org.apache.qpid.test.client.message; + +import javax.jms.Connection; +import javax.jms.Destination; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageProducer; +import javax.jms.Session; + +import junit.framework.Assert; + +import org.apache.log4j.Logger; +import org.apache.qpid.test.utils.QpidTestCase; + +public class SelectorTest extends QpidTestCase +{ + private static final Logger _logger = Logger.getLogger(SelectorTest.class); + + public void testSelectorWithJMSMessageID() throws Exception + { + Connection conn = getConnection(); + conn.start(); + Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + + Destination dest = session.createQueue("SelectorQueue"); + + MessageProducer prod = session.createProducer(dest); + MessageConsumer consumer = session.createConsumer(dest,"JMSMessageID IS NOT NULL"); + + for (int i=0; i<2; i++) + { + Message msg = session.createTextMessage("Msg" + String.valueOf(i)); + prod.send(msg); + } + + Message msg1 = consumer.receive(500); + Message msg2 = consumer.receive(500); + + Assert.assertNotNull("Msg1 should not be null", msg1); + Assert.assertNotNull("Msg2 should not be null", msg2); + + prod.setDisableMessageID(true); + + for (int i=0; i<2; i++) + { + Message msg = session.createTextMessage("Msg" + String.valueOf(i)); + prod.send(msg); + } + + Message msg3 = consumer.receive(1000); + Assert.assertNull("Msg3 should be null", msg3); + + consumer = session.createConsumer(dest,"JMSMessageID IS NULL"); + + Message msg4 = consumer.receive(500); + Message msg5 = consumer.receive(500); + + Assert.assertNotNull("Msg4 should not be null", msg4); + Assert.assertNotNull("Msg5 should not be null", msg5); + } +} --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org