Repository: qpid-jms Updated Branches: refs/heads/master ea1876982 -> df82aeac5
Add test for setType / getType and fix setType to remove the annotation if the value applied is null. Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/4b04d693 Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/4b04d693 Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/4b04d693 Branch: refs/heads/master Commit: 4b04d693abcdd336021903bc8cd56ab5588e503d Parents: ea18769 Author: Timothy Bish <tabish...@gmail.com> Authored: Fri Oct 10 15:36:48 2014 -0400 Committer: Timothy Bish <tabish...@gmail.com> Committed: Fri Oct 10 15:36:48 2014 -0400 ---------------------------------------------------------------------- .../amqp/message/AmqpJmsMessageFacade.java | 6 ++- .../amqp/message/AmqpJmsMessageFacadeTest.java | 51 ++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4b04d693/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java index 1fd1048..e7d017f 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacade.java @@ -534,7 +534,11 @@ public class AmqpJmsMessageFacade implements JmsMessageFacade { @Override public void setType(String type) { - setMessageAnnotation(JMS_TYPE, type); + if (type != null) { + setMessageAnnotation(JMS_TYPE, type); + } else { + removeMessageAnnotation(JMS_TYPE); + } } @Override http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4b04d693/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java index 7346559..bee8a92 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageFacadeTest.java @@ -58,6 +58,7 @@ import org.apache.qpid.proton.amqp.messaging.MessageAnnotations; import org.apache.qpid.proton.amqp.messaging.Properties; import org.apache.qpid.proton.codec.impl.DataImpl; import org.apache.qpid.proton.message.Message; +import org.apache.qpid.proton.message.impl.MessageImpl; import org.junit.Test; import org.mockito.Mockito; @@ -1448,6 +1449,56 @@ public class AmqpJmsMessageFacadeTest extends AmqpJmsMessageTypesTestCase { assertNull(underlying.getMessageAnnotations()); } + // ====== Type ======= + + @Test + public void testGetJMSTypeIsNullOnNewMessage() throws Exception { + AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade(); + assertNull("did not expect a JMSType value to be present", amqpMessageFacade.getType()); + } + + @Test + public void testSetJMSTypeSetsUnderlyingMessageAnnotation() throws Exception { + String jmsType = "myJMSType"; + AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade(); + amqpMessageFacade.setType(jmsType); + + assertTrue("MessageAnnotation should exist to hold JMSType value", + amqpMessageFacade.messageAnnotationExists(AmqpMessageSupport.JMS_TYPE)); + assertEquals("MessageAnnotation should be set to the provded JMSType string", jmsType, + amqpMessageFacade.getMessageAnnotation(AmqpMessageSupport.JMS_TYPE)); + } + + @Test + public void testSetTypeNullClearsExistingValue() throws Exception { + String jmsType = "myJMSType"; + AmqpJmsMessageFacade amqpMessageFacade = createNewMessageFacade(); + + amqpMessageFacade.setType(jmsType); + assertTrue("MessageAnnotation should exist to hold JMSType value", + amqpMessageFacade.messageAnnotationExists(AmqpMessageSupport.JMS_TYPE)); + amqpMessageFacade.setType(null); + assertNull("JMSType value was not as expected", amqpMessageFacade.getType()); + assertFalse("MessageAnnotation should exist to hold JMSType value", + amqpMessageFacade.messageAnnotationExists(AmqpMessageSupport.JMS_TYPE)); + } + + /** + * Test that {@link MessageImpl#getJMSType()} returns the expected value for a message + * received with the {@link ClientProperties#X_OPT_JMS_TYPE} message annotation set. + */ + @Test + public void testGetJMSTypeWithReceivedMessage() throws Exception { + String myJMSType = "myJMSType"; + + Message message = Proton.message(); + Map<Symbol, Object> annotationsMap = new HashMap<Symbol, Object>(); + annotationsMap.put(Symbol.valueOf(AmqpMessageSupport.JMS_TYPE), myJMSType); + message.setMessageAnnotations(new MessageAnnotations(annotationsMap)); + AmqpJmsMessageFacade amqpMessageFacade = createReceivedMessageFacade(createMockAmqpConsumer(), message); + + assertEquals("JMSType value was not as expected", myJMSType, amqpMessageFacade.getType()); + } // ====== AMQP Application Properties ======= // ========================================== --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org