Repository: qpid-jms Updated Branches: refs/heads/master e85c74b46 -> a6d04de00
remove testonly setBody method, update tests accordingly Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/1794cbbf Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/1794cbbf Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/1794cbbf Branch: refs/heads/master Commit: 1794cbbf2d767b8ca30ca6f0374b0032f92f7cf5 Parents: e85c74b Author: Robert Gemmell <rob...@apache.org> Authored: Fri Oct 10 10:43:02 2014 +0100 Committer: Robert Gemmell <rob...@apache.org> Committed: Fri Oct 10 10:43:02 2014 +0100 ---------------------------------------------------------------------- .../message/facade/JmsBytesMessageFacade.java | 13 -- .../amqp/message/AmqpJmsBytesMessageFacade.java | 15 --- .../qpid/jms/message/JmsBytesMessageTest.java | 21 +-- .../defaults/JmsDefaultBytesMessageFacade.java | 16 +-- .../message/AmqpJmsBytesMessageFacadeTest.java | 127 +++++++------------ 5 files changed, 60 insertions(+), 132 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/1794cbbf/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java index b5ee153..ecb59c1 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/JmsBytesMessageFacade.java @@ -86,17 +86,4 @@ public interface JmsBytesMessageFacade extends JmsMessageFacade { * @return the number of bytes contained in the body of the message. */ int getBodyLength(); - - /** - * Sets the contents of the message from the given byte[] the given bytes are - * copied into the body of the message. Any previous message body content is - * discarded. - * - * @param content - * the new bytes to store in this message. - * - * @throws JMSException if an error occurs accessing the message body. - */ - void setBody(byte[] content) throws JMSException; - } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/1794cbbf/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java index 4207439..9438413 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacade.java @@ -129,21 +129,6 @@ public class AmqpJmsBytesMessageFacade extends AmqpJmsMessageFacade implements J } @Override - public void setBody(byte[] content) throws JMSException { - if (bytesIn != null || bytesOut != null) { - throw new JMSException("Body cannot be read until message is reset()"); - } - - Data body = EMPTY_DATA; - if (content != null) { - byte[] copy = Arrays.copyOf(content, content.length); - body = new Data(new Binary(copy, 0, copy.length)); - } - - getAmqpMessage().setBody(body); - } - - @Override public InputStream getInputStream() throws JMSException { if (bytesOut != null) { throw new IllegalStateException("Body is being written to, cannot perform a read."); http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/1794cbbf/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java index e672ee3..4420832 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java @@ -82,8 +82,7 @@ public class JmsBytesMessageTest { @Test public void testReadBytesUsingReceivedMessageWithBodyReturnsBytes() throws Exception { byte[] content = "myBytesData".getBytes(); - JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(); - facade.setBody(content); + JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content); JmsBytesMessage bytesMessage = new JmsBytesMessage(facade); bytesMessage.onDispatch(); @@ -107,8 +106,7 @@ public class JmsBytesMessageTest { @Test(expected = MessageNotWriteableException.class) public void testReceivedBytesMessageThrowsMessageNotWriteableExceptionOnWriteBytes() throws Exception { byte[] content = "myBytesData".getBytes(); - JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(); - facade.setBody(content); + JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content); JmsBytesMessage bytesMessage = new JmsBytesMessage(facade); bytesMessage.onDispatch(); @@ -133,8 +131,7 @@ public class JmsBytesMessageTest { @Test public void testClearBodyOnReceivedBytesMessageMakesMessageWritable() throws Exception { byte[] content = "myBytesData".getBytes(); - JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(); - facade.setBody(content); + JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content); JmsBytesMessage bytesMessage = new JmsBytesMessage(facade); bytesMessage.onDispatch(); @@ -150,8 +147,7 @@ public class JmsBytesMessageTest { @Test public void testClearBodyOnReceivedBytesMessageClearsFacadeInputStream() throws Exception { byte[] content = "myBytesData".getBytes(); - JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(); - facade.setBody(content); + JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content); JmsBytesMessage bytesMessage = new JmsBytesMessage(facade); bytesMessage.onDispatch(); @@ -170,8 +166,7 @@ public class JmsBytesMessageTest { @Test public void testGetBodyLengthOnClearedReceivedMessageThrowsMessageNotReadableException() throws Exception { byte[] content = "myBytesData".getBytes(); - JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(); - facade.setBody(content); + JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content); JmsBytesMessage bytesMessage = new JmsBytesMessage(facade); bytesMessage.onDispatch(); @@ -193,8 +188,7 @@ public class JmsBytesMessageTest { @Test public void testResetOnReceivedBytesMessageResetsMarker() throws Exception { byte[] content = "myBytesData".getBytes(); - JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(); - facade.setBody(content); + JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content); JmsBytesMessage bytesMessage = new JmsBytesMessage(facade); bytesMessage.onDispatch(); @@ -220,8 +214,7 @@ public class JmsBytesMessageTest { @Test public void testResetOnNewlyPopulatedBytesMessageResetsMarkerAndMakesReadable() throws Exception { byte[] content = "myBytesData".getBytes(); - JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(); - facade.setBody(content); + JmsDefaultBytesMessageFacade facade = new JmsDefaultBytesMessageFacade(content); JmsBytesMessage bytesMessage = new JmsBytesMessage(facade); http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/1794cbbf/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java index 7783c3f..f647b43 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java @@ -39,6 +39,13 @@ public final class JmsDefaultBytesMessageFacade extends JmsDefaultMessageFacade private ByteBufOutputStream bytesOut; private ByteBufInputStream bytesIn; + public JmsDefaultBytesMessageFacade() { + } + + public JmsDefaultBytesMessageFacade(byte[] content) { + this.content = Unpooled.copiedBuffer(content); + } + @Override public JmsMsgType getMsgType() { return JmsMsgType.BYTES; @@ -135,11 +142,4 @@ public final class JmsDefaultBytesMessageFacade extends JmsDefaultMessageFacade public int getBodyLength() { return content.readableBytes(); } - - @Override - public void setBody(byte[] content) throws JMSException { - if (bytesIn != null || bytesOut != null) { - throw new JMSException("Body is in use, call reset before attempting to access it."); - } - this.content = Unpooled.copiedBuffer(content); - }} +} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/1794cbbf/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java index 5ae65af..6bcf777 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsBytesMessageFacadeTest.java @@ -39,7 +39,6 @@ import org.apache.qpid.proton.amqp.messaging.Data; import org.apache.qpid.proton.amqp.messaging.MessageAnnotations; import org.apache.qpid.proton.amqp.messaging.Section; import org.apache.qpid.proton.message.Message; -import org.junit.Ignore; import org.junit.Test; /** @@ -107,81 +106,59 @@ public class AmqpJmsBytesMessageFacadeTest extends AmqpJmsMessageTypesTestCase { AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createNewBytesMessageFacade(); byte[] bytes = "myBytes".getBytes(); - amqpBytesMessageFacade.setBody(bytes); + OutputStream os = amqpBytesMessageFacade.getOutputStream(); + os.write(bytes); + + amqpBytesMessageFacade.reset(); assertEquals("Message reports unexpected length", bytes.length, amqpBytesMessageFacade.getBodyLength()); } /** - * Test that setting bytes on a new messages creates the data section of the underlying message, + * Test that copying a new messages which has been written to creates the data section of the underlying message, * which as tested by {@link #testNewMessageHasContentTypeButNoBodySection} does not exist initially. */ @Test - public void testSetBodyOnNewMessageCreatesDataSection() throws Exception { - byte[] testBytes = "myTestBytes".getBytes(); + public void testCopyOnPopulatedNewMessageCreatesDataSection() throws Exception { AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createNewBytesMessageFacade(); Message protonMessage = amqpBytesMessageFacade.getAmqpMessage(); assertNotNull("underlying proton message was null", protonMessage); assertNull("Expected no body section to be present", protonMessage.getBody()); - amqpBytesMessageFacade.setBody(testBytes); - - assertNotNull("Expected body section to be present", protonMessage.getBody()); - assertEquals("Unexpected body section type", Data.class, protonMessage.getBody().getClass()); - } - - /** - * Test that setting bytes on a new message results in the expected content in the body section - * of the underlying message and returned by a new InputStream requested from the message. - */ - @Test - public void testSetGetBytesOnNewMessage() throws Exception { - byte[] bytes = "myTestBytes".getBytes(); - AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createNewBytesMessageFacade(); - Message protonMessage = amqpBytesMessageFacade.getAmqpMessage(); - - amqpBytesMessageFacade.setBody(bytes); - - // retrieve the bytes from the underlying message, check they match - Data body = (Data) protonMessage.getBody(); - assertTrue("Underlying message data section did not contain the expected bytes", Arrays.equals(bytes, body.getValue().getArray())); + byte[] bytes = "myBytes".getBytes(); + OutputStream os = amqpBytesMessageFacade.getOutputStream(); + os.write(bytes); - // retrieve the bytes via an InputStream, check they match expected - byte[] receivedBytes = new byte[bytes.length]; - InputStream bytesStream = amqpBytesMessageFacade.getInputStream(); - bytesStream.read(receivedBytes); - assertTrue("Retrieved bytes from input steam did not match expected bytes", Arrays.equals(bytes, receivedBytes)); + AmqpJmsBytesMessageFacade copy = amqpBytesMessageFacade.copy(); - // verify no more bytes remain, i.e EOS - assertEquals("Expected input stream to be at end but data was returned", END_OF_STREAM, bytesStream.read(new byte[1])); + assertDataBodyAsExpected(protonMessage, bytes.length); + assertDataBodyAsExpected(copy.getAmqpMessage(), bytes.length); } @Test public void testClearBodySetsBodyLength0AndCausesEmptyInputStream() throws Exception { - AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createNewBytesMessageFacade(); - byte[] bytes = "myBytes".getBytes(); - amqpBytesMessageFacade.setBody(bytes); - amqpBytesMessageFacade.clearBody(); + + Message message = Message.Factory.create(); + message.setBody(new Data(new Binary(bytes))); + AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createReceivedBytesMessageFacade(createMockAmqpConsumer(), message); amqpBytesMessageFacade.clearBody(); + assertTrue("Expected no message content from facade", amqpBytesMessageFacade.getBodyLength() == 0); assertEquals("Expected no data from facade, but got some", END_OF_STREAM, amqpBytesMessageFacade.getInputStream().read(new byte[1])); - Section body = amqpBytesMessageFacade.getAmqpMessage().getBody(); - assertTrue(body instanceof Data); - Binary value = ((Data) body).getValue(); - assertNotNull(value); - assertEquals(0, value.getLength()); + assertDataBodyAsExpected(amqpBytesMessageFacade.getAmqpMessage(), 0); } @Test public void testClearBodyWithExistingInputStream() throws Exception { - AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createNewBytesMessageFacade(); - byte[] bytes = "myBytes".getBytes(); - amqpBytesMessageFacade.setBody(bytes); + + Message message = Message.Factory.create(); + message.setBody(new Data(new Binary(bytes))); + AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createReceivedBytesMessageFacade(createMockAmqpConsumer(), message); @SuppressWarnings("unused") InputStream unused = amqpBytesMessageFacade.getInputStream(); @@ -190,30 +167,23 @@ public class AmqpJmsBytesMessageFacadeTest extends AmqpJmsMessageTypesTestCase { assertEquals("Expected no data from facade, but got some", END_OF_STREAM, amqpBytesMessageFacade.getInputStream().read(new byte[1])); - Section body = amqpBytesMessageFacade.getAmqpMessage().getBody(); - assertTrue(body instanceof Data); - Binary value = ((Data) body).getValue(); - assertNotNull(value); - assertEquals(0, value.getLength()); + assertDataBodyAsExpected(amqpBytesMessageFacade.getAmqpMessage(), 0); } @Test public void testClearBodyWithExistingOutputStream() throws Exception { - AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createNewBytesMessageFacade(); - byte[] bytes = "myBytes".getBytes(); - amqpBytesMessageFacade.setBody(bytes); + + Message message = Message.Factory.create(); + message.setBody(new Data(new Binary(bytes))); + AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createReceivedBytesMessageFacade(createMockAmqpConsumer(), message); @SuppressWarnings("unused") OutputStream unused = amqpBytesMessageFacade.getOutputStream(); amqpBytesMessageFacade.clearBody(); - Section body = amqpBytesMessageFacade.getAmqpMessage().getBody(); - assertTrue(body instanceof Data); - Binary value = ((Data) body).getValue(); - assertNotNull(value); - assertEquals(0, value.getLength()); + assertDataBodyAsExpected(amqpBytesMessageFacade.getAmqpMessage(), 0); } // ---------- test handling of received messages -------------------------// @@ -367,13 +337,17 @@ public class AmqpJmsBytesMessageFacadeTest extends AmqpJmsMessageTypesTestCase { AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createReceivedBytesMessageFacade(createMockAmqpConsumer(), message); Message protonMessage = amqpBytesMessageFacade.getAmqpMessage(); - amqpBytesMessageFacade.setBody(replacement); + OutputStream os = amqpBytesMessageFacade.getOutputStream(); + os.write(replacement); - // retrieve the new bytes from the underlying message, check they match + amqpBytesMessageFacade.reset(); + + // Retrieve the new Binary from the underlying message, check they match + // (the backing arrays may be different length so not checking arrayEquals) Data body = (Data) protonMessage.getBody(); - assertTrue("Underlying message data section did not contain the expected bytes", Arrays.equals(replacement, body.getValue().getArray())); + assertEquals("Underlying message data section did not contain the expected bytes", new Binary(replacement), body.getValue()); - assertEquals("expected length to match replacement bytes", replacement.length, amqpBytesMessageFacade.getBodyLength()); + assertEquals("expected body length to match replacement bytes", replacement.length, amqpBytesMessageFacade.getBodyLength()); // retrieve the new bytes via an InputStream, check they match expected byte[] receivedBytes = new byte[replacement.length]; @@ -385,26 +359,15 @@ public class AmqpJmsBytesMessageFacadeTest extends AmqpJmsMessageTypesTestCase { assertEquals("Expected input stream to be at end but data was returned", END_OF_STREAM, bytesStream.read(new byte[1])); } - /** - * Test that setting bytes on a received message results which had no content type - * results in the content type being set. - */ - @Test - @Ignore - // TODO: failing because we dont set the content type except at creation. Decide if we actually care. - public void testSetBytesOnReceivedMessageSetsContentTypeIfBodyTypeChanged() throws Exception { - byte[] orig = "myOrigBytes".getBytes(); - byte[] replacement = "myReplacementBytes".getBytes(); - - Message message = Message.Factory.create(); - message.setBody(new AmqpValue(new Binary(orig))); - AmqpJmsBytesMessageFacade amqpBytesMessageFacade = createReceivedBytesMessageFacade(createMockAmqpConsumer(), message); - Message protonMessage = amqpBytesMessageFacade.getAmqpMessage(); - - amqpBytesMessageFacade.setBody(replacement); + //--------- utility methods ---------- - String contentType = protonMessage.getContentType(); - assertNotNull("content type should be set", contentType); - assertEquals("application/octet-stream", contentType); + private void assertDataBodyAsExpected(Message protonMessage, int length) { + Section body = protonMessage.getBody(); + assertNotNull("Expected body section to be present", body); + assertEquals("Unexpected body section type", Data.class, protonMessage.getBody().getClass()); + Binary value = ((Data) body).getValue(); + assertNotNull(value); + assertEquals("Unexpected body length", length, value.getLength()); } + } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org