summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajith Muditha Attapattu <rajith@apache.org>2009-06-03 03:12:03 +0000
committerRajith Muditha Attapattu <rajith@apache.org>2009-06-03 03:12:03 +0000
commit560c91b87a0960f030e3d5c3d6cc2431348e0b1a (patch)
tree1ba7742ddbf7363bdd98b41673465a3191562e7a
parent1ae72df2ca7a0f1a66b7c97f86409ff9761e4f85 (diff)
downloadqpid-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.java18
-rw-r--r--java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java61
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);
+ }
+}