Repository: qpid-jms Updated Branches: refs/heads/master 8b409f630 -> c755787d7
ensure foreign BytesMessage get their content sent correctly after copying it Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/c755787d Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/c755787d Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/c755787d Branch: refs/heads/master Commit: c755787d7ea65f8ebb98df6fa12ea3b1f0d09e99 Parents: 8b409f6 Author: Robert Gemmell <rob...@apache.org> Authored: Fri Jan 9 17:22:09 2015 +0000 Committer: Robert Gemmell <rob...@apache.org> Committed: Fri Jan 9 17:22:09 2015 +0000 ---------------------------------------------------------------------- .../amqp/message/AmqpJmsBytesMessageFacade.java | 7 ++ .../ForeignMessageIntegrationTest.java | 77 ++++++++++++++++++++ 2 files changed, 84 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/c755787d/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 8e9aca9..2da69e7 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 @@ -219,4 +219,11 @@ public class AmqpJmsBytesMessageFacade extends AmqpJmsMessageFacade implements J return result; } + + @Override + public void onSend(boolean disableMsgId, boolean disableTimestamp, long producerTtl) throws JMSException { + super.onSend(disableMsgId, disableTimestamp, producerTtl); + + reset(); + } } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/c755787d/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java new file mode 100644 index 0000000..d8fc116 --- /dev/null +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ForeignMessageIntegrationTest.java @@ -0,0 +1,77 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.qpid.jms.integration; + +import static org.hamcrest.Matchers.equalTo; + +import javax.jms.Connection; +import javax.jms.MessageProducer; +import javax.jms.Queue; +import javax.jms.Session; + +import org.apache.qpid.jms.message.foreign.ForeignJmsBytesMessage; +import org.apache.qpid.jms.provider.amqp.message.AmqpMessageSupport; +import org.apache.qpid.jms.test.QpidJmsTestCase; +import org.apache.qpid.jms.test.testpeer.TestAmqpPeer; +import org.apache.qpid.jms.test.testpeer.matchers.sections.MessageAnnotationsSectionMatcher; +import org.apache.qpid.jms.test.testpeer.matchers.sections.MessageHeaderSectionMatcher; +import org.apache.qpid.jms.test.testpeer.matchers.sections.MessagePropertiesSectionMatcher; +import org.apache.qpid.jms.test.testpeer.matchers.sections.TransferPayloadCompositeMatcher; +import org.apache.qpid.jms.test.testpeer.matchers.types.EncodedDataMatcher; +import org.apache.qpid.proton.amqp.Binary; +import org.apache.qpid.proton.amqp.Symbol; +import org.junit.Test; + +public class ForeignMessageIntegrationTest extends QpidJmsTestCase { + private final IntegrationTestFixture testFixture = new IntegrationTestFixture(); + + @Test(timeout = 5000) + public void testSendForeignBytesMessageWithContent() throws Exception { + try (TestAmqpPeer testPeer = new TestAmqpPeer();) { + Connection connection = testFixture.establishConnecton(testPeer); + testPeer.expectBegin(true); + testPeer.expectSenderAttach(); + + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + Queue queue = session.createQueue("myQueue"); + MessageProducer producer = session.createProducer(queue); + + byte[] content = "myBytes".getBytes(); + + MessageHeaderSectionMatcher headersMatcher = new MessageHeaderSectionMatcher(true).withDurable(equalTo(true)); + MessageAnnotationsSectionMatcher msgAnnotationsMatcher = new MessageAnnotationsSectionMatcher(true); + msgAnnotationsMatcher.withEntry(Symbol.valueOf(AmqpMessageSupport.JMS_MSG_TYPE), equalTo(AmqpMessageSupport.JMS_BYTES_MESSAGE)); + MessagePropertiesSectionMatcher propertiesMatcher = new MessagePropertiesSectionMatcher(true); + propertiesMatcher.withContentType(equalTo(Symbol.valueOf(AmqpMessageSupport.OCTET_STREAM_CONTENT_TYPE))); + TransferPayloadCompositeMatcher messageMatcher = new TransferPayloadCompositeMatcher(); + messageMatcher.setHeadersMatcher(headersMatcher); + messageMatcher.setMessageAnnotationsMatcher(msgAnnotationsMatcher); + messageMatcher.setPropertiesMatcher(propertiesMatcher); + messageMatcher.setMessageContentMatcher(new EncodedDataMatcher(new Binary(content))); + + testPeer.expectTransfer(messageMatcher); + + //Create a foreign message and send it + ForeignJmsBytesMessage foreign = new ForeignJmsBytesMessage(); + foreign.writeBytes(content); + + producer.send(foreign); + } + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org