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]