From 00e3fdfcfdbc0ca42b7165d3a4bba2bcb4b63480 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Thu, 18 Jan 2007 08:41:51 +0000 Subject: * uses LONG_STRING in place of WIDE_STRING for properties set through FieldTable.setString() as these appear to all be equivalent (apart from the type code) * uses setString instead of setAsciiString in creation of the connection.start-ok frames client properties * uses 4 bytes for the size of the BINARY value type as per the spec posted on the wiki git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@497352 13f79535-47bb-0310-9956-ffa450edef68 --- .../qpid/client/handler/ConnectionStartMethodHandler.java | 8 ++++---- .../common/src/main/java/org/apache/qpid/framing/AMQType.java | 6 +++--- .../src/main/java/org/apache/qpid/framing/EncodingUtils.java | 2 +- .../src/main/java/org/apache/qpid/framing/FieldTable.java | 11 +---------- .../java/org/apache/qpid/framing/PropertyFieldTableTest.java | 7 +++---- 5 files changed, 12 insertions(+), 22 deletions(-) (limited to 'java') diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java index 14fab06438..d7fc86a5b0 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java @@ -118,10 +118,10 @@ public class ConnectionStartMethodHandler implements StateAwareMethodListener stateManager.changeState(AMQState.CONNECTION_NOT_TUNED); FieldTable clientProperties = FieldTableFactory.newFieldTable(); - clientProperties.setAsciiString(new AMQShortString(ClientProperties.instance.toString()), protocolSession.getClientID()); - clientProperties.setAsciiString(new AMQShortString(ClientProperties.product.toString()), QpidProperties.getProductName()); - clientProperties.setAsciiString(new AMQShortString(ClientProperties.version.toString()), QpidProperties.getReleaseVersion()); - clientProperties.setAsciiString(new AMQShortString(ClientProperties.platform.toString()), getFullSystemInfo()); + clientProperties.setString(new AMQShortString(ClientProperties.instance.toString()), protocolSession.getClientID()); + clientProperties.setString(new AMQShortString(ClientProperties.product.toString()), QpidProperties.getProductName()); + clientProperties.setString(new AMQShortString(ClientProperties.version.toString()), QpidProperties.getReleaseVersion()); + clientProperties.setString(new AMQShortString(ClientProperties.platform.toString()), getFullSystemInfo()); // AMQP version change: Hardwire the version to 0-8 (major=8, minor=0) // TODO: Connect this to the session version obtained from ProtocolInitiation for this session. // Be aware of possible changes to parameter order as versions change. diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQType.java b/java/common/src/main/java/org/apache/qpid/framing/AMQType.java index 23c1929205..5175eace1e 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQType.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQType.java @@ -230,7 +230,7 @@ public enum AMQType { public int getEncodingSize(Object value) { - return 1 + (value == null ? 0 : ((byte[]) value).length); + return EncodingUtils.encodedLongstrLength((byte[]) value); } @@ -250,12 +250,12 @@ public enum AMQType public void writeValueImpl(Object value, ByteBuffer buffer) { - EncodingUtils.writeBytes(buffer, (byte[]) value); + EncodingUtils.writeLongstr(buffer, (byte[]) value); } public Object readValueFromBuffer(ByteBuffer buffer) { - return EncodingUtils.readBytes(buffer); + return EncodingUtils.readLongstr(buffer); } }, diff --git a/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java b/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java index c4d568ba88..339f83588d 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java +++ b/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java @@ -747,7 +747,7 @@ public class EncodingUtils } } - public static byte[] readLongstr(ByteBuffer buffer) throws AMQFrameDecodingException + public static byte[] readLongstr(ByteBuffer buffer) { long length = buffer.getUnsignedInt(); if (length == 0) diff --git a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java index 147601b9f9..1a72910536 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java +++ b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java @@ -448,7 +448,6 @@ public class FieldTable { return setProperty(string, AMQType.ASCII_STRING.asTypedValue(value)); } - } public Object setString(AMQShortString string, String value) @@ -460,15 +459,7 @@ public class FieldTable } else { - //FIXME: determine string encoding and set either WIDE or ASCII string -// if () - { - return setProperty(string, AMQType.WIDE_STRING.asTypedValue(value)); - } -// else -// { -// return setProperty(string, AMQType.ASCII_STRING.asTypedValue(value)); -// } + return setProperty(string, AMQType.LONG_STRING.asTypedValue(value)); } } diff --git a/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java b/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java index e0692594c7..6160dc1843 100644 --- a/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java +++ b/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java @@ -528,8 +528,7 @@ public class PropertyFieldTableTest extends TestCase table.setString("string", "hello"); table.setString("null-string", null); - - final ByteBuffer buffer = ByteBuffer.allocate((int) table.getEncodedSize()); // FIXME XXX: Is cast a problem? + final ByteBuffer buffer = ByteBuffer.allocate((int) table.getEncodedSize() + 4); // FIXME XXX: Is cast a problem? table.writeToBuffer(buffer); @@ -579,7 +578,7 @@ public class PropertyFieldTableTest extends TestCase byte[] _bytes = {99, 98, 97, 96, 95}; result.setBytes("bytes", _bytes); - size += 1 + EncodingUtils.encodedShortStringLength("bytes") + 1 + EncodingUtils.encodedByteLength() * _bytes.length; + size += 1 + EncodingUtils.encodedShortStringLength("bytes") + 4 + _bytes.length; Assert.assertEquals(size, result.getEncodedSize()); result.setChar("char", (char) 'c'); @@ -621,7 +620,7 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(size, result.getEncodedSize()); result.setObject("object-bytes", _bytes); - size += 1 + EncodingUtils.encodedShortStringLength("object-bytes") + 1 + EncodingUtils.encodedByteLength() * _bytes.length; + size += 1 + EncodingUtils.encodedShortStringLength("object-bytes") + 4 + _bytes.length; Assert.assertEquals(size, result.getEncodedSize()); result.setObject("object-char", 'c'); -- cgit v1.2.1