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

Reply via email to