You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2016/09/12 20:12:05 UTC
[4/7] qpid-jms git commit: QPIDJMS-207 Adds dependency on JMS 2.0 API
and initial implementation.
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
index ec84479..48adaea 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/MessageIntegrationTest.java
@@ -31,6 +31,7 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException;
+import java.io.Serializable;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
@@ -98,6 +99,45 @@ public class MessageIntegrationTest extends QpidJmsTestCase
private final IntegrationTestFixture testFixture = new IntegrationTestFixture();
+ @Test(timeout = 20000)
+ public void testReceiveMessageAndGetBody() throws Exception {
+ try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
+ Connection connection = testFixture.establishConnecton(testPeer);
+ connection.start();
+
+ testPeer.expectBegin();
+
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Queue queue = session.createQueue("myQueue");
+
+ DescribedType amqpValueNullContent = new AmqpValueDescribedType(null);
+
+ testPeer.expectReceiverAttach();
+ testPeer.expectLinkFlowRespondWithTransfer(null, null, null, null, amqpValueNullContent);
+ testPeer.expectDispositionThatIsAcceptedAndSettled();
+ testPeer.expectClose();
+
+ MessageConsumer messageConsumer = session.createConsumer(queue);
+ Message receivedMessage = messageConsumer.receive(3000);
+
+ assertTrue(receivedMessage.isBodyAssignableTo(Object.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(String.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(byte[].class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Serializable.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Map.class));
+
+ assertNull(receivedMessage.getBody(Object.class));
+ assertNull(receivedMessage.getBody(String.class));
+ assertNull(receivedMessage.getBody(byte[].class));
+ assertNull(receivedMessage.getBody(Serializable.class));
+ assertNull(receivedMessage.getBody(Map.class));
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
+ }
+ }
+
//==== Application Properties Section ====
//========================================
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ObjectMessageIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ObjectMessageIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ObjectMessageIntegrationTest.java
index a9bc0c5..e382324 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ObjectMessageIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ObjectMessageIntegrationTest.java
@@ -21,20 +21,25 @@ package org.apache.qpid.jms.integration;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.util.HashMap;
+import java.util.Map;
import java.util.UUID;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
+import javax.jms.MessageFormatException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
@@ -113,6 +118,7 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
messageMatcher.setMessageContentMatcher(new EncodedDataMatcher(new Binary(bytes)));
testPeer.expectTransfer(messageMatcher);
+ testPeer.expectClose();
ObjectMessage message = session.createObjectMessage();
if (content != null || setObjectIfNull) {
@@ -121,6 +127,38 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
producer.send(message);
+ if (content == null) {
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Serializable.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ assertTrue(message.isBodyAssignableTo(Boolean.class));
+ assertTrue(message.isBodyAssignableTo(byte[].class));
+ } else {
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Serializable.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertFalse(message.isBodyAssignableTo(byte[].class));
+ }
+
+ if (content == null) {
+ assertNull(message.getBody(Object.class));
+ assertNull(message.getBody(Serializable.class));
+ assertNull(message.getBody(String.class));
+ assertNull(message.getBody(byte[].class));
+ } else {
+ assertNotNull(message.getBody(Object.class));
+ assertNotNull(message.getBody(Serializable.class));
+ assertNotNull(message.getBody(String.class));
+ try {
+ message.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+ }
+
+ connection.close();
+
testPeer.waitForAllHandlersToComplete(3000);
}
}
@@ -156,10 +194,10 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
testPeer.expectReceiverAttach();
testPeer.expectLinkFlowRespondWithTransfer(null, msgAnnotations, properties, null, dataContent);
testPeer.expectDispositionThatIsAcceptedAndSettled();
+ testPeer.expectClose();
MessageConsumer messageConsumer = session.createConsumer(queue);
Message receivedMessage = messageConsumer.receive(3000);
- testPeer.waitForAllHandlersToComplete(3000);
assertNotNull(receivedMessage);
assertTrue(receivedMessage instanceof ObjectMessage);
@@ -168,6 +206,25 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
Object object = objectMessage.getObject();
assertNotNull("Expected object but got null", object);
assertEquals("Message body object was not as expected", expectedContent, object);
+
+ assertTrue(receivedMessage.isBodyAssignableTo(String.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Serializable.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Object.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(Boolean.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(byte[].class));
+
+ assertNotNull(receivedMessage.getBody(Object.class));
+ assertNotNull(receivedMessage.getBody(Serializable.class));
+ assertNotNull(receivedMessage.getBody(String.class));
+ try {
+ receivedMessage.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
}
}
@@ -224,9 +281,27 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
messageMatcher.setMessageContentMatcher(new EncodedDataMatcher(new Binary(bytes)));
testPeer.expectTransfer(messageMatcher);
+ testPeer.expectClose();
producer.send(receivedMessage);
+ assertTrue(receivedMessage.isBodyAssignableTo(String.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Serializable.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Object.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(Boolean.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(byte[].class));
+
+ assertNotNull(receivedMessage.getBody(Object.class));
+ assertNotNull(receivedMessage.getBody(Serializable.class));
+ assertNotNull(receivedMessage.getBody(String.class));
+ try {
+ receivedMessage.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ connection.close();
+
testPeer.waitForAllHandlersToComplete(3000);
}
}
@@ -373,6 +448,7 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
messageMatcher.setMessageContentMatcher(new EncodedAmqpValueMatcher(map));
testPeer.expectTransfer(messageMatcher);
+ testPeer.expectClose();
ObjectMessage message = session.createObjectMessage();
message.setBooleanProperty(AmqpMessageSupport.JMS_AMQP_TYPED_ENCODING, true);
@@ -380,6 +456,23 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
producer.send(message);
+ assertTrue(message.isBodyAssignableTo(Map.class));
+ assertTrue(message.isBodyAssignableTo(Serializable.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertFalse(message.isBodyAssignableTo(byte[].class));
+
+ assertNotNull(message.getBody(Object.class));
+ assertNotNull(message.getBody(Serializable.class));
+ assertNotNull(message.getBody(Map.class));
+ try {
+ message.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ connection.close();
+
testPeer.waitForAllHandlersToComplete(3000);
}
}
@@ -406,10 +499,10 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
testPeer.expectReceiverAttach();
testPeer.expectLinkFlowRespondWithTransfer(null, msgAnnotations, null, null, amqpValueContent);
testPeer.expectDispositionThatIsAcceptedAndSettled();
+ testPeer.expectClose();
MessageConsumer messageConsumer = session.createConsumer(queue);
Message receivedMessage = messageConsumer.receive(3000);
- testPeer.waitForAllHandlersToComplete(3000);
assertNotNull(receivedMessage);
assertTrue("Expected ObjectMessage instance, but got: " + receivedMessage.getClass().getName(), receivedMessage instanceof ObjectMessage);
@@ -418,6 +511,25 @@ public class ObjectMessageIntegrationTest extends QpidJmsTestCase {
Object object = objectMessage.getObject();
assertNotNull("Expected object but got null", object);
assertEquals("Message body object was not as expected", map, object);
+
+ assertTrue(receivedMessage.isBodyAssignableTo(Map.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Serializable.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Object.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(Boolean.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(byte[].class));
+
+ assertNotNull(receivedMessage.getBody(Object.class));
+ assertNotNull(receivedMessage.getBody(Serializable.class));
+ assertNotNull(receivedMessage.getBody(Map.class));
+ try {
+ receivedMessage.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
}
}
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledProducerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledProducerIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledProducerIntegrationTest.java
index 2ed9f41..ba851a6 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledProducerIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/PresettledProducerIntegrationTest.java
@@ -29,6 +29,7 @@ import static org.junit.Assert.fail;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import javax.jms.CompletionListener;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.Message;
@@ -40,7 +41,6 @@ import javax.jms.TemporaryTopic;
import javax.jms.TextMessage;
import javax.jms.Topic;
-import org.apache.qpid.jms.JmsCompletionListener;
import org.apache.qpid.jms.JmsMessageProducer;
import org.apache.qpid.jms.test.QpidJmsTestCase;
import org.apache.qpid.jms.test.testpeer.ListDescribedType;
@@ -608,7 +608,7 @@ public class PresettledProducerIntegrationTest extends QpidJmsTestCase {
}
}
- private class TestJmsCompletionListener implements JmsCompletionListener {
+ private class TestJmsCompletionListener implements CompletionListener {
private final CountDownLatch completed;
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java
index 1e69eb8..0dee795 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/ProducerIntegrationTest.java
@@ -44,6 +44,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import javax.jms.BytesMessage;
+import javax.jms.CompletionListener;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.ExceptionListener;
@@ -57,7 +58,6 @@ import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
-import org.apache.qpid.jms.JmsCompletionListener;
import org.apache.qpid.jms.JmsConnection;
import org.apache.qpid.jms.JmsConnectionFactory;
import org.apache.qpid.jms.JmsDefaultConnectionListener;
@@ -2381,7 +2381,7 @@ public class ProducerIntegrationTest extends QpidJmsTestCase {
}
}
- private class TestJmsCompletionListener implements JmsCompletionListener {
+ private class TestJmsCompletionListener implements CompletionListener {
private final CountDownLatch completed;
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java
index 34d60f1..7e5744f 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/SessionIntegrationTest.java
@@ -37,6 +37,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
+import javax.jms.CompletionListener;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.IllegalStateException;
@@ -57,7 +58,6 @@ import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicSubscriber;
-import org.apache.qpid.jms.JmsCompletionListener;
import org.apache.qpid.jms.JmsConnection;
import org.apache.qpid.jms.JmsDefaultConnectionListener;
import org.apache.qpid.jms.JmsMessageProducer;
@@ -1198,6 +1198,33 @@ public class SessionIntegrationTest extends QpidJmsTestCase {
}
@Test(timeout = 20000)
+ public void testCreateDurableConsumer() throws Exception {
+ try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
+ Connection connection = testFixture.establishConnecton(testPeer);
+ connection.start();
+
+ testPeer.expectBegin();
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ String topicName = "myTopic";
+ Topic dest = session.createTopic(topicName);
+ String subscriptionName = "mySubscription";
+
+ testPeer.expectDurableSubscriberAttach(topicName, subscriptionName);
+ testPeer.expectLinkFlow();
+
+ MessageConsumer consumer = session.createDurableConsumer(dest, subscriptionName);
+ assertNotNull("MessageConsumer object was null", consumer);
+ assertNull("MessageConsumer should not have a selector", consumer.getMessageSelector());
+
+ testPeer.expectClose();
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(1000);
+ }
+ }
+
+ @Test(timeout = 20000)
public void testDurableSubscriptionUnsubscribeInUseThrowsJMSEx() throws Exception {
try (TestAmqpPeer testPeer = new TestAmqpPeer();) {
Connection connection = testFixture.establishConnecton(testPeer);
@@ -1995,7 +2022,7 @@ public class SessionIntegrationTest extends QpidJmsTestCase {
}
}
- private class TestJmsCompletionListener implements JmsCompletionListener {
+ private class TestJmsCompletionListener implements CompletionListener {
private final CountDownLatch completed;
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/StreamMessageIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/StreamMessageIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/StreamMessageIntegrationTest.java
index 21e26f8..507d34e 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/StreamMessageIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/StreamMessageIntegrationTest.java
@@ -21,8 +21,10 @@ package org.apache.qpid.jms.integration;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.List;
@@ -30,6 +32,7 @@ import java.util.List;
import javax.jms.Connection;
import javax.jms.Message;
import javax.jms.MessageConsumer;
+import javax.jms.MessageFormatException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
@@ -106,10 +109,10 @@ public class StreamMessageIntegrationTest extends QpidJmsTestCase {
testPeer.expectReceiverAttach();
testPeer.expectLinkFlowRespondWithTransfer(null, msgAnnotations, null, null, amqpValueSectionContent);
testPeer.expectDispositionThatIsAcceptedAndSettled();
+ testPeer.expectClose();
MessageConsumer messageConsumer = session.createConsumer(queue);
Message receivedMessage = messageConsumer.receive(3000);
- testPeer.waitForAllHandlersToComplete(3000);
//verify the content is as expected
assertNotNull("Message was not received", receivedMessage);
@@ -127,6 +130,33 @@ public class StreamMessageIntegrationTest extends QpidJmsTestCase {
assertEquals("Unexpected long value", myLong, receivedStreamMessage.readLong());
assertEquals("Unexpected short value", myShort, receivedStreamMessage.readShort());
assertEquals("Unexpected UTF value", myString, receivedStreamMessage.readString());
+
+ assertFalse(receivedStreamMessage.isBodyAssignableTo(String.class));
+ assertFalse(receivedStreamMessage.isBodyAssignableTo(Object.class));
+ assertFalse(receivedStreamMessage.isBodyAssignableTo(Boolean.class));
+ assertFalse(receivedStreamMessage.isBodyAssignableTo(byte[].class));
+
+ try {
+ receivedStreamMessage.getBody(Object.class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ try {
+ receivedStreamMessage.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ try {
+ receivedStreamMessage.getBody(String.class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
}
}
@@ -204,9 +234,38 @@ public class StreamMessageIntegrationTest extends QpidJmsTestCase {
messageMatcher.setPropertiesMatcher(propertiesMatcher);
messageMatcher.setMessageContentMatcher(new EncodedAmqpSequenceMatcher(list));
- //send the message
testPeer.expectTransfer(messageMatcher);
+ testPeer.expectClose();
+
+ //send the message
producer.send(streamMessage);
+
+ assertFalse(streamMessage.isBodyAssignableTo(String.class));
+ assertFalse(streamMessage.isBodyAssignableTo(Object.class));
+ assertFalse(streamMessage.isBodyAssignableTo(Boolean.class));
+ assertFalse(streamMessage.isBodyAssignableTo(byte[].class));
+
+ try {
+ streamMessage.getBody(Object.class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ try {
+ streamMessage.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ try {
+ streamMessage.getBody(String.class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
}
}
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TextMessageIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TextMessageIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TextMessageIntegrationTest.java
index b7b27e8..2869d03 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TextMessageIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/integration/TextMessageIntegrationTest.java
@@ -20,9 +20,11 @@ package org.apache.qpid.jms.integration;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.io.IOException;
@@ -30,6 +32,7 @@ import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
+import javax.jms.MessageFormatException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
@@ -75,10 +78,27 @@ public class TextMessageIntegrationTest extends QpidJmsTestCase {
messageMatcher.setPropertiesMatcher(propsMatcher);
messageMatcher.setMessageContentMatcher(new EncodedAmqpValueMatcher(text));
testPeer.expectTransfer(messageMatcher);
+ testPeer.expectClose();
Message message = session.createTextMessage(text);
-
producer.send(message);
+
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertFalse(message.isBodyAssignableTo(byte[].class));
+
+ assertNotNull(message.getBody(Object.class));
+ assertNotNull(message.getBody(String.class));
+ try {
+ message.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(1000);
}
}
@@ -99,14 +119,31 @@ public class TextMessageIntegrationTest extends QpidJmsTestCase {
testPeer.expectReceiverAttach();
testPeer.expectLinkFlowRespondWithTransfer(null, null, null, null, amqpValueStringContent);
testPeer.expectDispositionThatIsAcceptedAndSettled();
+ testPeer.expectClose();
MessageConsumer messageConsumer = session.createConsumer(queue);
Message receivedMessage = messageConsumer.receive(3000);
- testPeer.waitForAllHandlersToComplete(3000);
+
+ assertTrue(receivedMessage.isBodyAssignableTo(String.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Object.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(Boolean.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(byte[].class));
+
+ assertNotNull(receivedMessage.getBody(Object.class));
+ assertNotNull(receivedMessage.getBody(String.class));
+ try {
+ receivedMessage.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
assertNotNull(receivedMessage);
assertTrue(receivedMessage instanceof TextMessage);
assertEquals(expectedMessageContent, ((TextMessage) receivedMessage).getText());
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
}
}
@@ -131,10 +168,21 @@ public class TextMessageIntegrationTest extends QpidJmsTestCase {
messageMatcher.setPropertiesMatcher(propsMatcher);
messageMatcher.setMessageContentMatcher(new EncodedAmqpValueMatcher(null));
testPeer.expectTransfer(messageMatcher);
+ testPeer.expectClose();
Message message = session.createTextMessage();
producer.send(message);
+
+ // Message has no content so all are assignable
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ assertTrue(message.isBodyAssignableTo(Boolean.class));
+ assertTrue(message.isBodyAssignableTo(byte[].class));
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
}
}
@@ -154,14 +202,24 @@ public class TextMessageIntegrationTest extends QpidJmsTestCase {
testPeer.expectReceiverAttach();
testPeer.expectLinkFlowRespondWithTransfer(null, null, null, null, amqpValueNullContent);
testPeer.expectDispositionThatIsAcceptedAndSettled();
+ testPeer.expectClose();
MessageConsumer messageConsumer = session.createConsumer(queue);
Message receivedMessage = messageConsumer.receive(3000);
- testPeer.waitForAllHandlersToComplete(3000);
assertNotNull(receivedMessage);
assertTrue(receivedMessage instanceof TextMessage);
assertNull(((TextMessage) receivedMessage).getText());
+
+ // Message has no content so all are assignable
+ assertTrue(receivedMessage.isBodyAssignableTo(String.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Object.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Boolean.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(byte[].class));
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
}
}
@@ -232,16 +290,33 @@ public class TextMessageIntegrationTest extends QpidJmsTestCase {
testPeer.expectReceiverAttach();
testPeer.expectLinkFlowRespondWithTransfer(null, null, properties, null, dataContent);
testPeer.expectDispositionThatIsAcceptedAndSettled();
+ testPeer.expectClose();
MessageConsumer messageConsumer = session.createConsumer(queue);
Message receivedMessage = messageConsumer.receive(3000);
- testPeer.waitForAllHandlersToComplete(3000);
assertNotNull(receivedMessage);
assertTrue(receivedMessage instanceof TextMessage);
String text = ((TextMessage) receivedMessage).getText();
assertEquals(expectedString, text);
+
+ assertTrue(receivedMessage.isBodyAssignableTo(String.class));
+ assertTrue(receivedMessage.isBodyAssignableTo(Object.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(Boolean.class));
+ assertFalse(receivedMessage.isBodyAssignableTo(byte[].class));
+
+ assertNotNull(receivedMessage.getBody(Object.class));
+ assertNotNull(receivedMessage.getBody(String.class));
+ try {
+ receivedMessage.getBody(byte[].class);
+ fail("Cannot read TextMessage with this type.");
+ } catch (MessageFormatException mfe) {
+ }
+
+ connection.close();
+
+ testPeer.waitForAllHandlersToComplete(3000);
}
}
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
index a0994a6..16cc9a7 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java
@@ -26,13 +26,21 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.io.Serializable;
import java.util.Enumeration;
+import java.util.Map;
+import java.util.UUID;
+import javax.jms.BytesMessage;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
+import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageFormatException;
import javax.jms.MessageNotWriteableException;
+import javax.jms.ObjectMessage;
+import javax.jms.StreamMessage;
+import javax.jms.TextMessage;
import org.apache.qpid.jms.JmsAcknowledgeCallback;
import org.apache.qpid.jms.JmsConnection;
@@ -1498,6 +1506,333 @@ public class JmsMessageTest {
assertEquals("Unexpected ack type value after setting prop", RELEASED, callback.getAckType());
}
+ //--------- Test isBodyAssignableTo method -------------------------------//
+
+ @Test
+ public void testMessageIsBodyAssignableTo() throws Exception {
+ Message message = factory.createMessage();
+
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Boolean.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ assertTrue(message.isBodyAssignableTo(Map.class));
+ }
+
+ @Test
+ public void testTextMessageIsBodyAssignableTo() throws Exception {
+ JmsTextMessage message = factory.createTextMessage();
+
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Boolean.class));
+ assertTrue(message.isBodyAssignableTo(Map.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+
+ message.setText("test");
+
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertFalse(message.isBodyAssignableTo(Map.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ }
+
+ @Test
+ public void testStreamMessageIsBodyAssignableTo() throws Exception {
+ JmsStreamMessage message = factory.createStreamMessage();
+
+ assertFalse(message.isBodyAssignableTo(String.class));
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertFalse(message.isBodyAssignableTo(Map.class));
+ assertFalse(message.isBodyAssignableTo(Object.class));
+
+ message.writeBoolean(false);
+
+ assertFalse(message.isBodyAssignableTo(String.class));
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertFalse(message.isBodyAssignableTo(Map.class));
+ assertFalse(message.isBodyAssignableTo(Object.class));
+ }
+
+ @Test
+ public void testMapMessageIsBodyAssignableTo() throws Exception {
+ JmsMapMessage message = factory.createMapMessage();
+
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Boolean.class));
+ assertTrue(message.isBodyAssignableTo(Map.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+
+ message.setBoolean("Boolean", true);
+
+ assertFalse(message.isBodyAssignableTo(String.class));
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertTrue(message.isBodyAssignableTo(Map.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ }
+
+ @Test
+ public void testBytesMessageIsBodyAssignableTo() throws Exception {
+ JmsBytesMessage message = factory.createBytesMessage();
+
+ assertTrue(message.isBodyAssignableTo(byte[].class));
+ assertTrue(message.isBodyAssignableTo(Boolean.class));
+ assertTrue(message.isBodyAssignableTo(Map.class));
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+
+ message.writeBoolean(false);
+
+ // The message doesn't technically have a body until it is reset
+ message.reset();
+
+ assertTrue(message.isBodyAssignableTo(byte[].class));
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertFalse(message.isBodyAssignableTo(Map.class));
+ assertFalse(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ }
+
+ @Test
+ public void testObjectMessageIsBodyAssignableTo() throws Exception {
+ JmsObjectMessage message = factory.createObjectMessage();
+
+ assertTrue(message.isBodyAssignableTo(Boolean.class));
+ assertTrue(message.isBodyAssignableTo(Map.class));
+ assertTrue(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Serializable.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+
+ message.setObject(UUID.randomUUID());
+
+ assertFalse(message.isBodyAssignableTo(Boolean.class));
+ assertFalse(message.isBodyAssignableTo(Map.class));
+ assertFalse(message.isBodyAssignableTo(String.class));
+ assertTrue(message.isBodyAssignableTo(Serializable.class));
+ assertTrue(message.isBodyAssignableTo(Object.class));
+ assertTrue(message.isBodyAssignableTo(UUID.class));
+ }
+
+ //--------- Test for getBody method --------------------------------------//
+
+ @Test
+ public void testGetBodyOnMessage() throws Exception {
+ Message message = factory.createMessage();
+
+ assertNull(message.getBody(String.class));
+ assertNull(message.getBody(Boolean.class));
+ assertNull(message.getBody(byte[].class));
+ assertNull(message.getBody(Object.class));
+ }
+
+ @Test
+ public void testGetBodyOnTextMessage() throws Exception {
+ TextMessage message = factory.createTextMessage();
+
+ assertNull(message.getBody(String.class));
+ assertNull(message.getBody(Boolean.class));
+ assertNull(message.getBody(byte[].class));
+ assertNull(message.getBody(Object.class));
+
+ message.setText("test");
+
+ assertNotNull(message.getBody(String.class));
+ assertNotNull(message.getBody(Object.class));
+
+ try {
+ message.getBody(Boolean.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(Map.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(byte[].class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+ }
+
+ @Test
+ public void testGetBodyOnMapMessage() throws Exception {
+ MapMessage message = factory.createMapMessage();
+
+ assertNull(message.getBody(String.class));
+ assertNull(message.getBody(Boolean.class));
+ assertNull(message.getBody(byte[].class));
+ assertNull(message.getBody(Object.class));
+
+ message.setString("test", "test");
+
+ assertNotNull(message.getBody(Map.class));
+ assertNotNull(message.getBody(Object.class));
+
+ try {
+ message.getBody(Boolean.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(String.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(byte[].class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+ }
+
+ @Test
+ public void testGetBodyOnObjectMessage() throws Exception {
+ ObjectMessage message = factory.createObjectMessage();
+
+ assertNull(message.getBody(String.class));
+ assertNull(message.getBody(Boolean.class));
+ assertNull(message.getBody(byte[].class));
+ assertNull(message.getBody(Serializable.class));
+ assertNull(message.getBody(Object.class));
+
+ message.setObject(UUID.randomUUID());
+
+ assertNotNull(message.getBody(UUID.class));
+ assertNotNull(message.getBody(Serializable.class));
+ assertNotNull(message.getBody(Object.class));
+
+ try {
+ message.getBody(Boolean.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(String.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(byte[].class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+ }
+
+ @Test
+ public void testGetBodyOnBytesMessage() throws Exception {
+ BytesMessage message = factory.createBytesMessage();
+
+ assertNull(message.getBody(String.class));
+ assertNull(message.getBody(Boolean.class));
+ assertNull(message.getBody(byte[].class));
+ assertNull(message.getBody(Object.class));
+
+ message.writeUTF("test");
+ message.reset();
+
+ assertNotNull(message.getBody(byte[].class));
+ assertNotNull(message.getBody(Object.class));
+
+ try {
+ message.getBody(Boolean.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(Map.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(String.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+ }
+
+ @Test
+ public void testGetBodyOnStreamMessage() throws Exception {
+ StreamMessage message = factory.createStreamMessage();
+
+ try {
+ message.getBody(Object.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(Boolean.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(String.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(byte[].class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ message.writeBoolean(false);
+
+ try {
+ message.getBody(Object.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(Boolean.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(String.class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+
+ try {
+ message.getBody(byte[].class);
+ fail("Should have thrown an exception");
+ } catch (MessageFormatException mfe) {
+ LOG.info("caught expected MessageFormatException");
+ }
+ }
+
//--------- Test support method ------------------------------------------//
private void assertGetMissingPropertyThrowsNumberFormatException(JmsMessage testMessage, String propertyName, Class<?> clazz) throws JMSException {
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java
index 286682c..8b53651 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestBytesMessageFacade.java
@@ -16,11 +16,6 @@
*/
package org.apache.qpid.jms.message.facade.test;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufInputStream;
-import io.netty.buffer.ByteBufOutputStream;
-import io.netty.buffer.Unpooled;
-
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -30,6 +25,11 @@ import javax.jms.JMSException;
import org.apache.qpid.jms.message.facade.JmsBytesMessageFacade;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.ByteBufInputStream;
+import io.netty.buffer.ByteBufOutputStream;
+import io.netty.buffer.Unpooled;
+
/**
* A test implementation of the JmsBytesMessageFacade that simply holds a raw Buffer
*/
@@ -133,4 +133,19 @@ public final class JmsTestBytesMessageFacade extends JmsTestMessageFacade implem
public int getBodyLength() {
return content.readableBytes();
}
+
+ @Override
+ public boolean hasBody() {
+ return content.isReadable();
+ }
+
+ @Override
+ public byte[] copyBody() {
+ ByteBuf duplicate = content.duplicate();
+ byte[] result = new byte[content.readableBytes()];
+
+ duplicate.readBytes(result);
+
+ return result;
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java
index 8629cd9..6f6b8c5 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMapMessageFacade.java
@@ -72,4 +72,9 @@ public class JmsTestMapMessageFacade extends JmsTestMessageFacade implements Jms
public void clearBody() {
map.clear();
}
+
+ @Override
+ public boolean hasBody() {
+ return !map.isEmpty();
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java
index 3a6bf93..f1ccb4c 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestMessageFacade.java
@@ -60,6 +60,7 @@ public class JmsTestMessageFacade implements JmsMessageFacade {
protected int groupSequence;
protected Object messageId;
protected long expiration;
+ protected long deliveryTime;
protected long timestamp;
protected String correlationId;
protected boolean persistent;
@@ -283,6 +284,16 @@ public class JmsTestMessageFacade implements JmsMessageFacade {
}
@Override
+ public long getDeliveryTime() {
+ return deliveryTime;
+ }
+
+ @Override
+ public void setDeliveryTime(long deliveryTime) {
+ this.deliveryTime = deliveryTime;
+ }
+
+ @Override
public JmsDestination getDestination() {
return this.destination;
}
@@ -345,4 +356,9 @@ public class JmsTestMessageFacade implements JmsMessageFacade {
public void setGroupSequence(int groupSequence) {
this.groupSequence = groupSequence;
}
+
+ @Override
+ public boolean hasBody() {
+ return false;
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java
index 44bab21..a2fc530 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestObjectMessageFacade.java
@@ -96,4 +96,9 @@ public class JmsTestObjectMessageFacade extends JmsTestMessageFacade implements
this.object = serialized;
}
+
+ @Override
+ public boolean hasBody() {
+ return object != null && object.length > 0;
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java
index 983569c..aadee67 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestStreamMessageFacade.java
@@ -82,4 +82,9 @@ public class JmsTestStreamMessageFacade extends JmsTestMessageFacade implements
public void reset() {
index = -1;
}
+
+ @Override
+ public boolean hasBody() {
+ return !stream.isEmpty();
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.java
index f701570..a4a103f 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/test/JmsTestTextMessageFacade.java
@@ -54,4 +54,9 @@ public final class JmsTestTextMessageFacade extends JmsTestMessageFacade impleme
public void setText(String text) {
this.text = text;
}
+
+ @Override
+ public boolean hasBody() {
+ return text != null;
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java
index 8ef1643..51215a2 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/foreign/ForeignJmsMessage.java
@@ -265,4 +265,24 @@ public class ForeignJmsMessage implements Message {
public void clearBody() throws JMSException {
message.clearBody();
}
+
+ @Override
+ public long getJMSDeliveryTime() throws JMSException {
+ return message.getJMSDeliveryTime();
+ }
+
+ @Override
+ public void setJMSDeliveryTime(long delay) throws JMSException {
+ message.setJMSDeliveryTime(delay);
+ }
+
+ @Override
+ public <T> T getBody(Class<T> asType) throws JMSException {
+ return message.getBody(asType);
+ }
+
+ @Override
+ public boolean isBodyAssignableTo(@SuppressWarnings("rawtypes") Class target) throws JMSException {
+ return message.isBodyAssignableTo(target);
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsMessageProducerTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsMessageProducerTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsMessageProducerTest.java
index 7117e9f..a2629a9 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsMessageProducerTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsMessageProducerTest.java
@@ -26,6 +26,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import javax.jms.CompletionListener;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
@@ -35,7 +36,6 @@ import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
-import org.apache.qpid.jms.JmsCompletionListener;
import org.apache.qpid.jms.JmsConnectionFactory;
import org.apache.qpid.jms.JmsConnectionTestSupport;
import org.apache.qpid.jms.JmsDestination;
@@ -541,7 +541,7 @@ public class JmsMessageProducerTest extends JmsConnectionTestSupport {
}
}
- private class MyCompletionListener implements JmsCompletionListener {
+ private class MyCompletionListener implements CompletionListener {
private final List<Message> completed = new ArrayList<Message>();
private final List<Message> failed = new ArrayList<Message>();
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java
new file mode 100644
index 0000000..5a0938a
--- /dev/null
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/producer/JmsProducerTest.java
@@ -0,0 +1,182 @@
+/*
+ * 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.producer;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.UUID;
+
+import javax.jms.JMSProducer;
+import javax.jms.MessageFormatRuntimeException;
+
+import org.apache.qpid.jms.JmsConnectionTestSupport;
+import org.apache.qpid.jms.JmsContext;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Test various behaviors of the JMSProducer implementation.
+ */
+public class JmsProducerTest extends JmsConnectionTestSupport {
+
+ private JmsContext context;
+
+ private final String BAD_PROPERTY_NAME = "%_BAD_PROPERTY_NAME";
+ private final String GOOD_PROPERTY_NAME = "GOOD_PROPERTY_NAME";
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+
+ context = createJMSContextToMockProvider();
+ }
+
+ @Test
+ public void testGetPropertyNames() {
+ JMSProducer producer = context.createProducer();
+
+ producer.setProperty("Property_1", "1");
+ producer.setProperty("Property_2", "2");
+ producer.setProperty("Property_3", "3");
+
+ assertEquals(3, producer.getPropertyNames().size());
+
+ assertTrue(producer.getPropertyNames().contains("Property_1"));
+ assertTrue(producer.getPropertyNames().contains("Property_2"));
+ assertTrue(producer.getPropertyNames().contains("Property_3"));
+ }
+
+ @Test
+ public void testClearProperties() {
+ JMSProducer producer = context.createProducer();
+
+ producer.setProperty("Property_1", "1");
+ producer.setProperty("Property_2", "2");
+ producer.setProperty("Property_3", "3");
+
+ assertEquals(3, producer.getPropertyNames().size());
+
+ producer.clearProperties();
+
+ assertEquals(0, producer.getPropertyNames().size());
+ }
+
+ @Test
+ public void testSetStringPropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, "X");
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetBytePropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, (byte) 1);
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetBooleanPropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, true);
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetDoublePropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, 100.0);
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetFloatPropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, 100.0f);
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetShortPropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, (short) 100);
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetIntPropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, 100);
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetLongPropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, 100l);
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetObjectPropetryWithBadPropetyName() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(BAD_PROPERTY_NAME, UUID.randomUUID());
+ fail("Should not accept invalid property name");
+ } catch (IllegalArgumentException iae) {}
+ }
+
+ @Test
+ public void testSetObjectPropetryWithInvalidObject() {
+ JMSProducer producer = context.createProducer();
+
+ try {
+ producer.setProperty(GOOD_PROPERTY_NAME, UUID.randomUUID());
+ fail("Should not accept invalid property name");
+ } catch (MessageFormatRuntimeException mfre) {}
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
index d6dc443..301f93a 100644
--- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
+++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/failover/FailoverIntegrationTest.java
@@ -32,6 +32,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
+import javax.jms.CompletionListener;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.InvalidDestinationException;
@@ -46,7 +47,6 @@ import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
-import org.apache.qpid.jms.JmsCompletionListener;
import org.apache.qpid.jms.JmsConnection;
import org.apache.qpid.jms.JmsConnectionFactory;
import org.apache.qpid.jms.JmsDefaultConnectionListener;
@@ -1228,7 +1228,7 @@ public class FailoverIntegrationTest extends QpidJmsTestCase {
return "amqp://localhost:" + peer.getServerPort() + (params != null ? "?" + params : "");
}
- private class TestJmsCompletionListener implements JmsCompletionListener {
+ private class TestJmsCompletionListener implements CompletionListener {
private final CountDownLatch completed;
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/0c39522c/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsMessageIntegrityTest.java
----------------------------------------------------------------------
diff --git a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsMessageIntegrityTest.java b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsMessageIntegrityTest.java
index d09d7bc..c9ca39e 100644
--- a/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsMessageIntegrityTest.java
+++ b/qpid-jms-interop-tests/qpid-jms-activemq-tests/src/test/java/org/apache/qpid/jms/JmsMessageIntegrityTest.java
@@ -33,6 +33,7 @@ import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.MessageConsumer;
import javax.jms.MessageEOFException;
+import javax.jms.MessageFormatException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Session;
@@ -212,6 +213,7 @@ public class JmsMessageIntegrityTest extends AmqpTestSupport {
public int deliveryMode;
+ private long deliveryTime;
private String messageId;
private long timestamp;
private String correlationId;
@@ -447,6 +449,32 @@ public class JmsMessageIntegrityTest extends AmqpTestSupport {
public String getText() throws JMSException {
return text;
}
+
+ @Override
+ public void setJMSDeliveryTime(long deliveryTime) throws JMSException {
+ this.deliveryTime = deliveryTime;
+ }
+
+ @Override
+ public long getJMSDeliveryTime() throws JMSException {
+ return deliveryTime;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <T> T getBody(Class<T> target) throws JMSException {
+ if (isBodyAssignableTo(target)) {
+ return (T) text;
+ }
+
+ throw new MessageFormatException("Cannot covert body to type: " + target.getName());
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean isBodyAssignableTo(@SuppressWarnings("rawtypes") Class target) throws JMSException {
+ return target.isAssignableFrom(String.class);
+ }
}
// TODO - implement proper handling of foreign JMS Message and Destination types.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org