diff options
| author | Rajith Muditha Attapattu <rajith@apache.org> | 2009-06-03 03:12:03 +0000 |
|---|---|---|
| committer | Rajith Muditha Attapattu <rajith@apache.org> | 2009-06-03 03:12:03 +0000 |
| commit | 560c91b87a0960f030e3d5c3d6cc2431348e0b1a (patch) | |
| tree | 1ba7742ddbf7363bdd98b41673465a3191562e7a | |
| parent | 1ae72df2ca7a0f1a66b7c97f86409ff9761e4f85 (diff) | |
| download | qpid-python-560c91b87a0960f030e3d5c3d6cc2431348e0b1a.tar.gz | |
This is a fix for QPID-1888
The SelectorTest contains a test case to catch this as the JMS tck does not have one.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@781244 13f79535-47bb-0310-9956-ffa450edef68
| -rw-r--r-- | java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java | 18 | ||||
| -rw-r--r-- | java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java | 61 |
2 files changed, 79 insertions, 0 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java b/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java index 2c05f5ce0f..09152f7f1b 100644 --- a/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java +++ b/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java @@ -204,6 +204,24 @@ public class PropertyExpression implements Expression } } }); + + 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; + } + + } + }); } diff --git a/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java b/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java new file mode 100644 index 0000000000..6de7012f8d --- /dev/null +++ b/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java @@ -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); + } +} |
