summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java4
-rw-r--r--java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java78
2 files changed, 26 insertions, 56 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java
index 882d54fd03..8efe1e17f4 100644
--- a/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java
+++ b/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java
@@ -263,6 +263,10 @@ public class JMSStreamMessage extends AbstractBytesMessage implements StreamMess
{
int count = (_byteArrayRemaining >= bytes.length ? bytes.length : _byteArrayRemaining);
_byteArrayRemaining -= count;
+ if (_byteArrayRemaining == 0)
+ {
+ _byteArrayRemaining = -1;
+ }
if (count == 0)
{
return 0;
diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java
index 83e555192c..af7856a78a 100644
--- a/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java
+++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/message/StreamMessageTest.java
@@ -215,12 +215,32 @@ public class StreamMessageTest extends TestCase
{
JMSStreamMessage bm = TestMessageHelper.newJMSStreamMessage();
byte[] bytes = {2, 3};
- bm.writeBytes(bytes);
+ bm.writeBytes(bytes);
+ bm.writeBytes(null);
+ bm.writeBytes(new byte[]{});
bm.reset();
int len = bm.readBytes(bytes);
assertEquals(2, len);
len = bm.readBytes(bytes);
assertEquals(-1, len);
+ len = bm.readBytes(bytes);
+ assertEquals(0, len);
+ }
+
+ public void testReadMultipleByteArrays() throws Exception
+ {
+ JMSStreamMessage bm = TestMessageHelper.newJMSStreamMessage();
+ byte[] bytes = {2, 3, 4};
+ bm.writeBytes(bytes);
+ bm.writeBytes(bytes);
+ bm.reset();
+ byte[] result = new byte[2];
+ int len = bm.readBytes(result);
+ assertEquals(2, len);
+ len = bm.readBytes(result);
+ assertEquals(1, len);
+ len = bm.readBytes(result);
+ assertEquals(2, len);
}
public void testEOFByte() throws Exception
@@ -398,61 +418,7 @@ public class StreamMessageTest extends TestCase
fail("expected MessageEOFException, got " + e);
}
}
-
- /**
- * Tests that the readBytes() method populates the passed in array
- * correctly
- * @throws Exception
- */
- public void testReadBytes() throws Exception
- {
- JMSStreamMessage bm = TestMessageHelper.newJMSStreamMessage();
- bm.writeByte((byte)3);
- bm.writeByte((byte)4);
- bm.reset();
- byte[] result = new byte[2];
- int count = bm.readBytes(result);
- assertEquals((byte)3, result[0]);
- assertEquals((byte)4, result[1]);
- assertEquals(2, count);
- }
-
- public void testReadBytesEOF() throws Exception
- {
- JMSStreamMessage bm = TestMessageHelper.newJMSStreamMessage();
- bm.writeByte((byte)3);
- bm.writeByte((byte)4);
- bm.reset();
- byte[] result = new byte[2];
- bm.readBytes(result);
- int count = bm.readBytes(result);
- assertEquals(-1, count);
- }
-
- public void testReadBytesWithLargerArray() throws Exception
- {
- JMSStreamMessage bm = TestMessageHelper.newJMSStreamMessage();
- bm.writeByte((byte)3);
- bm.writeByte((byte)4);
- bm.reset();
- byte[] result = new byte[3];
- int count = bm.readBytes(result);
- assertEquals(2, count);
- assertEquals((byte)3, result[0]);
- assertEquals((byte)4, result[1]);
- assertEquals((byte)0, result[2]);
- }
-
- public void testToBodyString() throws Exception
- {
- JMSStreamMessage bm = TestMessageHelper.newJMSStreamMessage();
- final String testText = "This is a test";
- bm.writeString(testText);
- bm.reset();
- String result = bm.toBodyString();
- assertEquals(testText, result);
- }
-
+
public void testToBodyStringWithNull() throws Exception
{
JMSStreamMessage bm = TestMessageHelper.newJMSStreamMessage();