diff options
4 files changed, 15 insertions, 2 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java index c9b683cc36..62699331e9 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java @@ -36,7 +36,16 @@ public class AMQDataBlockDecoder public AMQDataBlockDecoder() { - _supportedBodies.put(new Byte(AMQMethodBody.TYPE), AMQMethodBodyFactory.getInstance()); + _supportedBodies.put(new Byte(AMQRequestBody.TYPE), new BodyFactory() { + public AMQBody createBody(ByteBuffer in) { + return new AMQRequestBody(); + } + }); + _supportedBodies.put(new Byte(AMQResponseBody.TYPE), new BodyFactory() { + public AMQBody createBody(ByteBuffer in) { + return new AMQResponseBody(); + } + }); _supportedBodies.put(new Byte(HeartbeatBody.TYPE), new HeartbeatBodyFactory()); } diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQMethodBodyFactory.java b/java/common/src/main/java/org/apache/qpid/framing/AMQMethodBodyFactory.java index 8c17befa36..3dcbe926fe 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQMethodBodyFactory.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQMethodBodyFactory.java @@ -39,7 +39,7 @@ public class AMQMethodBodyFactory implements BodyFactory _log.debug("Creating method body factory"); } - public AMQBody createBody(ByteBuffer in) throws AMQFrameDecodingException + public AMQMethodBody createBody(ByteBuffer in) throws AMQFrameDecodingException { // AMQP version change: MethodBodyDecoderRegistry is obsolete, since all the XML // segments generated together are now handled by MainRegistry. The Cluster class, diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQRequestBody.java b/java/common/src/main/java/org/apache/qpid/framing/AMQRequestBody.java index 623b2356ae..828941ed03 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQRequestBody.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQRequestBody.java @@ -73,6 +73,8 @@ public class AMQRequestBody extends AMQBody requestId = EncodingUtils.readLong(buffer); responseMark = EncodingUtils.readLong(buffer); int reserved = EncodingUtils.readInteger(buffer); // reserved, throw away + AMQMethodBodyFactory factory = AMQMethodBodyFactory.getInstance(); + methodPayload = factory.createBody(buffer); methodPayload.populateFromBuffer(buffer, size - 8 - 8 - 4); } diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQResponseBody.java b/java/common/src/main/java/org/apache/qpid/framing/AMQResponseBody.java index 2b0fc97b1b..412b65cc01 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQResponseBody.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQResponseBody.java @@ -75,6 +75,8 @@ public class AMQResponseBody extends AMQBody requestId = EncodingUtils.readLong(buffer); // XXX batchOffset = EncodingUtils.readInteger(buffer); + AMQMethodBodyFactory factory = AMQMethodBodyFactory.getInstance(); + methodPayload = factory.createBody(buffer); methodPayload.populateFromBuffer(buffer, size - 8 - 8 - 4); } |
