You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2006/12/13 11:01:08 UTC

svn commit: r486574 - in /incubator/qpid/trunk/qpid/java: client/src/test/java/org/apache/qpid/test/unit/basic/ common/src/main/java/org/apache/qpid/framing/

Author: ritchiem
Date: Wed Dec 13 02:01:07 2006
New Revision: 486574

URL: http://svn.apache.org/viewvc?view=rev&rev=486574
Log:
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.

Modified:
    incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java

Modified: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java?view=diff&rev=486574&r1=486573&r2=486574
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java Wed Dec 13 02:01:07 2006
@@ -1170,9 +1170,7 @@
 
         //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)

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java?view=diff&rev=486574&r1=486573&r2=486574
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java Wed Dec 13 02:01:07 2006
@@ -343,7 +343,7 @@
         long length = buffer.getUnsignedInt();
         if (length == 0)
         {
-            return null;
+            return "";
         }
         else
         {

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java?view=diff&rev=486574&r1=486573&r2=486574
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/framing/PropertyFieldTable.java Wed Dec 13 02:01:07 2006
@@ -52,6 +52,7 @@
     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 @@
         }
         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 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 @@
                         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 @@
                 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);
@@ -1344,6 +1359,9 @@
                 //case AMQP_STRING_PROPERTY_PREFIX:
             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: