Spring Integration

org.springframework.integration.filter
Class MessageFilter

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.handler.AbstractMessageHandler
          extended by org.springframework.integration.handler.AbstractReplyProducingMessageHandler
              extended by org.springframework.integration.handler.AbstractReplyProducingPostProcessingMessageHandler
                  extended by org.springframework.integration.filter.MessageFilter
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware, org.springframework.core.Ordered, NamedComponent, Orderable, MessageHandler, MessageProducer, PostProcessingMessageHandler, TrackableComponent

public class MessageFilter
extends AbstractReplyProducingPostProcessingMessageHandler

Message Handler that delegates to a MessageSelector. If and only if the selector accepts the Message, it will be passed to this filter's output channel. Otherwise the message will either be silently dropped (the default) or will trigger the throwing of a MessageRejectedException depending on the value of its throwExceptionOnRejection property. If a discard channel is provided, the rejected Messages will be sent to that channel.

Author:
Mark Fisher, Oleg Zhurakousky, Gary Russell

Nested Class Summary
 
Nested classes/interfaces inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
AbstractReplyProducingMessageHandler.RequestHandler
 
Field Summary
 
Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
logger
 
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
 
Constructor Summary
MessageFilter(MessageSelector selector)
          Create a MessageFilter that will delegate to the given MessageSelector.
 
Method Summary
protected  java.lang.Object doHandleRequestMessage(Message<?> message)
           
 java.lang.String getComponentType()
          Subclasses may implement this method to provide component type information.
 void onInit()
          Subclasses may implement this for initialization logic.
 java.lang.Object postProcess(Message<?> message, java.lang.Object result)
          Take some further action on the result and/or message.
 void setDiscardChannel(MessageChannel discardChannel)
          Specify a channel where rejected Messages should be sent.
 void setDiscardWithinAdvice(boolean discardWithinAdvice)
          Set to 'true' if you wish the discard processing to occur within any request handler advice applied to this filter.
 void setThrowExceptionOnRejection(boolean throwExceptionOnRejection)
          Specify whether this filter should throw a MessageRejectedException when its selector does not accept a Message.
protected  boolean shouldCopyRequestHeaders()
          Subclasses may override this.
 
Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingPostProcessingMessageHandler
doInvokeAdvisedRequestHandler, handleRequestMessage, setPostProcessWithinAdvice
 
Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
getMessagingTemplate, handleMessageInternal, hasAdviceChain, setAdviceChain, setBeanClassLoader, setChannelResolver, setOutputChannel, setRequiresReply, setSendTimeout
 
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
getOrder, handleMessage, setOrder, setShouldTrack
 
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, getApplicationContextId, getBeanFactory, getComponentName, getConversionService, getTaskScheduler, setApplicationContext, 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

MessageFilter

public MessageFilter(MessageSelector selector)
Create a MessageFilter that will delegate to the given MessageSelector.

Method Detail

setThrowExceptionOnRejection

public void setThrowExceptionOnRejection(boolean throwExceptionOnRejection)
Specify whether this filter should throw a MessageRejectedException when its selector does not accept a Message. The default value is false meaning that rejected Messages will be quietly dropped or sent to the discard channel if available. Typically this value would not be true when a discard channel is provided, but if so, it will still apply (in such a case, the Message will be sent to the discard channel, and then the exception will be thrown).

See Also:
setDiscardChannel(MessageChannel)

setDiscardChannel

public void setDiscardChannel(MessageChannel discardChannel)
Specify a channel where rejected Messages should be sent. If the discard channel is null (the default), rejected Messages will be dropped. However, the 'throwExceptionOnRejection' flag determines whether rejected Messages trigger an exception. That value is evaluated regardless of the presence of a discard channel.

See Also:
setThrowExceptionOnRejection(boolean)

setDiscardWithinAdvice

public void setDiscardWithinAdvice(boolean discardWithinAdvice)
Set to 'true' if you wish the discard processing to occur within any request handler advice applied to this filter. Also applies to throwing an exception on rejection. Default: true.


getComponentType

public java.lang.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

public final void onInit()
Description copied from class: IntegrationObjectSupport
Subclasses may implement this for initialization logic.

Overrides:
onInit in class AbstractReplyProducingMessageHandler

doHandleRequestMessage

protected java.lang.Object doHandleRequestMessage(Message<?> message)
Specified by:
doHandleRequestMessage in class AbstractReplyProducingPostProcessingMessageHandler

postProcess

public java.lang.Object postProcess(Message<?> message,
                                    java.lang.Object result)
Description copied from interface: PostProcessingMessageHandler
Take some further action on the result and/or message.

Parameters:
message - The message.
result - The result from AbstractMessageHandler.handleMessageInternal(Message).
Returns:
The post-processed result.

shouldCopyRequestHeaders

protected boolean shouldCopyRequestHeaders()
Description copied from class: AbstractReplyProducingMessageHandler
Subclasses may override this. True by default.

Overrides:
shouldCopyRequestHeaders in class AbstractReplyProducingMessageHandler

Spring Integration