public class DefaultActionInvocation extends Object implements ActionInvocation
DefaultActionProxy
Modifier and Type | Field and Description |
---|---|
protected Object |
action |
protected ActionEventListener |
actionEventListener |
protected Callable |
asyncAction |
protected AsyncManager |
asyncManager |
protected Container |
container |
protected boolean |
executed |
protected Result |
explicitResult |
protected Map<String,Object> |
extraContext |
protected Iterator<InterceptorMapping> |
interceptors |
protected ActionContext |
invocationContext |
protected WithLazyParams.LazyParamInjector |
lazyParamInjector |
protected ObjectFactory |
objectFactory |
protected OgnlUtil |
ognlUtil |
protected List<PreResultListener> |
preResultListeners |
protected ActionProxy |
proxy |
protected boolean |
pushAction |
protected Result |
result |
protected String |
resultCode |
protected ValueStack |
stack |
protected UnknownHandlerManager |
unknownHandlerManager |
protected ValueStackFactory |
valueStackFactory |
Constructor and Description |
---|
DefaultActionInvocation(Map<String,Object> extraContext,
boolean pushAction) |
Modifier and Type | Method and Description |
---|---|
void |
addPreResultListener(PreResultListener listener)
Register a com.opensymphony.xwork2.interceptor.PreResultListener to be notified after the Action is executed and before the
Result is executed.
|
protected void |
createAction(Map<String,Object> contextMap) |
protected Map<String,Object> |
createContextMap() |
protected void |
createInterceptors(ActionProxy proxy) |
Result |
createResult() |
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 DefaultActionInvocation 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.
|
String |
getResultCode()
Gets the result code returned from this ActionInvocation.
|
ValueStack |
getStack()
Gets the ValueStack associated with this ActionInvocation.
|
void |
init(ActionProxy proxy) |
String |
invoke()
Invokes the next step in processing this ActionInvocation.
|
protected String |
invokeAction(Object action,
ActionConfig actionConfig) |
String |
invokeActionOnly()
Invokes only the Action (not Interceptors or Results).
|
boolean |
isExecuted()
Gets whether this ActionInvocation has executed before.
|
protected void |
prepareLazyParamInjector(ValueStack valueStack) |
protected String |
saveResult(ActionConfig actionConfig,
Object methodResult)
Save the result to be used later.
|
void |
setActionEventListener(ActionEventListener listener)
Sets the action event listener to respond to key action events.
|
void |
setAsyncManager(AsyncManager asyncManager) |
void |
setContainer(Container cont) |
void |
setObjectFactory(ObjectFactory fac) |
void |
setOgnlUtil(OgnlUtil ognlUtil) |
void |
setResultCode(String resultCode)
Sets the result code, possibly overriding the one returned by the
action.
|
void |
setUnknownHandlerManager(UnknownHandlerManager unknownHandlerManager) |
void |
setValueStackFactory(ValueStackFactory fac) |
protected Object action
protected ActionProxy proxy
protected List<PreResultListener> preResultListeners
protected ActionContext invocationContext
protected Iterator<InterceptorMapping> interceptors
protected ValueStack stack
protected Result result
protected Result explicitResult
protected String resultCode
protected boolean executed
protected boolean pushAction
protected ObjectFactory objectFactory
protected ActionEventListener actionEventListener
protected ValueStackFactory valueStackFactory
protected Container container
protected UnknownHandlerManager unknownHandlerManager
protected OgnlUtil ognlUtil
protected AsyncManager asyncManager
protected Callable asyncAction
protected WithLazyParams.LazyParamInjector lazyParamInjector
public void setUnknownHandlerManager(UnknownHandlerManager unknownHandlerManager)
public void setValueStackFactory(ValueStackFactory fac)
public void setObjectFactory(ObjectFactory fac)
public void setContainer(Container cont)
public void setActionEventListener(ActionEventListener listener)
ActionInvocation
setActionEventListener
in interface ActionInvocation
listener
- the listener.public void setOgnlUtil(OgnlUtil ognlUtil)
public void setAsyncManager(AsyncManager asyncManager)
public Object getAction()
ActionInvocation
getAction
in interface ActionInvocation
public boolean isExecuted()
ActionInvocation
isExecuted
in interface ActionInvocation
public ActionContext getInvocationContext()
ActionInvocation
getInvocationContext
in interface ActionInvocation
public ActionProxy getProxy()
ActionInvocation
getProxy
in interface ActionInvocation
public Result getResult() throws Exception
getResult
in interface ActionInvocation
Exception
- in case of any errorpublic String getResultCode()
ActionInvocation
getResultCode
in interface ActionInvocation
public void setResultCode(String resultCode)
ActionInvocation
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 opportunity.
If this method is called after the Result has been executed, it will have the effect of raising an IllegalStateException.
setResultCode
in interface ActionInvocation
resultCode
- the result code.ActionInvocation.isExecuted()
public ValueStack getStack()
ActionInvocation
getStack
in interface ActionInvocation
public void addPreResultListener(PreResultListener listener)
addPreResultListener
in interface ActionInvocation
listener
- to registerpublic String invoke() throws Exception
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.
invoke
in interface ActionInvocation
ConfigurationException
- If no result can be found with the returned codeException
- can be thrown.public String invokeActionOnly() throws Exception
ActionInvocation
This is useful in rare situations where advanced usage with the interceptor/action/result workflow is being manipulated for certain functionality.
invokeActionOnly
in interface ActionInvocation
Exception
- can be thrown.public void init(ActionProxy proxy)
init
in interface ActionInvocation
protected void prepareLazyParamInjector(ValueStack valueStack)
protected void createInterceptors(ActionProxy proxy)
protected String invokeAction(Object action, ActionConfig actionConfig) throws Exception
Exception
protected String saveResult(ActionConfig actionConfig, Object methodResult)
actionConfig
- current ActionConfigmethodResult
- the result of the action.Copyright © 2000–2020 Apache Software Foundation. All rights reserved.