summaryrefslogtreecommitdiff
path: root/qpid/java
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
commit7cc8461698809c7623a9dab68bf4a72e0e1e04c4 (patch)
tree7a6f9909a8452138ba3f9a51d298a402700e466f /qpid/java
parent661942f75301b0f6fb2d1efa26f9403e80bce2d8 (diff)
downloadqpid-python-7cc8461698809c7623a9dab68bf4a72e0e1e04c4.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@781244 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java18
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java61
2 files changed, 79 insertions, 0 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java b/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java
index 2c05f5ce0f..09152f7f1b 100644
--- a/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java
+++ b/qpid/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/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java
new file mode 100644
index 0000000000..6de7012f8d
--- /dev/null
+++ b/qpid/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);
+ }
+}