public abstract class State extends AnnotatedObject implements StateDefinition
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.
TransitionableState
,
ActionState
,
ViewState
,
SubflowState
,
EndState
,
DecisionState
Modifier and Type | Field and Description |
---|---|
protected org.apache.commons.logging.Log |
logger
Logger, for use in subclasses.
|
CAPTION_PROPERTY, DESCRIPTION_PROPERTY
Modifier | Constructor and Description |
---|---|
protected |
State(Flow flow,
java.lang.String id)
Creates a state for the provided
flow identified by the provided id . |
Modifier and Type | Method and Description |
---|---|
protected void |
appendToString(org.springframework.core.style.ToStringCreator creator)
Subclasses may override this hook method to print their internal state to a string.
|
protected abstract void |
doEnter(RequestControlContext context)
Hook method to execute custom behavior as a result of entering this state.
|
protected void |
doPreEntryActions(RequestControlContext context)
Hook method to execute before running state entry actions upon state entry.
|
void |
enter(RequestControlContext context)
Enter this state in the provided flow control context.
|
boolean |
equals(java.lang.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.
|
java.lang.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.
|
java.lang.String |
toString() |
getAttributes, getCaption, getDescription, setCaption, setDescription
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
getAttributes, getCaption, getDescription
protected final org.apache.commons.logging.Log logger
protected State(Flow flow, java.lang.String id) throws java.lang.IllegalArgumentException
flow
identified by the provided id
. The id must
be locally unique to the owning flow. The state will be automatically added to the flow.flow
- the owning flowid
- the state identifier (must be unique to the flow)java.lang.IllegalArgumentException
- if this state cannot be added to the flow, for instance when the provided id is
not unique in the owning flowgetEntryActionList()
,
getExceptionHandlerSet()
public FlowDefinition getOwner()
StateDefinition
getOwner
in interface StateDefinition
public java.lang.String getId()
StateDefinition
getId
in interface StateDefinition
public boolean isViewState()
StateDefinition
isViewState
in interface StateDefinition
public Flow getFlow()
public ActionList getEntryActionList()
public FlowExecutionExceptionHandlerSet getExceptionHandlerSet()
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.
public boolean isStartState()
public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public final void enter(RequestControlContext context) throws FlowExecutionException
doEnter(RequestControlContext)
hook method, which should be implemented by subclasses, after executing
the entry actions.context
- the control context for the currently executing flow, used by this state to manipulate the flow
executionFlowExecutionException
- if an exception occurs in this stateprotected void doPreEntryActions(RequestControlContext context) throws FlowExecutionException
context
- the request control contextFlowExecutionException
- if an exception occursprotected abstract void doEnter(RequestControlContext context) throws FlowExecutionException
context
- the control context for the currently executing flow, used by this state to manipulate the flow
executionFlowExecutionException
- if an exception occurs in this statepublic boolean handleException(FlowExecutionException exception, RequestControlContext context)
exception
- the exception that occurredcontext
- the flow execution control contextpublic java.lang.String toString()
toString
in class java.lang.Object
protected void appendToString(org.springframework.core.style.ToStringCreator creator)
creator
- the toString creator, to print properties to stringtoString()