[ https://issues.apache.org/jira/browse/QPIDJMS-325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16173245#comment-16173245 ]
Timothy Bish commented on QPIDJMS-325: -------------------------------------- I'd agree that the StreamMessage in ActiveMQ 5.x has a bug. As for the code in Qpid JMS I think that the BytesMessage meets the requirements of the specification and don't really see a need to artificially try and make it behave just like stream message as the two are quite different. > reading from empty buffer of a BytesMessage should return 0, not -1 > ------------------------------------------------------------------- > > Key: QPIDJMS-325 > URL: https://issues.apache.org/jira/browse/QPIDJMS-325 > Project: Qpid JMS > Issue Type: Bug > Components: qpid-jms-client > Affects Versions: 0.25.0 > Reporter: Jiri Daněk > Priority: Trivial > > Consider the following test. According to > http://docs.oracle.com/javaee/7/api/javax/jms/BytesMessage.html#readBytes-byte:A- > the #readBytes method should return 0 when it is first called, as the number > of bytes in the buffer is 0 and it read 0 bytes. Only on subsequent calls it > should return -1. What happens now is that the method returns -1 the first > time. > See the commented lines to try the same thing with ActiveMQ JMS Client > library, and with StreamMessage instead of BytesMessage. The behavior there > should be the same. > ActiveMQ passes the test with BytesMessage and fails it with StreamMessage. > Qpid JMS fails with BytesMessage and passes with StreamMessage. > {code} > import org.apache.activemq.ActiveMQConnectionFactory; > import org.apache.qpid.jms.JmsConnectionFactory; > import org.junit.Test; > import javax.jms.*; > import static com.google.common.truth.Truth.assertThat; > public class EmptyBufferInputTest { > @Test > public void testEmptyBufferInput() throws JMSException { > // ConnectionFactory connectionFactory = new > ActiveMQConnectionFactory("tcp://127.0.0.1:61616"); > JmsConnectionFactory connectionFactory = new > JmsConnectionFactory("amqp://127.0.0.1:5672"); > Connection connection = connectionFactory.createConnection(); > Session session = connection.createSession(false, > Session.AUTO_ACKNOWLEDGE); > final byte[] BYTE_LIST = {1, 2, 4}; > // StreamMessage message = session.createStreamMessage(); > BytesMessage message = session.createBytesMessage(); > message.clearBody(); > byte[] readList = new byte[BYTE_LIST.length - 1]; > byte[] emptyList = {}; > message.writeBytes(emptyList); > message.reset(); > final int IS_EMPTY = 0; > assertThat(message.readBytes(readList)).isEqualTo(IS_EMPTY); > } > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org