You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2008/08/13 15:22:32 UTC

svn commit: r685536 - in /incubator/qpid/trunk/qpid/java: client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java

Author: rhs
Date: Wed Aug 13 06:22:31 2008
New Revision: 685536

URL: http://svn.apache.org/viewvc?rev=685536&view=rev
Log:
QPID-1236: made setObjectProperty validate the passed in value

Modified:
    incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
    incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java

Modified: incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java?rev=685536&r1=685535&r2=685536&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java Wed Aug 13 06:22:31 2008
@@ -736,10 +736,32 @@
         setApplicationHeader(propertyName, value);
     }
 
+    private static final Set<Class> ALLOWED = new HashSet();
+    static
+    {
+        ALLOWED.add(Boolean.class);
+        ALLOWED.add(Byte.class);
+        ALLOWED.add(Short.class);
+        ALLOWED.add(Integer.class);
+        ALLOWED.add(Long.class);
+        ALLOWED.add(Float.class);
+        ALLOWED.add(Double.class);
+        ALLOWED.add(Character.class);
+        ALLOWED.add(String.class);
+        ALLOWED.add(byte[].class);
+    }
+
     public void setObjectProperty(String propertyName, Object object) throws JMSException
     {
         checkPropertyName(propertyName);
         checkWritableProperties();
+        if (object != null && !ALLOWED.contains(object.getClass()))
+        {
+            throw new MessageFormatException
+                (String.format
+                 ("Cannot set a %s, allowed property types are: %s",
+                  object.getClass(), ALLOWED));
+        }
         setApplicationHeader(propertyName, object);
     }
 

Modified: incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java?rev=685536&r1=685535&r2=685536&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java (original)
+++ incubator/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java Wed Aug 13 06:22:31 2008
@@ -39,6 +39,7 @@
 import javax.jms.Destination;
 import javax.jms.JMSException;
 import javax.jms.Message;
+import javax.jms.MessageFormatException;
 import javax.jms.MessageListener;
 import javax.jms.MessageProducer;
 import javax.jms.Queue;
@@ -142,6 +143,20 @@
         }
     }
 
+    public void testSetDisallowedClass() throws Exception
+    {
+        Message m = getTestMessage();
+        try
+        {
+            m.setObjectProperty("foo", new Object());
+            fail("expected a MessageFormatException");
+        }
+        catch (MessageFormatException e)
+        {
+            // pass
+        }
+    }
+
     public void testOnce()
     {
         runBatch(1);