Spring Integration

org.springframework.integration.handler.advice
Class ExpressionEvaluatingRequestHandlerAdvice

java.lang.Object
  extended by org.springframework.integration.context.IntegrationObjectSupport
      extended by org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice
          extended by org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice
All Implemented Interfaces:
org.aopalliance.aop.Advice, org.aopalliance.intercept.Interceptor, org.aopalliance.intercept.MethodInterceptor, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware, NamedComponent

public class ExpressionEvaluatingRequestHandlerAdvice
extends AbstractRequestHandlerAdvice

Used to advise MessageHandlers. Two expressions 'onSuccessExpression' and 'onFailureExpression' are evaluated when appropriate. If the evaluation returns a result, a message is sent to the onSuccessChannel or onFailureChannel as appropriate; the message is the input message with a header MessageHeaders.POSTPROCESS_RESULT containing the evaluation result. The failure expression is NOT evaluated if the success expression throws an exception.

Since:
2.2
Author:
Gary Russell

Nested Class Summary
static class ExpressionEvaluatingRequestHandlerAdvice.MessageHandlingExpressionEvaluatingAdviceException
           
 
Nested classes/interfaces inherited from class org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice
AbstractRequestHandlerAdvice.ExecutionCallback
 
Field Summary
 
Fields inherited from class org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice
logger
 
Constructor Summary
ExpressionEvaluatingRequestHandlerAdvice()
           
 
Method Summary
protected  org.springframework.expression.spel.support.StandardEvaluationContext createEvaluationContext()
           
protected  java.lang.Object doInvoke(AbstractRequestHandlerAdvice.ExecutionCallback callback, java.lang.Object target, Message<?> message)
          Subclasses implement this method to apply behavior to the MessageHandler.
 void setFailureChannel(MessageChannel failureChannel)
           
 void setOnFailureExpression(java.lang.String onFailureExpression)
           
 void setOnSuccessExpression(java.lang.String onSuccessExpression)
           
 void setPropagateEvaluationFailures(boolean propagateOnSuccessEvaluationFailures)
          If true and an onSuccess expression evaluation fails with an exception, the exception will be thrown to the caller.
 void setReturnFailureExpressionResult(boolean returnFailureExpressionResult)
          If true, the result of evaluating the onFailureExpression will be returned as the result of AbstractReplyProducingMessageHandler.handleRequestMessage(Message).
 void setSuccessChannel(MessageChannel successChannel)
           
 void setTrapException(boolean trapException)
          If true, any exception will be caught and null returned.
 
Methods inherited from class org.springframework.integration.handler.advice.AbstractRequestHandlerAdvice
invoke, unwrapExceptionIfNecessary, unwrapThrowableIfNecessary
 
Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, getApplicationContextId, getBeanFactory, getComponentName, getComponentType, getConversionService, getTaskScheduler, onInit, setApplicationContext, setBeanFactory, setBeanName, setComponentName, setConversionService, setTaskScheduler, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ExpressionEvaluatingRequestHandlerAdvice

public ExpressionEvaluatingRequestHandlerAdvice()
Method Detail

setOnSuccessExpression

public void setOnSuccessExpression(java.lang.String onSuccessExpression)

setOnFailureExpression

public void setOnFailureExpression(java.lang.String onFailureExpression)

setSuccessChannel

public void setSuccessChannel(MessageChannel successChannel)

setFailureChannel

public void setFailureChannel(MessageChannel failureChannel)

setTrapException

public void setTrapException(boolean trapException)
If true, any exception will be caught and null returned. Default false.

Parameters:
trapException -

setReturnFailureExpressionResult

public void setReturnFailureExpressionResult(boolean returnFailureExpressionResult)
If true, the result of evaluating the onFailureExpression will be returned as the result of AbstractReplyProducingMessageHandler.handleRequestMessage(Message).

Parameters:
returnFailureExpressionResult -

setPropagateEvaluationFailures

public void setPropagateEvaluationFailures(boolean propagateOnSuccessEvaluationFailures)
If true and an onSuccess expression evaluation fails with an exception, the exception will be thrown to the caller. If false, the exception is caught. Default false. Ignored for onFailure expression evaluation - the original exception will be propagated (unless trapException is true).

Parameters:
propagateOnSuccessEvaluationFailures -

doInvoke

protected java.lang.Object doInvoke(AbstractRequestHandlerAdvice.ExecutionCallback callback,
                                    java.lang.Object target,
                                    Message<?> message)
                             throws java.lang.Exception
Description copied from class: AbstractRequestHandlerAdvice
Subclasses implement this method to apply behavior to the MessageHandler.

callback.execute() invokes the handler method and returns its result, or null.

Specified by:
doInvoke in class AbstractRequestHandlerAdvice
Parameters:
callback - Subclasses invoke the execute() method on this interface to invoke the handler method.
target - The target handler.
message - The message that will be sent to the handler.
Returns:
the result after invoking the MessageHandler.
Throws:
java.lang.Exception

createEvaluationContext

protected org.springframework.expression.spel.support.StandardEvaluationContext createEvaluationContext()

Spring Integration