summaryrefslogtreecommitdiff
path: root/java/client/src
diff options
context:
space:
mode:
authorKeith Wall <kwall@apache.org>2012-01-07 09:44:58 +0000
committerKeith Wall <kwall@apache.org>2012-01-07 09:44:58 +0000
commitad776f381e2690c58c37c33d23b2389da1b2028e (patch)
tree2f67e684701205686f879b23f8b05b5697141822 /java/client/src
parent2878a86757b081d65790210df3925e2d8c9cf845 (diff)
downloadqpid-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.java52
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;
+ }
}