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 | ad776f381e2690c58c37c33d23b2389da1b2028e (patch) | |
| tree | 2f67e684701205686f879b23f8b05b5697141822 /java/client/src | |
| parent | 2878a86757b081d65790210df3925e2d8c9cf845 (diff) | |
| download | qpid-python-ad776f381e2690c58c37c33d23b2389da1b2028e.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/qpid@1228583 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/client/src')
| -rw-r--r-- | java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java | 52 |
1 files changed, 13 insertions, 39 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java index c981c951c3..7f733b9644 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/JMSObjectMessage.java +++ b/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; + } } |
