You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2007/07/25 18:44:35 UTC

svn commit: r559520 - in /incubator/qpid/trunk/qpid/java/common: ./ src/main/java/org/apache/qpidity/

Author: rhs
Date: Wed Jul 25 09:44:32 2007
New Revision: 559520

URL: http://svn.apache.org/viewvc?view=rev&rev=559520
Log:
fixed Encoder/Decoder to do the property type conversion for unsigned types

Modified:
    incubator/qpid/trunk/qpid/java/common/generate
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBDecoder.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBEncoder.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Decoder.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Encoder.java
    incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SizeEncoder.java

Modified: incubator/qpid/trunk/qpid/java/common/generate
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/generate?view=diff&rev=559520&r1=559519&r2=559520
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/generate (original)
+++ incubator/qpid/trunk/qpid/java/common/generate Wed Jul 25 09:44:32 2007
@@ -50,16 +50,15 @@
   "longstr": "String",
   "shortstr": "String",
   "longlong": "long",
-  "long": "int",
-  "short": "short",
-  "octet": "byte",
+  "long": "long",
+  "short": "int",
+  "octet": "short",
   "bit": "boolean",
   "table": "Map<String,?>",
   "timestamp": "long",
   "content": "String",
   "uuid": "UUID",
-  "rfc1982-long-set": "Range<Integer>[]",
-  "rfc1982-long": "int"
+  "rfc1982-long-set": "Range<Long>[]"
   }
 
 def camel(offset, *args):

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBDecoder.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBDecoder.java?view=diff&rev=559520&r1=559519&r2=559520
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBDecoder.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBDecoder.java Wed Jul 25 09:44:32 2007
@@ -34,9 +34,25 @@
 class BBDecoder implements Decoder
 {
 
+    private static final short unsigned(byte b)
+    {
+        return (short) ((0x100 + b) & 0xFF);
+    }
+
+    private static final int unsigned(short s)
+    {
+        return (0x10000 + s) & 0xFFFF;
+    }
+
+    private static final long unsigned(int i)
+    {
+        return (0x1000000000L + i) & 0xFFFFFFFFL;
+    }
+
     private final ByteBuffer in;
 
-    public BBDecoder(ByteBuffer in) {
+    public BBDecoder(ByteBuffer in)
+    {
         this.in = in;
     }
 
@@ -46,19 +62,19 @@
         return false;
     }
 
-    public byte readOctet()
+    public short readOctet()
     {
-        throw new Error("TODO");
+        return unsigned(in.get());
     }
 
-    public short readShort()
+    public int readShort()
     {
-        return in.getShort();
+        return unsigned(in.getShort());
     }
 
-    public int readLong()
+    public long readLong()
     {
-        return in.getInt();
+        return unsigned(in.getInt());
     }
 
     public long readLonglong()
@@ -74,7 +90,7 @@
 
     public String readShortstr()
     {
-        byte size = in.get();
+        short size = readOctet();
         byte[] bytes = new byte[size];
         in.get(bytes);
         return new String(bytes);
@@ -82,7 +98,11 @@
 
     public String readLongstr()
     {
-        throw new Error("TODO");
+        long size = readLong();
+        assert size <= Integer.MAX_VALUE;
+        byte[] bytes = new byte[(int) size];
+        in.get(bytes);
+        return new String(bytes);
     }
 
     public Map<String,?> readTable()
@@ -91,7 +111,7 @@
         return null;
     }
 
-    public Range<Integer>[] readRfc1982LongSet()
+    public Range<Long>[] readRfc1982LongSet()
     {
         throw new Error("TODO");
     }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBEncoder.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBEncoder.java?view=diff&rev=559520&r1=559519&r2=559520
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBEncoder.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/BBEncoder.java Wed Jul 25 09:44:32 2007
@@ -45,19 +45,22 @@
         //throw new Error("TODO");
     }
 
-    public void writeOctet(byte b)
+    public void writeOctet(short b)
     {
-        out.put(b);
+        assert b < 0x100;
+        out.put((byte) b);
     }
 
-    public void writeShort(short s)
+    public void writeShort(int s)
     {
-        out.putShort(s);
+        assert s < 0x10000;
+        out.putShort((short) s);
     }
 
-    public void writeLong(int i)
+    public void writeLong(long i)
     {
-        out.putInt(i);
+        assert i < 0x100000000L;
+        out.putInt((int) i);
     }
 
     public void writeLonglong(long l)
@@ -77,13 +80,14 @@
         if (s.length() > 255) {
             throw new IllegalArgumentException(s);
         }
-        writeOctet((byte) s.length());
+        writeOctet((short) s.length());
         out.put(s.getBytes());
     }
 
     public void writeLongstr(String s)
     {
-        throw new Error("TODO");
+        writeLong(s.length());
+        out.put(s.getBytes());
     }
 
 
@@ -92,7 +96,7 @@
         //throw new Error("TODO");
     }
 
-    public void writeRfc1982LongSet(Range<Integer>[] ranges)
+    public void writeRfc1982LongSet(Range<Long>[] ranges)
     {
         throw new Error("TODO");
     }

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Decoder.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Decoder.java?view=diff&rev=559520&r1=559519&r2=559520
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Decoder.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Decoder.java Wed Jul 25 09:44:32 2007
@@ -33,9 +33,9 @@
 {
 
     boolean readBit();
-    byte readOctet();
-    short readShort();
-    int readLong();
+    short readOctet();
+    int readShort();
+    long readLong();
     long readLonglong();
 
     long readTimestamp();
@@ -44,7 +44,7 @@
     String readLongstr();
 
     Map<String,?> readTable();
-    Range<Integer>[] readRfc1982LongSet();
+    Range<Long>[] readRfc1982LongSet();
     UUID readUuid();
 
     String readContent();

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Encoder.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Encoder.java?view=diff&rev=559520&r1=559519&r2=559520
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Encoder.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/Encoder.java Wed Jul 25 09:44:32 2007
@@ -33,9 +33,9 @@
 {
 
     void writeBit(boolean b);
-    void writeOctet(byte b);
-    void writeShort(short s);
-    void writeLong(int i);
+    void writeOctet(short b);
+    void writeShort(int s);
+    void writeLong(long i);
     void writeLonglong(long l);
 
     void writeTimestamp(long l);
@@ -44,7 +44,7 @@
     void writeLongstr(String s);
 
     void writeTable(Map<String,?> table);
-    void writeRfc1982LongSet(Range<Integer>[] ranges);
+    void writeRfc1982LongSet(Range<Long>[] ranges);
     void writeUuid(UUID uuid);
 
     void writeContent(String c);

Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SizeEncoder.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SizeEncoder.java?view=diff&rev=559520&r1=559519&r2=559520
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SizeEncoder.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpidity/SizeEncoder.java Wed Jul 25 09:44:32 2007
@@ -57,17 +57,17 @@
         //throw new Error("TODO");
     }
 
-    public void writeOctet(byte b)
+    public void writeOctet(short b)
     {
         size += 1;
     }
 
-    public void writeShort(short s)
+    public void writeShort(int s)
     {
         size += 2;
     }
 
-    public void writeLong(int i)
+    public void writeLong(long i)
     {
         size += 4;
     }
@@ -104,7 +104,7 @@
         //throw new Error("TODO");
     }
 
-    public void writeRfc1982LongSet(Range<Integer>[] ranges)
+    public void writeRfc1982LongSet(Range<Long>[] ranges)
     {
         throw new Error("TODO");
     }