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 14:40:40 UTC

svn commit: r486648 - in /incubator/qpid/trunk/qpid/java/common/src: main/java/org/apache/qpid/framing/EncodingUtils.java main/java/org/apache/qpid/framing/PropertyFieldTable.java test/java/org/apache/qpid/framing/PropertyFieldTableTest.java

Author: ritchiem
Date: Wed Dec 13 05:40:39 2006
New Revision: 486648

URL: http://svn.apache.org/viewvc?view=rev&rev=486648
Log:
QPID-9
Updated EncodingUtils.java to include a single Character field so we can tell the difference between a char and a string of length 1.

Tests changed accordingly.

Modified:
    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
    incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java

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=486648&r1=486647&r2=486648
==============================================================================
--- 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 05:40:39 2006
@@ -609,8 +609,22 @@
         }
     }
 
-    public static long encodedCharacterLength()
+    //CHAR_PROPERTY
+    public static long encodedCharLength()
     {
-        return encodedShortStringLength("c");
+        return encodedByteLength();
     }
+
+    public static char readChar(ByteBuffer buffer)
+    {
+        //This is valid as we know that the Character is ASCII 0..127
+        return (char) buffer.get();
+    }
+
+    public static void writeChar(ByteBuffer buffer, char character)
+    {
+        //This is valid as we know that the Character is ASCII 0..127
+        writeByte(buffer, (byte) character);
+    }
+
 }

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=486648&r1=486647&r2=486648
==============================================================================
--- 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 05:40:39 2006
@@ -41,9 +41,11 @@
     public static final char AMQP_UNSIGNEDINT_PROPERTY_PREFIX = 'I';
     public static final char AMQP_TIMESTAMP_PROPERTY_PREFIX = 'T';
     public static final char AMQP_STRING_PROPERTY_PREFIX = 'S';
+    public static final char AMQP_ASCII_CHARACTER_PROPERTY_PREFIX = 'k';
     public static final char AMQP_ASCII_STRING_PROPERTY_PREFIX = 'c';
     public static final char AMQP_WIDE_STRING_PROPERTY_PREFIX = 'C';
     public static final char AMQP_BINARY_PROPERTY_PREFIX = 'x';
+    public static final char AMQP_NULL_STRING_PROPERTY_PREFIX = 'n';
 
     public static final char BOOLEAN_PROPERTY_PREFIX = 't';
     public static final char BYTE_PROPERTY_PREFIX = 'b';
@@ -52,10 +54,10 @@
     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 NULL_STRING_PROPERTY_PREFIX = AMQP_NULL_STRING_PROPERTY_PREFIX;
     public static final char STRING_PROPERTY_PREFIX = AMQP_STRING_PROPERTY_PREFIX;
-    public static final char CHAR_PROPERTY_PREFIX = AMQP_ASCII_STRING_PROPERTY_PREFIX;
+    public static final char CHAR_PROPERTY_PREFIX = AMQP_ASCII_CHARACTER_PROPERTY_PREFIX;
     public static final char BYTES_PROPERTY_PREFIX = AMQP_BINARY_PROPERTY_PREFIX;
 
     //Our custom prefix for encoding across the wire
@@ -1180,26 +1182,26 @@
                     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:
                         // TODO: look at using proper charset encoder
                         buffer.put((byte) STRING_PROPERTY_PREFIX);
                         EncodingUtils.writeLongStringBytes(buffer, (String) value);
                         break;
-
-                        //case AMQP_ASCII_STRING_PROPERTY_PREFIX:
+                    case AMQP_ASCII_STRING_PROPERTY_PREFIX:
+                    case STRING_PROPERTY_PREFIX: // AMQP_STRING_PROPERTY_PREFIX:
+                        //This is a simple ASCII string
+                        buffer.put((byte) STRING_PROPERTY_PREFIX);
+                        EncodingUtils.writeLongStringBytes(buffer, (String) value);
+                        break;
                     case CHAR_PROPERTY_PREFIX:
-                        // TODO: look at using proper charset encoder
                         buffer.put((byte) CHAR_PROPERTY_PREFIX);
-                        EncodingUtils.writeShortStringBytes(buffer, "" + (Character) value);
+                        EncodingUtils.writeChar(buffer, (Character) value);
                         break;
