org.springframework.integration.handler
Class AbstractReplyProducingMessageHandler

java.lang.Object
  extended by org.springframework.integration.handler.AbstractMessageHandler
      extended by org.springframework.integration.handler.AbstractReplyProducingMessageHandler
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.core.Ordered, MessageHandler
Direct Known Subclasses:
AbstractMessageSplitter, AbstractRemotingOutboundGateway, AbstractWebServiceOutboundGateway, BridgeHandler, FileWritingMessageHandler, GatewayInvokingMessageHandler, HttpOutboundEndpoint, JmsOutboundGateway, MessageFilter, MessageTransformingHandler, ServiceActivatingHandler

public abstract class AbstractReplyProducingMessageHandler
extends AbstractMessageHandler
implements org.springframework.beans.factory.BeanFactoryAware

Base class for MessageHandlers that are capable of producing replies.

Author:
Mark Fisher, Iwein Fuld

Field Summary
static long DEFAULT_SEND_TIMEOUT
           
 
Fields inherited from class org.springframework.integration.handler.AbstractMessageHandler
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
AbstractReplyProducingMessageHandler()
           
 
Method Summary
protected  MessageChannel getOutputChannel()
           
protected  void handleMessageInternal(Message<?> message)
          
protected abstract  java.lang.Object handleRequestMessage(Message<?> requestMessage)
          Subclasses must implement this method to handle the request Message.
protected  void handleResult(java.lang.Object result, MessageHeaders requestHeaders, MessageChannel replyChannel)
           
protected  boolean sendReplyMessage(Message<?> replyMessage, MessageChannel replyChannel)
           
 void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
           
 void setChannelResolver(ChannelResolver channelResolver)
          Set the ChannelResolver to be used when there is no default output channel.
 void setOutputChannel(MessageChannel outputChannel)
           
 void setRequiresReply(boolean requiresReply)
          Flag wether reply is required.
 void setSendTimeout(long sendTimeout)
          Set the timeout for sending reply Messages.
 
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
getOrder, handleMessage, resolveReplyChannel, setOrder
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_SEND_TIMEOUT

public static final long DEFAULT_SEND_TIMEOUT
See Also:
Constant Field Values
Constructor Detail

AbstractReplyProducingMessageHandler

public AbstractReplyProducingMessageHandler()
Method Detail

setOutputChannel

public void setOutputChannel(MessageChannel outputChannel)

getOutputChannel

protected MessageChannel getOutputChannel()

setSendTimeout

public void setSendTimeout(long sendTimeout)
Set the timeout for sending reply Messages.


setChannelResolver

public void setChannelResolver(ChannelResolver channelResolver)
Set the ChannelResolver to be used when there is no default output channel.


setRequiresReply

public void setRequiresReply(boolean requiresReply)
Flag wether reply is required. If true an incoming message MUST result in a reply message being sent. If false an incoming message MAY result in a reply message being sent


setBeanFactory

public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)
Specified by:
setBeanFactory in interface org.springframework.beans.factory.BeanFactoryAware

handleMessageInternal

protected final void handleMessageInternal(Message<?> message)

Specified by:
handleMessageInternal in class AbstractMessageHandler

handleResult

protected void handleResult(java.lang.Object result,
                            MessageHeaders requestHeaders,
                            MessageChannel replyChannel)

sendReplyMessage

protected boolean sendReplyMessage(Message<?> replyMessage,
                                   MessageChannel replyChannel)

handleRequestMessage

protected abstract java.lang.Object handleRequestMessage(Message<?> requestMessage)
Subclasses must implement this method to handle the request Message. The return value may be a Message, a MessageBuilder, or any plain Object. The base class will handle the final creation of a reply Message from any of those starting points. If the return value is null, the Message flow will end here.