diff options
author | Rafael H. Schloming <rhs@apache.org> | 2008-08-12 16:30:19 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2008-08-12 16:30:19 +0000 |
commit | fb6350f465138ae0a2d0cb9231288ce5aa12a046 (patch) | |
tree | 86dd69e32584588007c2b4803b4524cc5651a760 | |
parent | dd54154fbffaa98477579b0784ec9e33da8f92f2 (diff) | |
download | qpid-python-fb6350f465138ae0a2d0cb9231288ce5aa12a046.tar.gz |
QPID-1235: fixed setXXXProperty to check for empty strings
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@685218 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java | 9 | ||||
-rw-r--r-- | java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java | 47 |
2 files changed, 53 insertions, 3 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java b/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java index e66ba433a9..5a57e7b0db 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java @@ -682,54 +682,63 @@ public class AMQMessageDelegate_0_10 implements AMQMessageDelegate public void setBooleanProperty(String propertyName, boolean b) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, b); } public void setByteProperty(String propertyName, byte b) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, b); } public void setShortProperty(String propertyName, short i) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, i); } public void setIntProperty(String propertyName, int i) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, i); } public void setLongProperty(String propertyName, long l) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, l); } public void setFloatProperty(String propertyName, float f) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, f); } public void setDoubleProperty(String propertyName, double v) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, v); } public void setStringProperty(String propertyName, String value) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, value); } public void setObjectProperty(String propertyName, Object object) throws JMSException { + checkPropertyName(propertyName); checkWritableProperties(); setApplicationHeader(propertyName, object); } diff --git a/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java b/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java index 48bd722aae..1b3dffe9b9 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java +++ b/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java @@ -50,6 +50,8 @@ import java.util.Iterator; import java.util.List; import java.net.URISyntaxException; +import java.lang.reflect.*; + public class PropertyValueTest extends QpidTestCase implements MessageListener { private static final Logger _logger = LoggerFactory.getLogger(PropertyValueTest.class); @@ -91,14 +93,53 @@ public class PropertyValueTest extends QpidTestCase implements MessageListener connection.start(); } - public void testGetNonexistent() throws Exception + private Message getTestMessage() throws Exception { Connection conn = getConnection(); Session ssn = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); - Message m = ssn.createTextMessage(); + return ssn.createTextMessage(); + } + + public void testGetNonexistent() throws Exception + { + Message m = getTestMessage(); String s = m.getStringProperty("nonexistent"); assertNull(s); - conn.close(); + } + + private static final String[] NAMES = { + "setBooleanProperty", "setByteProperty", "setShortProperty", + "setIntProperty", "setLongProperty", "setFloatProperty", + "setDoubleProperty", "setObjectProperty" + }; + + private static final Class[] TYPES = { + boolean.class, byte.class, short.class, int.class, long.class, + float.class, double.class, Object.class + }; + + private static final Object[] VALUES = { + true, (byte) 0, (short) 0, 0, (long) 0, (float) 0, (double) 0, + new Object() + }; + + public void testSetEmptyPropertyName() throws Exception + { + Message m = getTestMessage(); + + for (int i = 0; i < NAMES.length; i++) + { + Method meth = m.getClass().getMethod(NAMES[i], String.class, TYPES[i]); + try + { + meth.invoke(m, "", VALUES[i]); + fail("expected illegal argument exception"); + } + catch (InvocationTargetException e) + { + assertEquals(e.getCause().getClass(), IllegalArgumentException.class); + } + } } public void testOnce() |