-
                     case BYTES_PROPERTY_PREFIX:
                         buffer.put((byte) BYTES_PROPERTY_PREFIX);
                         EncodingUtils.writeBytes(buffer, (byte[]) value);
                         break;
-
                     case XML_PROPERTY_PREFIX:
                         // Encode as XML
                         buffer.put((byte) XML_PROPERTY_PREFIX);
@@ -1271,16 +1273,15 @@
 
                     // TODO: use proper charset decoder
                 case AMQP_WIDE_STRING_PROPERTY_PREFIX:
-                    //case AMQP_STRING_PROPERTY_PREFIX:
-                case STRING_PROPERTY_PREFIX:
+                case AMQP_ASCII_STRING_PROPERTY_PREFIX:
+                case STRING_PROPERTY_PREFIX:  // AMQP_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);
+                    value = EncodingUtils.readChar((buffer));
                     break;
                 case BYTES_PROPERTY_PREFIX:
                     value = EncodingUtils.readBytes(buffer);
@@ -1356,16 +1357,15 @@
                 encodingSize += EncodingUtils.encodedDoubleLength();
                 break;
             case AMQP_WIDE_STRING_PROPERTY_PREFIX:
-                //case AMQP_STRING_PROPERTY_PREFIX:
-            case STRING_PROPERTY_PREFIX:
+            case AMQP_ASCII_STRING_PROPERTY_PREFIX:
+            case STRING_PROPERTY_PREFIX: //AMQP_STRING_PROPERTY_PREFIX:
                 encodingSize += EncodingUtils.encodedLongStringLength((String) value);
                 break;
             case NULL_STRING_PROPERTY_PREFIX:
-                // There is no need for additiona size beyond the prefix 
+                // There is no need for additional size beyond the prefix
                 break;
-                //case AMQP_ASCII_STRING_PROPERTY_PREFIX:
             case CHAR_PROPERTY_PREFIX:
-                encodingSize += EncodingUtils.encodedShortStringLength("" + (Character) value);
+                encodingSize += EncodingUtils.encodedCharLength();
                 break;
             case BYTES_PROPERTY_PREFIX:
                 encodingSize += 1 + ((byte[]) value).length;
@@ -1374,7 +1374,7 @@
                 encodingSize += EncodingUtils.encodedLongStringLength(valueAsXML(name, value));
                 break;
             default:
-                //encodingSize = 1 + EncodingUtils.encodedLongStringLength(String.valueOf(value));
+                //encodingSize = 1 + EncodingUtils.encodedLongstrLength(String.valueOf(value));
                 //  We are using XML String encoding
                 throw new IllegalArgumentException("Unsupported type in field table: " + value.getClass());
         }

Modified: incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java?view=diff&rev=486648&r1=486647&r2=486648
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java Wed Dec 13 05:40:39 2006
@@ -26,8 +26,6 @@
 import java.util.Enumeration;
 
 import org.apache.mina.common.ByteBuffer;
-import org.apache.mina.common.ByteBufferProxy;
-import org.apache.mina.common.support.BaseByteBuffer;
 
 public class PropertyFieldTableTest extends TestCase
 {
@@ -402,7 +400,7 @@
         Assert.assertEquals(size, result.getEncodedSize());
 
         result.setChar("char", (char) 'c');
-        size += 1 + EncodingUtils.encodedShortStringLength("char") + EncodingUtils.encodedCharacterLength();
+        size += 1 + EncodingUtils.encodedShortStringLength("char") + EncodingUtils.encodedCharLength();
         Assert.assertEquals(size, result.getEncodedSize());
 
         result.setDouble("double", (double) Double.MAX_VALUE);
@@ -444,7 +442,7 @@
         Assert.assertEquals(size, result.getEncodedSize());
 
         result.setObject("object-char", 'c');
-        size += 1 + EncodingUtils.encodedShortStringLength("object-char") + EncodingUtils.encodedCharacterLength();
+        size += 1 + EncodingUtils.encodedShortStringLength("object-char") + EncodingUtils.encodedCharLength();
         Assert.assertEquals(size, result.getEncodedSize());
 
         result.setObject("object-double", Double.MAX_VALUE);