diff options
author | Martin Ritchie <ritchiem@apache.org> | 2006-12-13 10:01:07 +0000 |
---|---|---|
committer | Martin Ritchie <ritchiem@apache.org> | 2006-12-13 10:01:07 +0000 |
commit | 932613bca5c7515437182723c1c915ecf7fee3e2 (patch) | |
tree | edd670c48f4f8eed636eed75b7f03234eabe7b77 | |
parent | 39dd61bc66b531810160ef00de938846c27052c9 (diff) | |
download | qpid-python-932613bca5c7515437182723c1c915ecf7fee3e2.tar.gz |
QPID-9
Added ability to send NULL Strings. EncodingUtils.java now returns an empty string for a zero lengthed String.
To send a null string use prefix 'n'
MapMessageTest.java - Updated to test emptyString and nullString behave correctly.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@486574 13f79535-47bb-0310-9956-ffa450edef68
3 files changed, 23 insertions, 7 deletions
diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java index 24cc1b6259..1a469c1d12 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java @@ -1170,9 +1170,7 @@ public class MapMessageTest extends TestCase implements MessageListener //Check Special values assertTrue(m.getString("nullString") == null); - assertTrue(m.getString("emptyString") == null); - _logger.warn("An emptyString should not become a null string after transmission."); - //assertEqual("", m.getString("emptyString")); + assertEqual("", m.getString("emptyString")); } private void assertBytesEqual(byte[] expected, byte[] actual) diff --git a/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java b/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java index 0c0b201174..2efdb88fd9 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java +++ b/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java @@ -343,7 +343,7 @@ public class EncodingUtils long length = buffer.getUnsignedInt(); if (length == 0) { - return null; + return ""; } else { 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 f367156e73..e6f5196434 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 @@ -52,6 +52,7 @@ public class PropertyFieldTable implements FieldTable, Map public static final char LONG_PROPERTY_PREFIX = 'l'; public static final char FLOAT_PROPERTY_PREFIX = 'f'; public static final char DOUBLE_PROPERTY_PREFIX = 'd'; + public static final char NULL_STRING_PROPERTY_PREFIX = 'n'; public static final char STRING_PROPERTY_PREFIX = AMQP_STRING_PROPERTY_PREFIX; public static final char CHAR_PROPERTY_PREFIX = AMQP_ASCII_STRING_PROPERTY_PREFIX; @@ -235,9 +236,11 @@ public class PropertyFieldTable implements FieldTable, Map } else { + + String type = _propertyNamesTypeMap.get(string); - if (type == null) + if (type == null || type.equals("" + NULL_STRING_PROPERTY_PREFIX)) { return null; } @@ -345,7 +348,14 @@ public class PropertyFieldTable implements FieldTable, Map public Object setString(String string, String string1) { - return put(STRING_PROPERTY_PREFIX + string, string1); + if (string1 == null) + { + return put(NULL_STRING_PROPERTY_PREFIX + string, null); + } + else + { + return put(STRING_PROPERTY_PREFIX + string, string1); + } } public Object setChar(String string, char c) @@ -1167,7 +1177,9 @@ public class PropertyFieldTable implements FieldTable, Map buffer.put((byte) DOUBLE_PROPERTY_PREFIX); EncodingUtils.writeDouble(buffer, (Double) value); break; - + case NULL_STRING_PROPERTY_PREFIX: + buffer.put((byte) NULL_STRING_PROPERTY_PREFIX); + break; case AMQP_WIDE_STRING_PROPERTY_PREFIX: //case AMQP_STRING_PROPERTY_PREFIX: case STRING_PROPERTY_PREFIX: @@ -1263,6 +1275,9 @@ public class PropertyFieldTable implements FieldTable, Map case STRING_PROPERTY_PREFIX: value = EncodingUtils.readLongString(buffer); break; + case NULL_STRING_PROPERTY_PREFIX: + value = null; + break; //case AMQP_ASCII_STRING_PROPERTY_PREFIX: case CHAR_PROPERTY_PREFIX: value = EncodingUtils.readShortString(buffer).charAt(0); @@ -1345,6 +1360,9 @@ public class PropertyFieldTable implements FieldTable, Map case STRING_PROPERTY_PREFIX: encodingSize += EncodingUtils.encodedLongStringLength((String) value); break; + case NULL_STRING_PROPERTY_PREFIX: + // There is no need for additiona size beyond the prefix + break; //case AMQP_ASCII_STRING_PROPERTY_PREFIX: case CHAR_PROPERTY_PREFIX: encodingSize += EncodingUtils.encodedShortStringLength("" + (Character) value); |