Author: rgodfrey
Date: Tue Oct  2 14:50:03 2012
New Revision: 1392942

URL: http://svn.apache.org/viewvc?rev=1392942&view=rev
Log:
PROTON-45 : Fix parsing of End/Close/Detach with error

Added:
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/Data.java
Modified:
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Close.java
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Detach.java
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/End.java
    
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Error.java

Added: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/Data.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/Data.java?rev=1392942&view=auto
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/Data.java 
(added)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/Data.java 
Tue Oct  2 14:50:03 2012
@@ -0,0 +1,101 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.proton.codec;
+
+import org.apache.qpid.proton.type.Binary;
+import org.apache.qpid.proton.type.Symbol;
+import org.apache.qpid.proton.type.UnsignedByte;
+import org.apache.qpid.proton.type.UnsignedInteger;
+import org.apache.qpid.proton.type.UnsignedLong;
+import org.apache.qpid.proton.type.UnsignedShort;
+
+public interface Data
+{
+    enum Type
+    {
+        NULL,
+        BOOL,
+        UBYTE,
+        BYTE,
+        USHORT,
+        SHORT,
+        UINT,
+        INT,
+        ULONG,
+        LONG,
+        FLOAT,
+        DOUBLE,
+        BINARY,
+        STRING,
+        SYMBOL,
+        DESCRIPTOR,
+        ARRAY,
+        LIST,
+        MAP,
+        TYPE
+    }
+    
+    Type NULL = Type.NULL;
+    Type BOOL = Type.BOOL;
+    Type UBYTE = Type.UBYTE;
+    Type BYTE = Type.BYTE;
+    Type USHORT = Type.USHORT;
+    Type SHORT = Type.SHORT;
+    Type UINT = Type.UINT;
+    Type INT = Type.INT;
+    Type ULONG = Type.ULONG;
+    Type LONG = Type.LONG;
+    Type FLOAT = Type.FLOAT;
+    Type DOUBLE = Type.DOUBLE;
+    Type BINARY = Type.BINARY;
+    Type STRING = Type.STRING;
+    Type SYMBOL = Type.SYMBOL;
+    Type DESCRIPTOR = Type.DESCRIPTOR;
+    Type ARRAY = Type.ARRAY;
+    Type LIST = Type.LIST;
+    Type MAP = Type.MAP;
+    Type TYPE = Type.TYPE;
+
+    void putBool(boolean b);
+    void putByte(byte b);
+    void putUbyte(UnsignedByte b);
+    void putUbyte(short s);
+    void putShort(short s);
+    void putUshort(UnsignedShort s);
+    void putUshort(int i);
+    void putInt(int i);
+    void putUint(UnsignedInteger i);
+    void putUint(long l);
+    void putLong(long l);
+    void putUlong(UnsignedLong l);
+    void putUlong(long l);
+    void putFloat(float f);
+    void putDouble(double d);
+    void putBinary(Binary b);
+    void putBinary(byte[] b);
+    void putString(String s);
+    void putSymbol(Symbol s);
+    void putSymbol(String s);
+    void putDescriptor();
+    void putArray();
+    void putList();
+    void putType();
+}

Modified: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java?rev=1392942&r1=1392941&r2=1392942&view=diff
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
 (original)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/codec/EncoderImpl.java
 Tue Oct  2 14:50:03 2012
@@ -20,8 +20,10 @@
  */
 package org.apache.qpid.proton.codec;
 
+import java.awt.*;
 import java.nio.ByteBuffer;
 import java.util.*;
+import java.util.List;
 import org.apache.qpid.proton.type.*;
 
 public final class EncoderImpl implements ByteBufferEncoder
@@ -781,4 +783,27 @@ public final class EncoderImpl implement
     }
 
 
