Class DefaultActionInvocation

java.lang.Object
org.apache.struts2.DefaultActionInvocation
All Implemented Interfaces:
ActionInvocation

public class DefaultActionInvocation extends Object implements ActionInvocation
The Default ActionInvocation implementation
Version:
$Date$ $Id$
Author:
Rainer Hermanns, tmjee
See Also:
  • Field Details

  • Constructor Details

    • DefaultActionInvocation

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

    • setUnknownHandlerManager

      public void setUnknownHandlerManager(UnknownHandlerManager unknownHandlerManager)
    • setValueStackFactory

      public void setValueStackFactory(ValueStackFactory fac)
    • 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.
    • setOgnlUtil

      public void setOgnlUtil(OgnlUtil ognlUtil)
    • setAsyncManager

      public void setAsyncManager(AsyncManager asyncManager)
    • 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 - in case of any error
    • 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 opportunity.

      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:
    • 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 org.apache.struts2.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 - to register
    • 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.
    • executeConditional

      protected String executeConditional(ConditionalInterceptor conditionalInterceptor) throws Exception
      Throws:
      Exception
    • 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
    • prepareLazyParamInjector

      protected void prepareLazyParamInjector(ValueStack valueStack)
    • createInterceptors

      protected void createInterceptors(ActionProxy proxy)
    • invokeAction

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

      protected String saveResult(ActionConfig actionConfig, Object methodResult)
      Save the result to be used later.
      Parameters:
      actionConfig - current ActionConfig
      methodResult - the result of the action.
      Returns:
      the result code to process.