From c2c4435546670b6010205f82418caac7297a3e23 Mon Sep 17 00:00:00 2001 From: "Rafael H. Schloming" Date: Tue, 12 Aug 2008 16:30:19 +0000 Subject: QPID-1235: fixed setXXXProperty to check for empty strings git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@685218 13f79535-47bb-0310-9956-ffa450edef68 --- .../client/message/AMQMessageDelegate_0_10.java | 9 +++++ .../qpid/test/unit/basic/PropertyValueTest.java | 47 ++++++++++++++++++++-- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java b/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java index e66ba433a9..5a57e7b0db 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_10.java +++ b/qpid/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/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java index 48bd722aae..1b3dffe9b9 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java +++ b/qpid/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() -- cgit v1.2.1