You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ra...@apache.org on 2011/06/21 00:30:35 UTC

svn commit: r1137804 - in /qpid/trunk/qpid/java: broker/src/main/java/org/apache/qpid/server/filter/ client/src/main/java/org/apache/qpid/filter/ systests/src/main/java/org/apache/qpid/test/client/message/

Author: rajith
Date: Mon Jun 20 22:30:35 2011
New Revision: 1137804

URL: http://svn.apache.org/viewvc?rev=1137804&view=rev
Log:
QPID-3273 The JMS delivery mode is now used evaluated as a string instead of an integer.
Added a test case to cover the JIRA. There was an existing test case (testUsingOnMessage) that had delivery mode in it's selector, but for some reason it was commented out.
I decided to add a new one as I was not sure why the delivery mode was taken out of the selector in that test case.

Modified:
    qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
    qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/filter/PropertyExpression.java
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java

Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java?rev=1137804&r1=1137803&r2=1137804&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java Mon Jun 20 22:30:35 2011
@@ -37,8 +37,8 @@ import org.apache.qpid.server.queue.Filt
 public class PropertyExpression implements Expression
 {
     // Constants - defined the same as JMS
-    private static final int NON_PERSISTENT = 1;
-    private static final int PERSISTENT = 2;
+    private static enum JMSDeliveryMode { NON_PERSISTENT, PERSISTENT }
+
     private static final int DEFAULT_PRIORITY = 4;
 
     private static final Logger _logger = org.apache.log4j.Logger.getLogger(PropertyExpression.class);
@@ -172,13 +172,14 @@ public class PropertyExpression implemen
     {
         public Object evaluate(Filterable message)
         {
-                int mode = message.isPersistent() ? PERSISTENT : NON_PERSISTENT;
+                JMSDeliveryMode mode = message.isPersistent() ? JMSDeliveryMode.PERSISTENT :
+                                                                JMSDeliveryMode.NON_PERSISTENT;
                 if (_logger.isDebugEnabled())
                 {
                     _logger.debug("JMSDeliveryMode is :" + mode);
                 }
 
-                return mode;
+                return mode.toString();
         }
     }
 

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=1137804&r1=1137803&r2=1137804&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 Mon Jun 20 22:30:35 2011
@@ -19,6 +19,7 @@ package org.apache.qpid.filter;
 
 import java.util.HashMap;
 
+import javax.jms.DeliveryMode;
 import javax.jms.JMSException;
 
 import org.apache.qpid.AMQInternalException;
@@ -32,7 +33,7 @@ import org.slf4j.LoggerFactory;
 public class PropertyExpression implements Expression
 {
     // Constants - defined the same as JMS
-    private static final int NON_PERSISTENT = 1;
+    private static enum JMSDeliveryMode { NON_PERSISTENT, PERSISTENT }
     private static final int DEFAULT_PRIORITY = 4;
 
     private static final Logger _logger = LoggerFactory.getLogger(PropertyExpression.class);
@@ -79,22 +80,24 @@ public class PropertyExpression implemen
                                      {
                                          public Object evaluate(AbstractJMSMessage message)
                                          {
+
+                                             JMSDeliveryMode mode = JMSDeliveryMode.NON_PERSISTENT;
                                              try
                                              {
-                                                 int mode = message.getJMSDeliveryMode();
+                                                 mode = message.getJMSDeliveryMode() == DeliveryMode.PERSISTENT ?
+                                                         JMSDeliveryMode.PERSISTENT : JMSDeliveryMode.NON_PERSISTENT;
+
                                                  if (_logger.isDebugEnabled())
                                                  {
                                                      _logger.debug("JMSDeliveryMode is :" + mode);
                                                  }
-
-                                                 return mode;
                                              }
                                              catch (JMSException e)
                                              {
                                                  _logger.warn("Error evaluating property",e);
                                              }
 
-                                             return NON_PERSISTENT;
+                                             return mode.toString();
                                          }
                                      });
 

Modified: 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=1137804&r1=1137803&r2=1137804&view=diff
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java (original)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java Mon Jun 20 22:30:35 2011
@@ -23,6 +23,7 @@ package org.apache.qpid.test.client.mess
 import java.util.concurrent.CountDownLatch;
 
 import javax.jms.DeliveryMode;
+import javax.jms.Destination;
 import javax.jms.InvalidSelectorException;
 import javax.jms.JMSException;
 import javax.jms.Message;
@@ -30,6 +31,7 @@ import javax.jms.MessageConsumer;
 import javax.jms.MessageListener;
 import javax.jms.MessageProducer;
 import javax.jms.Session;
+import javax.jms.TextMessage;
 
 import junit.framework.Assert;
 
@@ -280,6 +282,38 @@ public class SelectorTest extends QpidBr
         Assert.assertNotNull("Msg5 should not be null", msg5);
     }
 
+    public void testSelectorWithJMSDeliveryMode() throws Exception
+    {
+        Session session = _connection.createSession(false, Session.SESSION_TRANSACTED);
+
+        Destination dest1 = session.createTopic("test1");
+        Destination dest2 = session.createTopic("test2");
+
+        MessageProducer prod1 = session.createProducer(dest1);
+        MessageProducer prod2 = session.createProducer(dest2);
+        MessageConsumer consumer1 = session.createConsumer(dest1,"JMSDeliveryMode = 'PERSISTENT'");
+        MessageConsumer consumer2 = session.createConsumer(dest2,"JMSDeliveryMode = 'NON_PERSISTENT'");
+
+        Message msg1 = session.createTextMessage("Persistent");
+        prod1.send(msg1);
+        prod2.send(msg1);
+
+        prod1.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+        prod2.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
+
+        Message msg2 = session.createTextMessage("Non_Persistent");
+        prod1.send(msg2);
+        prod2.send(msg2);
+
+        TextMessage m1 = (TextMessage)consumer1.receive(1000);
+        assertEquals("Consumer1 should receive the persistent message","Persistent",m1.getText());
+        assertNull("Consumer1 should not receiver another message",consumer1.receive(1000));
+
+        TextMessage m2 = (TextMessage)consumer2.receive(1000);
+        assertEquals("Consumer2 should receive the non persistent message","Non_Persistent",m2.getText());
+        assertNull("Consumer2 should not receiver another message",consumer2.receive(1000));
+    }
+
     public static void main(String[] argv) throws Exception
     {
         SelectorTest test = new SelectorTest();



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org