com.opensymphony.xwork2
Class DefaultActionInvocation

java.lang.Object
  extended by com.opensymphony.xwork2.DefaultActionInvocation
All Implemented Interfaces:
ActionInvocation, Serializable

public class DefaultActionInvocation
extends Object
implements ActionInvocation

The Default ActionInvocation implementation

Version:
$Date: 2009-09-16 22:33:36 +0200 (Wed, 16 Sep 2009) $ $Id: DefaultActionInvocation.java 2056 2009-09-16 20:33:36Z rainerh $
Author:
Rainer Hermanns, tmjee
See Also:
DefaultActionProxy, Serialized Form

Field Summary
protected  Object action
           
protected  ActionEventListener actionEventListener
           
protected  Container container
           
protected  boolean executed
           
protected  Result explicitResult
           
protected  Map<String,Object> extraContext
           
protected  Iterator<InterceptorMapping> interceptors
           
protected  ActionContext invocationContext
           
protected  ObjectFactory objectFactory
           
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 Summary
DefaultActionInvocation(Map<String,Object> extraContext, boolean pushAction)
           
 
Method Summary
 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()
           
 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.
 void setActionEventListener(ActionEventListener listener)
          Sets the action event listener to respond to key action events.
 void setConfiguration(Configuration configuration)
           
 void setContainer(Container cont)
           
 void setObjectFactory(ObjectFactory fac)
           
 void setResultCode(String resultCode)
          Sets the result code, possibly overriding the one returned by the action.
 void setUnknownHandlerManager(UnknownHandlerManager unknownHandlerManager)
           
 void setValueStackFactory(ValueStackFactory fac)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

action

protected Object action

proxy

protected ActionProxy proxy

preResultListeners

protected List<PreResultListener> preResultListeners

extraContext

protected Map<String,Object> extraContext

invocationContext

protected ActionContext invocationContext

interceptors

protected Iterator<InterceptorMapping> interceptors

stack

protected ValueStack stack

result

protected Result result

explicitResult

protected Result explicitResult

resultCode

protected String resultCode

executed

protected boolean executed

pushAction

protected boolean pushAction

objectFactory

protected ObjectFactory objectFactory

actionEventListener

protected ActionEventListener actionEventListener

valueStackFactory

protected ValueStackFactory valueStackFactory

container

protected Container container

unknownHandlerManager

protected UnknownHandlerManager unknownHandlerManager
Constructor Detail

DefaultActionInvocation

public DefaultActionInvocation(Map<String,Object> extraContext,
                               boolean pushAction)
Method Detail

setUnknownHandlerManager

public void setUnknownHandlerManager(UnknownHandlerManager unknownHandlerManager)

setValueStackFactory

public void setValueStackFactory(ValueStackFactory fac)

setConfiguration

public void setConfiguration(Configuration configuration)

setObjectFactory

public void setObjectFactory(ObjectFactory fac)

setContainer

public void setContainer(Container cont)

setActionEventListener

public void setActionEventListener(ActionEventListener listener)
Description copied from interface: ActionInvocation
Sets the action event listener to respond to key action events.

Specified by:
setActionEventListener in interface ActionInvocation
Parameters:
listener - the listener.

getAction

public Object getAction()
Description copied from interface: ActionInvocation
Get the Action associated with this ActionInvocation.

Specified by:
getAction in interface ActionInvocation
Returns:
the Action

isExecuted

public boolean isExecuted()
Description copied from interface: ActionInvocation
Gets whether this ActionInvocation has executed before. This will be set after the Action and the Result have executed.

Specified by:
isExecuted in interface ActionInvocation
Returns:
true if this ActionInvocation has executed before.

getInvocationContext

public ActionContext getInvocationContext()
Description copied from interface: ActionInvocation
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.

Specified by:
getInvocationContext in interface ActionInvocation
Returns:
the ActionContext.

getProxy

public ActionProxy getProxy()
Description copied from interface: ActionInvocation
Get the ActionProxy holding this ActionInvocation.

Specified by:
getProxy in interface ActionInvocation
Returns:
the ActionProxy.

getResult

public Result getResult()
                 throws Exception
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. If the DefaultActionInvocation's result has not been executed before, the Result instance will be created and populated with the result params.

Specified by:
getResult in interface ActionInvocation
Returns:
a Result instance
Throws:
Exception

getResultCode

public String getResultCode()
Description copied from interface: ActionInvocation
Gets the result code returned from this ActionInvocation.

Specified by:
getResultCode in interface ActionInvocation
Returns:
the result code

setResultCode

public void setResultCode(String resultCode)
Description copied from interface: ActionInvocation
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 IllegalStateException.

Specified by:
setResultCode in interface ActionInvocation
Parameters:
resultCode - the result code.
See Also:
ActionInvocation.isExecuted()

getStack

public ValueStack getStack()
Description copied from interface: ActionInvocation
Gets the ValueStack associated with this ActionInvocation.

Specified by:
getStack in interface ActionInvocation
Returns:
the ValueStack

addPreResultListener

public 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. 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.

Specified by:
addPreResultListener in interface ActionInvocation
Parameters:
listener -

createResult

public Result createResult()
                    throws Exception
Throws:
Exception

invoke

public String invoke()
              throws Exception
Description copied from interface: ActionInvocation
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.

Specified by:
invoke in interface ActionInvocation
Returns:
the return code.
Throws:
ConfigurationException - If no result can be found with the returned code
Exception - can be thrown.

invokeActionOnly

public String invokeActionOnly()
                        throws Exception
Description copied from interface: ActionInvocation
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.

Specified by:
invokeActionOnly in interface ActionInvocation
Returns:
the return code.
Throws:
Exception - can be thrown.

createAction

protected void createAction(Map<String,Object> contextMap)

createContextMap

protected Map<String,Object> createContextMap()

init

public void init(ActionProxy proxy)
Specified by:
init in interface ActionInvocation

invokeAction

protected String invokeAction(Object action,
                              ActionConfig actionConfig)
                       throws Exception
Throws:
Exception


Copyright © 2009 OpenSymphony. All Rights Reserved.