[
https://issues.apache.org/jira/browse/QPIDJMS-325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16174725#comment-16174725
]
Robbie Gemmell commented on QPIDJMS-325:
----------------------------------------
For what its worth, add the Qpid AMQP 0-x JMS client to the list that seem
(again, didint try) like they would return -1.
Also, in looking at the ActiveMQ 5.x client earlier (after investigation how I
might change the Qpid client) I came to realise its current readBytes() impl is
essentially identical to the Qpid JMS one. Trying the test with it, the
ActiveMQ 5.x client also returns -1 immediately for me, not 0.
> 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: [email protected]
For additional commands, e-mail: [email protected]