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 <rob...@apache.org> Authored: Sat Sep 27 17:48:24 2014 +0100 Committer: Robert Gemmell <rob...@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-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org