+    public static void main(String[] args)
+    {
+        String HEX = 
"00800000000000000018c043010080000000000000001dc03602a31d616d71703a636f6e6e656374696f6e3a6672616d696e672d6572726f72a1146a6176612e696f2e454f46457863657074696f6e";
+        byte[] bytes = new byte[HEX.length()/2];
+        for(int i = 0; i < bytes.length; i++)
+        {
+            char d = HEX.charAt(2 * i);
+            byte m = (byte) (d >= (byte)'a' ? 10+d-(byte)'a' : d-(byte)'0');
+            d = HEX.charAt((2 * i)+1);
+            byte n = (byte) (d >= (byte)'a' ? 10+d-(byte)'a' : d-(byte)'0');
+            bytes[i] = (byte) (((m << 4) & 0xf0) | (n & 0x0f));
+        }
+            DecoderImpl decoder = new DecoderImpl();
+            EncoderImpl encoder = new EncoderImpl(decoder);
+            AMQPDefinedTypes.registerAllTypes(decoder);
+
+            decoder.setByteBuffer(ByteBuffer.wrap(bytes));
+            System.err.println(decoder.readObject());
+
+
+
+    }
+
 }

Modified: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Close.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Close.java?rev=1392942&r1=1392941&r2=1392942&view=diff
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Close.java
 (original)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Close.java
 Tue Oct  2 14:50:03 2012
@@ -42,14 +42,14 @@ public class Close
     private static final UnsignedLong DESCRIPTOR = 
UnsignedLong.valueOf(0x0000000000000018L);
     private final CloseWrapper _wrapper = new CloseWrapper();
     
-    private List _error;
+    private Error _error;
 
-    public List getError()
+    public Error getError()
     {
         return _error;
     }
 
-    public void setError(List error)
+    public void setError(Error error)
     {
         _error = error;
     }
@@ -115,7 +115,7 @@ public class Close
             {
 
                 case 0:
-                    o.setError( (List) l.get( 0 ) );
+                    o.setError( (Error) l.get( 0 ) );
             }
 
 

Modified: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Detach.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Detach.java?rev=1392942&r1=1392941&r2=1392942&view=diff
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Detach.java
 (original)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Detach.java
 Tue Oct  2 14:50:03 2012
@@ -45,7 +45,7 @@ public class Detach
     
     private UnsignedInteger _handle;
     private boolean _closed;
-    private List _error;
+    private Error _error;
 
     public UnsignedInteger getHandle()
     {
@@ -72,12 +72,12 @@ public class Detach
         _closed = closed;
     }
 
-    public List getError()
+    public Error getError()
     {
         return _error;
     }
 
-    public void setError(List error)
+    public void setError(Error error)
     {
         _error = error;
     }
@@ -153,7 +153,7 @@ public class Detach
             {
 
                 case 0:
-                    o.setError( (List) l.get( 2 ) );
+                    o.setError( (Error) l.get( 2 ) );
                 case 1:
                     Boolean closed = (Boolean) l.get(1);
                     o.setClosed(closed == null ? false : closed);

Modified: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/End.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/End.java?rev=1392942&r1=1392941&r2=1392942&view=diff
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/End.java
 (original)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/End.java
 Tue Oct  2 14:50:03 2012
@@ -42,14 +42,14 @@ public class End
     private static final UnsignedLong DESCRIPTOR = 
UnsignedLong.valueOf(0x0000000000000017L);
     private final EndWrapper _wrapper = new EndWrapper();
     
-    private List _error;
+    private Error _error;
 
-    public List getError()
+    public Error getError()
     {
         return _error;
     }
 
-    public void setError(List error)
+    public void setError(Error error)
     {
         _error = error;
     }
@@ -115,7 +115,7 @@ public class End
             {
 
                 case 0:
-                    o.setError( (List) l.get( 0 ) );
+                    o.setError( (Error) l.get( 0 ) );
             }
 
 

Modified: 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Error.java
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Error.java?rev=1392942&r1=1392941&r2=1392942&view=diff
==============================================================================
--- 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Error.java
 (original)
+++ 
qpid/proton/trunk/proton-j/src/main/java/org/apache/qpid/proton/type/transport/Error.java
 Tue Oct  2 14:50:03 2012
@@ -180,5 +180,15 @@ public class Error
             decoder.register(descriptor, constructor);
         }
     }
+
+    @Override
+    public String toString()
+    {
+        return "Error{" +
+               "_condition=" + _condition +
+               ", _description='" + _description + '\'' +
+               ", _info=" + _info +
+               '}';
+    }
 }
   
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to