From a7acc623715023972b87b03f4c8174a4d364d409 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Fri, 8 Aug 2008 21:30:49 +0000 Subject: [PATCH] Added CompositeMessage and added the 'nextTarget' header to MessageHeaders (and the corresponding methods in MessageBuilder). --- .../integration/message/CompositeMessage.java | 43 +++++++++++++++++++ .../integration/message/MessageBuilder.java | 14 +++++- .../integration/message/MessageHeaders.java | 6 +++ 3 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 org.springframework.integration/src/main/java/org/springframework/integration/message/CompositeMessage.java diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/message/CompositeMessage.java b/org.springframework.integration/src/main/java/org/springframework/integration/message/CompositeMessage.java new file mode 100644 index 0000000000..d7e0fa8645 --- /dev/null +++ b/org.springframework.integration/src/main/java/org/springframework/integration/message/CompositeMessage.java @@ -0,0 +1,43 @@ +/* + * Copyright 2002-2008 the original author or authors. + * + * Licensed 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.springframework.integration.message; + +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + + +/** + * @author Mark Fisher + */ +public class CompositeMessage extends GenericMessage>> implements Iterable> { + + public CompositeMessage(Message[] messages) { + this(Arrays.asList(messages)); + } + + public CompositeMessage(List> messages) { + super(Collections.unmodifiableList(messages)); + } + + + public Iterator> iterator() { + return this.getPayload().iterator(); + } + +} diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageBuilder.java b/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageBuilder.java index 40521b3f54..1e6b40f688 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageBuilder.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageBuilder.java @@ -111,7 +111,19 @@ public final class MessageBuilder { return this.setHeader(MessageHeaders.CORRELATION_ID, correlationId); } - public MessageBuilder setReturnAddress(Object returnAddress) { + public MessageBuilder setNextTarget(MessageTarget nextTarget) { + return this.setHeader(MessageHeaders.NEXT_TARGET, nextTarget); + } + + public MessageBuilder setNextTarget(String nextTarget) { + return this.setHeader(MessageHeaders.NEXT_TARGET, nextTarget); + } + + public MessageBuilder setReturnAddress(MessageTarget returnAddress) { + return this.setHeader(MessageHeaders.RETURN_ADDRESS, returnAddress); + } + + public MessageBuilder setReturnAddress(String returnAddress) { return this.setHeader(MessageHeaders.RETURN_ADDRESS, returnAddress); } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageHeaders.java b/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageHeaders.java index 8b5d4817c3..673292e816 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageHeaders.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/message/MessageHeaders.java @@ -36,6 +36,8 @@ public final class MessageHeaders implements Map, Serializable { public static final String CORRELATION_ID = "internal.header.correlationId"; + public static final String NEXT_TARGET = "internal.header.nextTarget"; + public static final String RETURN_ADDRESS = "internal.header.returnAddress"; public static final String EXPIRATION_DATE = "internal.header.exprirationDate"; @@ -72,6 +74,10 @@ public final class MessageHeaders implements Map, Serializable { return this.get(RETURN_ADDRESS); } + public Object getNextTarget() { + return this.get(NEXT_TARGET); + } + public Integer getSequenceNumber() { Integer sequenceNumber = this.get(SEQUENCE_NUMBER, Integer.class); return (sequenceNumber != null ? sequenceNumber : 0);