Spring Web Flow

org.springframework.webflow.engine.support
Class TransitionExecutingFlowExecutionExceptionHandler

java.lang.Object
  extended by org.springframework.webflow.engine.support.TransitionExecutingFlowExecutionExceptionHandler
All Implemented Interfaces:
FlowExecutionExceptionHandler

public class TransitionExecutingFlowExecutionExceptionHandler
extends java.lang.Object
implements FlowExecutionExceptionHandler

A flow execution exception handler that maps the occurrence of a specific type of exception to a transition to a new State.

The handled FlowExecutionException will be exposed in flash scope as FLOW_EXECUTION_EXCEPTION_ATTRIBUTE. The underlying root cause of that exception will be exposed in flash scope as ROOT_CAUSE_EXCEPTION_ATTRIBUTE.

Author:
Keith Donald

Field Summary
static java.lang.String FLOW_EXECUTION_EXCEPTION_ATTRIBUTE
          The name of the attribute to expose a handled exception under in flash scope ("flowExecutionException").
static java.lang.String ROOT_CAUSE_EXCEPTION_ATTRIBUTE
          The name of the attribute to expose a root cause of a handled exception under in flash scope ("rootCauseException").
 
Constructor Summary
TransitionExecutingFlowExecutionExceptionHandler()
           
 
Method Summary
 TransitionExecutingFlowExecutionExceptionHandler add(java.lang.Class<? extends java.lang.Throwable> exceptionClass, java.lang.String targetStateId)
          Adds an exception-to-target state mapping to this handler.
 TransitionExecutingFlowExecutionExceptionHandler add(java.lang.Class<? extends java.lang.Throwable> exceptionClass, TargetStateResolver targetStateResolver)
          Adds a exception-to-target state resolver mapping to this handler.
 boolean canHandle(FlowExecutionException e)
          Can this handler handle the given exception?
protected  void exposeException(RequestContext context, FlowExecutionException exception, java.lang.Throwable rootCause)
          Exposes the given flow exception and root cause in flash scope to make them available for response rendering.
 ActionList getActionList()
          Returns the list of actions to execute when this handler handles an exception.
protected  TargetStateResolver getTargetStateResolver(java.lang.Throwable e)
          Find the mapped target state resolver for given exception.
 void handle(FlowExecutionException exception, RequestControlContext context)
          Handle the exception in the context of the current request.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FLOW_EXECUTION_EXCEPTION_ATTRIBUTE

public static final java.lang.String FLOW_EXECUTION_EXCEPTION_ATTRIBUTE
The name of the attribute to expose a handled exception under in flash scope ("flowExecutionException").

See Also:
Constant Field Values

ROOT_CAUSE_EXCEPTION_ATTRIBUTE

public static final java.lang.String ROOT_CAUSE_EXCEPTION_ATTRIBUTE
The name of the attribute to expose a root cause of a handled exception under in flash scope ("rootCauseException").

See Also:
Constant Field Values
Constructor Detail

TransitionExecutingFlowExecutionExceptionHandler

public TransitionExecutingFlowExecutionExceptionHandler()
Method Detail

add

public TransitionExecutingFlowExecutionExceptionHandler add(java.lang.Class<? extends java.lang.Throwable> exceptionClass,
                                                            java.lang.String targetStateId)
Adds an exception-to-target state mapping to this handler.

Parameters:
exceptionClass - the type of exception to map
targetStateId - the id of the state to transition to if the specified type of exception is handled
Returns:
this handler, to allow for adding multiple mappings in a single statement

add

public TransitionExecutingFlowExecutionExceptionHandler add(java.lang.Class<? extends java.lang.Throwable> exceptionClass,
                                                            TargetStateResolver targetStateResolver)
Adds a exception-to-target state resolver mapping to this handler.

Parameters:
exceptionClass - the type of exception to map
targetStateResolver - the resolver to calculate the state to transition to if the specified type of exception is handled
Returns:
this handler, to allow for adding multiple mappings in a single statement

getActionList

public ActionList getActionList()
Returns the list of actions to execute when this handler handles an exception. The returned list is mutable.


canHandle

public boolean canHandle(FlowExecutionException e)
Description copied from interface: FlowExecutionExceptionHandler
Can this handler handle the given exception?

Specified by:
canHandle in interface FlowExecutionExceptionHandler
Parameters:
e - the exception that occurred
Returns:
true if yes, false if no

handle

public void handle(FlowExecutionException exception,
                   RequestControlContext context)
Description copied from interface: FlowExecutionExceptionHandler
Handle the exception in the context of the current request. An implementation is expected to transition the flow to a state using RequestControlContext.execute(Transition).

Specified by:
handle in interface FlowExecutionExceptionHandler
Parameters:
exception - the exception that occurred
context - the execution control context for this request

exposeException

protected void exposeException(RequestContext context,
                               FlowExecutionException exception,
                               java.lang.Throwable rootCause)
Exposes the given flow exception and root cause in flash scope to make them available for response rendering. Subclasses can override this if they want to expose the exceptions in a different way or do special processing before the exceptions are exposed.

Parameters:
context - the request control context
exception - the exception being handled
rootCause - root cause of the exception being handled (could be null)

getTargetStateResolver

protected TargetStateResolver getTargetStateResolver(java.lang.Throwable e)
Find the mapped target state resolver for given exception. Returns null if no mapping can be found for given exception. Will try all exceptions in the exception cause chain.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

Spring Web Flow