org.springframework.integration.splitter
Class SplitterMessageHandler
java.lang.Object
org.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.splitter.SplitterMessageHandler
- All Implemented Interfaces:
- org.springframework.beans.factory.InitializingBean, org.springframework.core.Ordered, MessageHandler
public class SplitterMessageHandler
- extends AbstractMessageHandler
A MessageHandler
implementation for splitting a single Message
into multiple reply Messages. If an object and method (or methodName)
pair are provided, the provided method will be invoked and its return
value will be split if it is a Collection or Array. If no object and
method are provided, this handler will split the Message payload
itself if it is a Collection or an Array. In either case, if the
Message payload or return value from a Method invocation is not a
Collection or Array, then the single Object will be returned as the
payload of a single reply Message.
- Author:
- Mark Fisher
Fields inherited from interface org.springframework.core.Ordered |
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
delimiters
private volatile java.lang.String delimiters
SplitterMessageHandler
public SplitterMessageHandler(java.lang.Object object,
java.lang.reflect.Method method)
SplitterMessageHandler
public SplitterMessageHandler(java.lang.Object object,
java.lang.String methodName)
SplitterMessageHandler
public SplitterMessageHandler()
setDelimiters
public void setDelimiters(java.lang.String delimiters)
- Set delimiters to use for tokenizing String values. The default
is
null
indicating that no tokenization should occur.
If delimiters are provided, they will be applied to any String
payload, or if an Object and Method have been provided, tokenization
will be applied to any String return value from the invoked Method.
createReplyMessage
protected CompositeMessage createReplyMessage(java.lang.Object result,
Message<?> requestMessage)
- Description copied from class:
AbstractMessageHandler
- Subclasses must implement this method to generate the reply Message when
the return value is not a Message instance.
- Specified by:
createReplyMessage
in class AbstractMessageHandler
- Parameters:
result
- the return value from an adapter method, or the Message payload if not acting as an adapterrequestMessage
- the original request Message
- Returns:
- the Message to be sent to the reply MessageTarget
postProcessReplyMessage
protected Message<?> postProcessReplyMessage(Message<?> replyMessage,
Message<?> requestMessage)
- Description copied from class:
AbstractMessageHandler
- Subclasses must implement this method to process a return value that
is already a Message instance.
- Specified by:
postProcessReplyMessage
in class AbstractMessageHandler
- Parameters:
replyMessage
- the Message returned from an adapter methodrequestMessage
- the original request Message
- Returns:
- the Message to be sent to the reply MessageTarget
createSplitMessage
private Message<?> createSplitMessage(java.lang.Object item,
MessageHeaders requestHeaders,
int sequenceNumber,
int sequenceSize)
setSplitMessageHeaders
private Message<?> setSplitMessageHeaders(MessageBuilder<?> builder,
java.lang.Object requestMessageId,
int sequenceNumber,
int sequenceSize)