diff options
author | Robert Greig <rgreig@apache.org> | 2006-12-16 09:59:02 +0000 |
---|---|---|
committer | Robert Greig <rgreig@apache.org> | 2006-12-16 09:59:02 +0000 |
commit | 868b03b88d4defa781cbd5898d4c576bbe494997 (patch) | |
tree | 69b7e32ca0778bbc918e4aa35659e577399e42d2 /java | |
parent | 0b7211b3f64fba8ecd60175d01f091f97f0c7f12 (diff) | |
download | qpid-python-868b03b88d4defa781cbd5898d4c576bbe494997.tar.gz |
QPID-201 : Fix to throw correct exception when getting char as null in JMSMapMessage
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@487779 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
4 files changed, 69 insertions, 63 deletions
diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/message/MapMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/message/MapMessageTest.java index 276067a28d..bd4b3b3987 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/client/message/MapMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/message/MapMessageTest.java @@ -102,6 +102,27 @@ public class MapMessageTest extends TestCase { Assert.fail("JMSException received." + e); } + + try + { + JMSMapMessage mm = TestMessageHelper.newJMSMapMessage(); + + mm.setString("value", null); + char c = mm.getChar("value"); + fail("Expected NullPointerException"); + + } + catch (NullPointerException e) + { + ; // pass + } + catch (JMSException e) + { + Assert.fail("JMSException received." + e); + } + + + } public void testDoubleLookup() diff --git a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java index 44d0268561..193c7adf1c 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java +++ b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java @@ -93,4 +93,6 @@ public interface FieldTable extends Map public Object setObject(String string, Object object); + public boolean isNullStringValue(String name); + } diff --git a/java/common/src/main/java/org/apache/qpid/framing/JMSPropertyFieldTable.java b/java/common/src/main/java/org/apache/qpid/framing/JMSPropertyFieldTable.java index d2b64ec3c5..142a689a01 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/JMSPropertyFieldTable.java +++ b/java/common/src/main/java/org/apache/qpid/framing/JMSPropertyFieldTable.java @@ -174,7 +174,7 @@ public class JMSPropertyFieldTable if (c == null) { - if (_fieldtable.get(string) instanceof Character) + if (_fieldtable.isNullStringValue(string)) { throw new NullPointerException("Cannot convert null char"); } @@ -415,7 +415,7 @@ public class JMSPropertyFieldTable } catch (AMQPInvalidClassException aice) { - throw new JMSException("Only primatives are allowed object is:" + object.getClass()); + throw new MessageFormatException("Only primatives are allowed object is:" + object.getClass()); } } diff --git a/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java b/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java index 4dafee910d..1292ff2f6e 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java +++ b/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java @@ -438,72 +438,55 @@ public class PropertyFieldTable implements FieldTable { return setBoolean(string, (Boolean) object); } - else + else if (object instanceof Byte) { - if (object instanceof Byte) - { - return setByte(string, (Byte) object); - } - else - { - if (object instanceof Short) - { - return setShort(string, (Short) object); - } - else - { - if (object instanceof Integer) - { - return setInteger(string, (Integer) object); - } - else - { - if (object instanceof Long) - { - return setLong(string, (Long) object); - } - else - { - if (object instanceof Float) - { - return setFloat(string, (Float) object); - } - else - { - if (object instanceof Double) - { - return setDouble(string, (Double) object); - } - else - { - if (object instanceof String) - { - return setString(string, (String) object); - } - else - { - if (object instanceof Character) - { - return setChar(string, (Character) object); - } - else - { - if (object instanceof byte[]) - { - return setBytes(string, (byte[]) object); - } - } - } - } - } - } - } - } - } + return setByte(string, (Byte) object); + } + else if (object instanceof Short) + { + return setShort(string, (Short) object); + } + else if (object instanceof Integer) + { + return setInteger(string, (Integer) object); + } + else if (object instanceof Long) + { + return setLong(string, (Long) object); + } + else if (object instanceof Float) + { + return setFloat(string, (Float) object); + } + else if (object instanceof Double) + { + return setDouble(string, (Double) object); + } + else if (object instanceof String) + { + return setString(string, (String) object); } + else if (object instanceof Character) + { + return setChar(string, (Character) object); + } + else if (object instanceof byte[]) + { + return setBytes(string, (byte[]) object); + } + throw new AMQPInvalidClassException("Only Primatives objects allowed Object is:" + object.getClass()); } + + public boolean isNullStringValue(String name) + { + return _properties.containsKey(name) && (_properties.get(name) == null) && + _propertyNamesTypeMap.get(name).equals(Prefix.AMQP_NULL_STRING_PROPERTY_PREFIX); + + + } + // ***** Methods public Enumeration getPropertyNames() |