You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2014/09/29 18:27:08 UTC

[07/11] git commit: add support for [single] amqp-sequence bodies

add support for [single] amqp-sequence bodies


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/161bba63
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/161bba63
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/161bba63

Branch: refs/heads/master
Commit: 161bba63398f5f92083428d9509f6fbd02935c4b
Parents: 88945f1
Author: Robert Gemmell <ro...@apache.org>
Authored: Sat Sep 27 17:48:24 2014 +0100
Committer: Robert Gemmell <ro...@apache.org>
Committed: Mon Sep 29 17:09:37 2014 +0100

----------------------------------------------------------------------
 .../amqp/message/AmqpJmsMessageBuilder.java     |  5 ++--
 .../message/AmqpJmsStreamMessageFacade.java     | 24 ++++++++++++++++----
 2 files changed, 22 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/161bba63/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilder.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilder.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilder.java
index 9eeef20..889a27e 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilder.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsMessageBuilder.java
@@ -38,6 +38,7 @@ import org.apache.qpid.jms.message.JmsStreamMessage;
 import org.apache.qpid.jms.message.JmsTextMessage;
 import org.apache.qpid.jms.provider.amqp.AmqpConsumer;
 import org.apache.qpid.proton.amqp.Binary;
+import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
 import org.apache.qpid.proton.amqp.messaging.AmqpValue;
 import org.apache.qpid.proton.amqp.messaging.Data;
 import org.apache.qpid.proton.amqp.messaging.Section;
@@ -143,8 +144,8 @@ public class AmqpJmsMessageBuilder {
             } else {
                 return createObjectMessage(consumer, message);
             }
-        } else {
-            // TODO: AmqpSequence support
+        } else if (body instanceof AmqpSequence) {
+            return createStreamMessage(consumer, message);
         }
 
         return null;

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/161bba63/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacade.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacade.java
index 0955aed..fae76e6 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacade.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/message/AmqpJmsStreamMessageFacade.java
@@ -29,6 +29,7 @@ import org.apache.qpid.jms.message.facade.JmsStreamMessageFacade;
 import org.apache.qpid.jms.provider.amqp.AmqpConnection;
 import org.apache.qpid.jms.provider.amqp.AmqpConsumer;
 import org.apache.qpid.proton.amqp.Binary;
+import org.apache.qpid.proton.amqp.messaging.AmqpSequence;
 import org.apache.qpid.proton.amqp.messaging.AmqpValue;
 import org.apache.qpid.proton.amqp.messaging.Section;
 import org.apache.qpid.proton.message.Message;
@@ -50,7 +51,7 @@ public class AmqpJmsStreamMessageFacade extends AmqpJmsMessageFacade implements
      */
     public AmqpJmsStreamMessageFacade(AmqpConnection connection) {
         super(connection);
-        list = initializeEmptyList();
+        list = initializeEmptyBodyList(false);
         setAnnotation(JMS_MSG_TYPE, JMS_STREAM_MESSAGE);
     }
 
@@ -69,17 +70,25 @@ public class AmqpJmsStreamMessageFacade extends AmqpJmsMessageFacade implements
 
         Section body = getAmqpMessage().getBody();
         if (body == null) {
-            list = initializeEmptyList();
+            list = initializeEmptyBodyList(false);
         } else if (body instanceof AmqpValue) {
             Object value = ((AmqpValue) body).getValue();
 
             if (value == null) {
-                list = initializeEmptyList();
+                list = initializeEmptyBodyList(false);
             } else if (value instanceof List) {
                 list = (List<Object>) value;
             } else {
                 throw new IllegalStateException("Unexpected amqp-value body content type: " + value.getClass().getSimpleName());
             }
+        } else if (body instanceof AmqpSequence) {
+            List<?> value = ((AmqpSequence) body).getValue();
+
+            if (value == null) {
+                list = initializeEmptyBodyList(true);
+            } else {
+                list = (List<Object>) value;
+            }
         } else {
             throw new IllegalStateException("Unexpected message body type: " + body.getClass().getSimpleName());
         }
@@ -157,9 +166,14 @@ public class AmqpJmsStreamMessageFacade extends AmqpJmsMessageFacade implements
         return list.isEmpty();
     }
 
-    private List<Object> initializeEmptyList() {
+    private List<Object> initializeEmptyBodyList(boolean useSequenceBody) {
         List<Object> emptyList = new ArrayList<Object>();
-        message.setBody(new AmqpValue(emptyList));
+
+        if (useSequenceBody) {
+            message.setBody(new AmqpSequence(emptyList));
+        } else {
+            message.setBody(new AmqpValue(emptyList));
+        }
 
         return emptyList;
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org