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

Reply via email to