org.springframework.integration.filter
Class MessageFilter

java.lang.Object
  extended by org.springframework.integration.handler.AbstractMessageHandler
      extended by org.springframework.integration.handler.AbstractReplyProducingMessageHandler
          extended by org.springframework.integration.filter.MessageFilter
All Implemented Interfaces:
org.springframework.beans.factory.BeanFactoryAware, org.springframework.core.Ordered, MessageHandler

public class MessageFilter
extends AbstractReplyProducingMessageHandler

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

Field Summary
 
Fields inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
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
MessageFilter(MessageSelector selector)
          Create a MessageFilter that will delegate to the given MessageSelector.
 
Method Summary
protected  void handleRequestMessage(Message<?> message, ReplyMessageHolder replyHolder)
           
 void setDiscardChannel(MessageChannel discardChannel)
          Specify a channel where rejected Messages should be sent.
 void setThrowExceptionOnRejection(boolean throwExceptionOnRejection)
          Specify whether this filter should throw a MessageRejectedException when its selector does not accept a Message.
 
Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
getOutputChannel, handleMessageInternal, sendReplyMessage, setBeanFactory, setChannelResolver, setOutputChannel, setRequiresReply, setSendTimeout
 
Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler
getOrder, handleMessage, setOrder
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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)

handleRequestMessage

protected void handleRequestMessage(Message<?> message,
                                    ReplyMessageHolder replyHolder)
Specified by:
handleRequestMessage in class AbstractReplyProducingMessageHandler