Spring Integration

org.springframework.integration.handler
Class MessageHandlerChain

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.handler.AbstractMessageHandler
          extended by org.springframework.integration.handler.MessageHandlerChain
All Implemented Interfaces:
BeanFactoryAware, BeanNameAware, InitializingBean, Ordered, NamedComponent, MessageHandler, MessageProducer, TrackableComponent

public class MessageHandlerChain
extends AbstractMessageHandler
implements MessageProducer, Ordered

A composite MessageHandler implementation that invokes a chain of MessageHandler instances in order.

Each of the handlers except for the last one must implement the MessageProducer interface. The last handler must also if the chain itself has an output channel configured. No other assumptions are made about the type of handler.

It is expected that each handler will produce reply messages and send them to its output channel, although this is not enforced. It is possible to filter messages in the middle of the chain, for example using a MessageFilter. A MessageHandler returning null will have the same effect, although this option is less expressive.

This component can be used from the namespace to improve the readability of the configuration by removing channels that can be created implicitly.

 <chain>
     <filter ref="someFilter"/>
     <bean class="SomeMessageHandlerImplementation"/>
     <transformer ref="someTransformer"/>
     <aggregator ... />
 </chain>
 

Author:
Mark Fisher, Iwein Fuld

Field Summary
 
Fields inherited from class org.springframework.integration.handler.AbstractMessageHandler
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
MessageHandlerChain()
           
 
Method Summary
 String getComponentType()
          Subclasses may implement this method to provide component type information.
 int getOrder()
           
protected  void handleMessageInternal(Message<?> message)
           
protected  void onInit()
          Subclasses may implement this for initialization logic.
 void setHandlers(List<MessageHandler> handlers)
           
 void setOrder(int order)
           
 void setOutputChannel(MessageChannel outputChannel)
          Specify the MessageChannel to which produced Messages should be sent.
 void setSendTimeout(long sendTimeout)
           
 
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
handleMessage, setShouldTrack
 
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, getBeanFactory, getComponentName, getConversionService, getRequiredMetadataPersister, getTaskScheduler, setBeanFactory, setBeanName, setComponentName, setConversionService, setTaskScheduler, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.integration.context.NamedComponent
getComponentName
 

Constructor Detail

MessageHandlerChain

public MessageHandlerChain()
Method Detail

setHandlers

public void setHandlers(List<MessageHandler> handlers)

setOutputChannel

public void setOutputChannel(MessageChannel outputChannel)
Description copied from interface: MessageProducer
Specify the MessageChannel to which produced Messages should be sent.

Specified by:
setOutputChannel in interface MessageProducer

setSendTimeout

public void setSendTimeout(long sendTimeout)

setOrder

public void setOrder(int order)
Overrides:
setOrder in class AbstractMessageHandler

getOrder

public int getOrder()
Specified by:
getOrder in interface Ordered
Overrides:
getOrder in class AbstractMessageHandler

getComponentType

public String getComponentType()
Description copied from class: IntegrationObjectSupport
Subclasses may implement this method to provide component type information.

Specified by:
getComponentType in interface NamedComponent
Overrides:
getComponentType in class AbstractMessageHandler

onInit

protected void onInit()
               throws Exception
Description copied from class: IntegrationObjectSupport
Subclasses may implement this for initialization logic.

Overrides:
onInit in class IntegrationObjectSupport
Throws:
Exception

handleMessageInternal

protected void handleMessageInternal(Message<?> message)
                              throws Exception
Specified by:
handleMessageInternal in class AbstractMessageHandler
Throws:
Exception

Spring Integration

Copyright © 2010. All Rights Reserved.