diff options
| author | Keith Wall <kwall@apache.org> | 2012-01-07 09:44:58 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2012-01-07 09:44:58 +0000 |
| commit | c44ae41105668027766723033c6f5325366524f1 (patch) | |
| tree | b966e092913dcaf2e53199608a5020a240ec7878 /qpid/java/client | |
| parent | a6bf49a9c8b50a48afbee851edb5fe51e573af03 (diff) | |
| download | qpid-python-c44ae41105668027766723033c6f5325366524f1.tar.gz | |
QPID-3715: Fix the receiving of an empty ObjectMessage (without a body)
Applied patch from Oleksandr Rudyy<orudyy@gmail.com>
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1228583 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/client')
| -rw-r--r-- | qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java | 52 |
1 files changed, 13 insertions, 39 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java b/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java index c981c951c3..7f733b9644 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java @@ -29,6 +29,7 @@ import javax.jms.ObjectMessage; import org.apache.qpid.AMQException; import org.apache.qpid.client.util.ClassLoadingAwareObjectInputStream; +import org.apache.qpid.util.ByteBufferInputStream; public class JMSObjectMessage extends AbstractJMSMessage implements ObjectMessage { @@ -62,26 +63,7 @@ public class JMSObjectMessage extends AbstractJMSMessage implements ObjectMessag try { - ClassLoadingAwareObjectInputStream in = new ClassLoadingAwareObjectInputStream(new InputStream() - { - - - @Override - public int read() throws IOException - { - return data.get(); - } - - @Override - public int read(byte[] b, int off, int len) throws IOException - { - len = data.remaining() < len ? data.remaining() : len; - data.get(b, off, len); - return len; - } - }); - - _readData = (Serializable) in.readObject(); + _readData = read(data); } catch (IOException e) { @@ -93,7 +75,6 @@ public class JMSObjectMessage extends AbstractJMSMessage implements ObjectMessag } } - public void clearBody() throws JMSException { super.clearBody(); @@ -189,24 +170,7 @@ public class JMSObjectMessage extends AbstractJMSMessage implements ObjectMessag final ByteBuffer data = _data.duplicate(); try { - ClassLoadingAwareObjectInputStream in = new ClassLoadingAwareObjectInputStream(new InputStream() - { - @Override - public int read() throws IOException - { - return data.get(); - } - - @Override - public int read(byte[] b, int off, int len) throws IOException - { - len = data.remaining() < len ? data.remaining() : len; - data.get(b, off, len); - return len; - } - }); - - return (Serializable) in.readObject(); + return read(data); } catch (ClassNotFoundException e) { @@ -224,4 +188,14 @@ public class JMSObjectMessage extends AbstractJMSMessage implements ObjectMessag } + private Serializable read(final ByteBuffer data) throws IOException, ClassNotFoundException + { + Serializable result = null; + if (data != null && data.hasRemaining()) + { + ClassLoadingAwareObjectInputStream in = new ClassLoadingAwareObjectInputStream(new ByteBufferInputStream(data)); + result = (Serializable) in.readObject(); + } + return result; + } } |
