summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2006-12-13 10:01:07 +0000
committerMartin Ritchie <ritchiem@apache.org>2006-12-13 10:01:07 +0000
commit932613bca5c7515437182723c1c915ecf7fee3e2 (patch)
treeedd670c48f4f8eed636eed75b7f03234eabe7b77
parent39dd61bc66b531810160ef00de938846c27052c9 (diff)
downloadqpid-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
-rw-r--r--java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java4
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java2
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java24
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);