org.springframework.webflow.engine
Class State

java.lang.Object
  extended by org.springframework.webflow.core.AnnotatedObject
      extended by org.springframework.webflow.engine.State
All Implemented Interfaces:
Annotated, StateDefinition
Direct Known Subclasses:
EndState, TransitionableState

public abstract class State
extends AnnotatedObject
implements StateDefinition

A point in a flow where something happens. What happens is determined by a state's type. Standard types of states include action states, view states, subflow states, and end states.

Each state is associated with exactly one owning flow definition. Specializations of this class capture all the configuration information needed for a specific kind of state.

Subclasses should implement the doEnter method to execute the processing that should occur when this state is entered, acting on its configuration information. The ability to plug-in custom state types that execute different behaviors is the classic GoF state pattern.

Equality: Two states are equal if they have the same id and are part of the same flow.

Author:
Keith Donald, Erwin Vervaet
See Also:
TransitionableState, ActionState, ViewState, SubflowState, EndState, DecisionState

Field Summary
 
Fields inherited from class org.springframework.webflow.core.AnnotatedObject
CAPTION_PROPERTY, DESCRIPTION_PROPERTY
 
Method Summary
 void enter(RequestControlContext context)
          Enter this state in the provided flow control context.
 boolean equals(Object o)
           
 ActionList getEntryActionList()
          Returns the list of actions executed by this state when it is entered.
 FlowExecutionExceptionHandlerSet getExceptionHandlerSet()
          Returns a mutable set of exception handlers, allowing manipulation of how exceptions are handled when thrown within this state.
 Flow getFlow()
          Returns the owning flow.
 String getId()
          Returns this state's identifier, locally unique to is containing flow definition.
 FlowDefinition getOwner()
          Returns the flow definition this state belongs to.
 boolean handleException(FlowExecutionException exception, RequestControlContext context)
          Handle an exception that occurred in this state during the context of the current flow execution request.
 int hashCode()
           
 boolean isStartState()
          Returns a flag indicating if this state is the start state of its owning flow.
 boolean isViewState()
          Returns true if this state is a view state.
 String toString()
           
 
Methods inherited from class org.springframework.webflow.core.AnnotatedObject
getAttributes, getCaption, getDescription, setCaption, setDescription
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.springframework.webflow.core.Annotated
getAttributes, getCaption, getDescription
 

Method Detail

getOwner

public FlowDefinition getOwner()
Description copied from interface: StateDefinition
Returns the flow definition this state belongs to.

Specified by:
getOwner in interface StateDefinition
Returns:
the owning flow definition

getId

public String getId()
Description copied from interface: StateDefinition
Returns this state's identifier, locally unique to is containing flow definition.

Specified by:
getId in interface StateDefinition
Returns:
the state identifier

isViewState

public boolean isViewState()
Description copied from interface: StateDefinition
Returns true if this state is a view state.

Specified by:
isViewState in interface StateDefinition
Returns:
true if a view state, false otherwise

getFlow

public Flow getFlow()
Returns the owning flow.


getEntryActionList

public ActionList getEntryActionList()
Returns the list of actions executed by this state when it is entered. The returned list is mutable.

Returns:
the state entry action list

getExceptionHandlerSet

public FlowExecutionExceptionHandlerSet getExceptionHandlerSet()
Returns a mutable set of exception handlers, allowing manipulation of how exceptions are handled when thrown within this state.

Exception handlers are invoked when an exception occurs when this state is entered, and can execute custom exception handling logic as well as select an error view to display.

Returns:
the state exception handler set

isStartState

public boolean isStartState()
Returns a flag indicating if this state is the start state of its owning flow.

Returns:
true if the flow is the start state, false otherwise

equals

public boolean equals(Object o)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

enter

public final void enter(RequestControlContext context)
                 throws FlowExecutionException
Enter this state in the provided flow control context. This implementation just calls the doEnter(RequestControlContext) hook method, which should be implemented by subclasses, after executing the entry actions.

Parameters:
context - the control context for the currently executing flow, used by this state to manipulate the flow execution
Throws:
FlowExecutionException - if an exception occurs in this state

handleException

public boolean handleException(FlowExecutionException exception,
                               RequestControlContext context)
Handle an exception that occurred in this state during the context of the current flow execution request.

Parameters:
exception - the exception that occurred
context - the flow execution control context

toString

public String toString()
Overrides:
toString in class Object