com.opensymphony.xwork
Interface ActionInvocation
- All Superinterfaces:
- java.io.Serializable
- All Known Implementing Classes:
- DefaultActionInvocation, MockActionInvocation, MockActionInvocation
public interface ActionInvocation
- extends java.io.Serializable
An ActionInvocation represents the execution state of an Action. It holds the Interceptors and the Action instance.
By repeated re-entrant execution of the invoke() method, initially by the ActionProxy, then by the Interceptors, the
Interceptors are all executed, and then the Action and the Result.
- Author:
- Jason Carreira
- See Also:
ActionProxy
Method Summary |
void |
addPreResultListener(PreResultListener listener)
Register a com.opensymphony.xwork.interceptor.PreResultListener to be notified after the Action is executed and
before the Result is executed. |
java.lang.Object |
getAction()
Get the Action associated with this ActionInvocation |
ActionContext |
getInvocationContext()
Gets the ActionContext associated with this ActionInvocation. |
ActionProxy |
getProxy()
Get the ActionProxy holding this ActionInvocation |
Result |
getResult()
If the ActionInvocation has been executed before and the Result is an instance of ActionChainResult, this method
will walk down the chain of ActionChainResults until it finds a non-chain result, which will be returned. |
java.lang.String |
getResultCode()
Gets the result code returned from this ActionInvocation |
OgnlValueStack |
getStack()
|
java.lang.String |
invoke()
Invokes the next step in processing this ActionInvocation. |
java.lang.String |
invokeActionOnly()
Invokes only the action (not interceptors or results). |
boolean |
isExecuted()
|
void |
setResultCode(java.lang.String resultCode)
Sets the result code, possibly overriding the one returned by the
action. |
getAction
java.lang.Object getAction()
- Get the Action associated with this ActionInvocation
isExecuted
boolean isExecuted()
- Returns:
- whether this ActionInvocation has executed before. This will be set after the Action and the Result have
executed.
getInvocationContext
ActionContext getInvocationContext()
- Gets the ActionContext associated with this ActionInvocation. The ActionProxy is
responsible for setting this ActionContext onto the ThreadLocal before invoking
the ActionInvocation and resetting the old ActionContext afterwards.
getProxy
ActionProxy getProxy()
- Get the ActionProxy holding this ActionInvocation
getResult
Result getResult()
throws java.lang.Exception
- If the ActionInvocation has been executed before and the Result is an instance of ActionChainResult, this method
will walk down the chain of ActionChainResults until it finds a non-chain result, which will be returned. If the
ActionInvocation's result has not been executed before, the Result instance will be created and populated with
the result params.
- Returns:
- a Result instance
- Throws:
java.lang.Exception
getResultCode
java.lang.String getResultCode()
- Gets the result code returned from this ActionInvocation
setResultCode
void setResultCode(java.lang.String resultCode)
- Sets the result code, possibly overriding the one returned by the
action.
The "intended" purpose of this method is to allow PreResultListeners to
override the result code returned by the Action.
If this method is used before the Action executes, the Action's returned
result code will override what was set. However the Action could (if
specifically coded to do so) inspect the ActionInvocation to see that
someone "upstream" (e.g. an Interceptor) had suggested a value as the
result, and it could therefore return the same value itself.
If this method is called between the Action execution and the Result
execution, then the value set here will override the result code the
action had returned. Creating an Interceptor that implements
PreResultListener will give you this oportunity.
If this method is called after the Result has been executed, it will
have the effect of raising an exception.
- Throws:
java.lang.IllegalStateException
- if called after the Result has been
executed.- See Also:
isExecuted()
getStack
OgnlValueStack getStack()
- Returns:
- the ValueStack associated with this ActionInvocation
addPreResultListener
void addPreResultListener(PreResultListener listener)
- Register a com.opensymphony.xwork.interceptor.PreResultListener to be notified after the Action is executed and
before the Result is executed. The ActionInvocation implementation must guarantee that listeners will be called in
the order in which they are registered. Listener registration and execution does not need to be thread-safe.
invoke
java.lang.String invoke()
throws java.lang.Exception
- Invokes the next step in processing this ActionInvocation. If there are more Interceptors, this will call the next
one. If Interceptors choose not to short-circuit ActionInvocation processing and return their own return code,
they will call invoke() to allow the next Interceptor to execute. If there are no more Interceptors to be applied,
the Action is executed. If the ActionProxy getExecuteResult() method returns true, the Result is also executed.
- Throws:
java.lang.Exception
invokeActionOnly
java.lang.String invokeActionOnly()
throws java.lang.Exception
- Invokes only the action (not interceptors or results). This is useful in rare situations where advanced usage
with the interceptor/action/result workflow is being manipulated for certain functionality. Specifically,
WebWork's execAndWait interceptor takes advantage of this method.
- Throws:
java.lang.Exception