You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2014/03/12 14:51:51 UTC

svn commit: r1576740 - in /qpid/jms/trunk/src: main/java/org/apache/qpid/jms/impl/BytesMessageImpl.java test/java/org/apache/qpid/jms/impl/BytesMessageImplTest.java

Author: robbie
Date: Wed Mar 12 13:51:51 2014
New Revision: 1576740

URL: http://svn.apache.org/r1576740
Log:
QPIDJMS-15: ensure that getBodyLength() handles changes from calling reset on a message after writing to it

Modified:
    qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/BytesMessageImpl.java
    qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/BytesMessageImplTest.java

Modified: qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/BytesMessageImpl.java
URL: http://svn.apache.org/viewvc/qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/BytesMessageImpl.java?rev=1576740&r1=1576739&r2=1576740&view=diff
==============================================================================
--- qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/BytesMessageImpl.java (original)
+++ qpid/jms/trunk/src/main/java/org/apache/qpid/jms/impl/BytesMessageImpl.java Wed Mar 12 13:51:51 2014
@@ -378,8 +378,9 @@ public class BytesMessageImpl extends Me
         //a new message or we cleared the body of a received message
         if(_dataOutputStream != null)
         {
-            //create new input stream based on the current output
+            //update the underlying message and create new input stream based on the current output
             byte[] data = _byteOutputStream.toByteArray();
+            getUnderlyingAmqpMessage(false).setBytes(data);
             _dataInputStream = createNewDataInputStream(new ByteArrayInputStream(data));
 
             //clear the current output streams

Modified: qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/BytesMessageImplTest.java
URL: http://svn.apache.org/viewvc/qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/BytesMessageImplTest.java?rev=1576740&r1=1576739&r2=1576740&view=diff
==============================================================================
--- qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/BytesMessageImplTest.java (original)
+++ qpid/jms/trunk/src/test/java/org/apache/qpid/jms/impl/BytesMessageImplTest.java Wed Mar 12 13:51:51 2014
@@ -78,6 +78,22 @@ public class BytesMessageImplTest extend
     }
 
     /**
+     * Test that calling {@link BytesMessage#getBodyLength()} on a new message which has been
+     * populated and {@link BytesMessage#reset()} causes the length to be reported correctly.
+     */
+    @Test
+    public void testResetOnNewlyPopulatedBytesMessageUpdatesBodyLength() throws Exception
+    {
+        byte[] bytes = "newResetTestBytes".getBytes();
+
+        BytesMessageImpl bytesMessageImpl = new BytesMessageImpl(_mockSessionImpl,_mockConnectionImpl);
+
+        bytesMessageImpl.writeBytes(bytes);
+        bytesMessageImpl.reset();
+        assertEquals("Message reports unexpected length", bytes.length, bytesMessageImpl.getBodyLength());
+    }
+
+    /**
      * Test that attempting to call {@link BytesMessage#getBodyLength()} on a new message causes a
      * {@link MessageNotReadableException} to be thrown due to being write-only.
      */
@@ -201,7 +217,7 @@ public class BytesMessageImplTest extend
     }
 
     /**
-     * Test that calling calling {@link BytesMessage#clearBody()} causes a received
+     * Test that calling {@link BytesMessage#clearBody()} causes a received
      * message to become writable
      */
     @Test
@@ -223,7 +239,7 @@ public class BytesMessageImplTest extend
     }
 
     /**
-     * Test that calling calling {@link BytesMessage#clearBody()} of a received message
+     * Test that calling {@link BytesMessage#clearBody()} of a received message
      * causes the body of the underlying {@link AmqpBytesMessage} to be emptied.
      */
     @Test
@@ -283,7 +299,7 @@ public class BytesMessageImplTest extend
     }
 
     /**
-     * Test that calling calling {@link BytesMessage#reset()} causes a write-only
+     * Test that calling {@link BytesMessage#reset()} causes a write-only
      * message to become read-only
      */
     @Test
@@ -312,7 +328,7 @@ public class BytesMessageImplTest extend
     }
 
     /**
-     * Test that calling calling {@link BytesMessage#reset()} on a new message which has been
+     * Test that calling {@link BytesMessage#reset()} on a new message which has been
      * populated causes the marker to be reset and makes the message read-only
      */
     @Test



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org