You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2013/12/13 16:57:45 UTC

svn commit: r1550752 - in /qpid/jms/trunk/src: main/java/org/apache/qpid/jms/impl/MessageImpl.java test/java/org/apache/qpid/jms/impl/MessageImplTest.java

Author: robbie
Date: Fri Dec 13 15:57:44 2013
New Revision: 1550752

URL: http://svn.apache.org/r1550752
Log:
QPIDJMS-9: add basic support for clearProperties(), sans state checking

Modified:
    qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/MessageImpl.java
    qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/MessageImplTest.java

Modified: qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/MessageImpl.java
URL: http://svn.apache.org/viewvc/qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/MessageImpl.java?rev=1550752&r1=1550751&r2=1550752&view=diff
==============================================================================
--- qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/MessageImpl.java (original)
+++ qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/MessageImpl.java Fri Dec 13 15:57:44 2013
@@ -123,6 +123,8 @@ public abstract class MessageImpl<T exte
 
     private void setApplicationProperty(String name, Object value) throws MessageFormatException
     {
+        //TODO: check properties read/write state
+
         checkPropertyNameIsValid(name);
 
         if(JMS_AMQP_TTL.equals(name))
@@ -394,10 +396,10 @@ public abstract class MessageImpl<T exte
     @Override
     public void clearProperties() throws JMSException
     {
-        // TODO Auto-generated method stub
-        throw new UnsupportedOperationException("Not Implemented");
+        //TODO: toggle properties read/write state
 
-        //_propJMS_AMQP_TTL = null;
+        _amqpMessage.clearAllApplicationProperties();
+        _propJMS_AMQP_TTL = null;
     }
 
     @Override

Modified: qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/MessageImplTest.java
URL: http://svn.apache.org/viewvc/qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/MessageImplTest.java?rev=1550752&r1=1550751&r2=1550752&view=diff
==============================================================================
--- qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/MessageImplTest.java (original)
+++ qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/MessageImplTest.java Fri Dec 13 15:57:44 2013
@@ -175,6 +175,30 @@ public class MessageImplTest extends Qpi
         assertFalse(names.hasMoreElements());
     }
 
+    @Test
+    public void testClearPropertiesEmptiesProperties() throws Exception
+    {
+        String propertyName = "myProperty";
+
+        _testMessage.setObjectProperty(propertyName, "string");
+
+        _testMessage.clearProperties();
+
+        //check the prop no longer exists, returns null
+        assertFalse(_testMessage.propertyExists(propertyName));
+        assertNull(_testMessage.getObjectProperty(propertyName));
+
+        //check there are no properties
+        Enumeration<?> names = _testMessage.getPropertyNames();
+        int numProps = 0;
+        while(names.hasMoreElements())
+        {
+            numProps++;
+        }
+
+        assertEquals(0, numProps);
+    }
+
     // ======= String Properties =========
 
     @Test
@@ -980,9 +1004,46 @@ public class MessageImplTest extends Qpi
 
         _testMessage.setLongProperty(JMS_AMQP_TTL, 5L);
 
+        //verify that the underlying message doesn't have a JMS_AMQP_TTL entry in its
+        //application-properties section, as we don't transmit the value that way
         assertFalse(_testAmqpMessage.applicationPropertyExists(JMS_AMQP_TTL));
     }
 
+    @Test
+    public void testJMS_AMQP_TTL_AfterClearProperties() throws Exception
+    {
+        _testMessage.setLongProperty(JMS_AMQP_TTL, 5L);
+
+        assertTrue(_testMessage.propertyExists(JMS_AMQP_TTL));
+
+        _testMessage.clearProperties();
+
+        //check the prop no longer exists
+        assertFalse(_testMessage.propertyExists(JMS_AMQP_TTL));
+
+        //verify getting the value returns a NFE
+        try
+        {
+            _testMessage.getLongProperty(JMS_AMQP_TTL);
+            fail("expected exception not thrown");
+        }
+        catch(NumberFormatException nfe)
+        {
+            //expected, property isn't set, so it returns null, and so
+            //the null->Long conversion process failure applies
+        }
+
+        //check there are no properties
+        Enumeration<?> names = _testMessage.getPropertyNames();
+        int numProps = 0;
+        while(names.hasMoreElements())
+        {
+            numProps++;
+        }
+
+        assertEquals(0, numProps);
+    }
+
     // ====== utility methods =======
 
     private void assertGetPropertyThrowsMessageFormatException(TestMessageImpl testMessage,



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org