Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.struts.chain
Class ComposableRequestProcessor

    java.lang.Object
      org.apache.struts.action.RequestProcessor
          org.apache.struts.chain.ComposableRequestProcessor

    public class ComposableRequestProcessor

extends RequestProcessor

ComposableRequestProcessor uses the Chain Of Resposibility design pattern (as implemented by the commons-chain package in Jakarta Commons) to support external configuration of command chains to be used. It is configured via the following context initialization parameters:

- [org.apache.struts.chain.CATALOG_NAME] - Name of the Catalog in which we will look up the Command to be executed for each request. If not specified, the default value is struts.
- org.apache.struts.chain.COMMAND_NAME - Name of the Command which we will execute for each request, to be looked up in the specified Catalog. If not specified, the default value is servlet-standard.

Since:
  Struts 1.1
Version:
  $Rev: 471754 $ $Date: 2005-11-12 13:01:44 -0500 (Sat, 12 Nov 2005) $

Field Summary
`static String` | `ACTION_CONTEXT_CLASS` Token for ActionContext clazss so that it can be stored in the ControllerConfig.
`protected org.apache.commons.chain.Catalog` | `catalog` The `Catalog` containing all of the available command chains for this module.
`protected org.apache.commons.chain.CatalogFactory` | `catalogFactory` The `CatalogFactory` from which catalog containing the the base request-processing `Command` will be retrieved.
`protected org.apache.commons.chain.Command` | `command` The `Command` to be executed for each request.
`protected static Log` | `LOG` The `Log` instance for this class.

Fields inherited from class org.apache.struts.action.RequestProcessor
`actions, INCLUDE_PATH_INFO, INCLUDE_SERVLET_PATH, log, moduleConfig, servlet`

Constructor Summary
`ComposableRequestProcessor()`

Method Summary
`protected ActionContext` | `contextInstance(HttpServletRequest request, HttpServletResponse response)` Provide the initialized `ActionContext` instance which will be used by this request.
`protected ActionContext` | `createActionContextInstance(ServletContext servletContext, HttpServletRequest request, HttpServletResponse response)` Create a new instance of `ActionContext` according to configuration.
`void` | `destroy()` Clean up in preparation for a shutdown of this application.
`void` | `init(ActionServlet servlet, ModuleConfig moduleConfig)` Initialize this request processor instance.
`protected void` | `initCatalogFactory(ActionServlet servlet, ModuleConfig moduleConfig)` Establish the CatalogFactory which will be used to look up the catalog which has the request processing command.
`protected void` | `initializeActionContext(ActionContext context)` Set common properties on the given `ActionContext` instance so that commands in the chain can count on their presence.
`void` | `process(HttpServletRequest request, HttpServletResponse response)` Process an `HttpServletRequest` and create the corresponding `HttpServletResponse`.
`protected HttpServletRequest` | `processMultipart(HttpServletRequest request)` If this is a multipart request, wrap it with a special wrapper.
`void` | `setCatalogFactory(org.apache.commons.chain.CatalogFactory catalogFactory)` Set the `CatalogFactory` instance which should be used to find the request-processing command.

Methods inherited from class org.apache.struts.action.RequestProcessor
`doForward, doInclude, getInternal, getServletContext, internalModuleRelativeForward, internalModuleRelativeInclude, processActionCreate, processActionForm, processActionPerform, processCachedMessages, processContent, processException, processForward, processForwardConfig, processInclude, processLocale, processMapping, processNoCache, processPath, processPopulate, processPreprocess, processRoles, processValidate`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### ACTION_CONTEXT_CLASS

    public static final String ACTION_CONTEXT_CLASS

  Token for ActionContext clazss so that it can be stored in the ControllerConfig.

  See Also:
    Constant Field Values

### LOG

    protected static final Log LOG

  The `Log` instance for this class.

### catalogFactory

    protected org.apache.commons.chain.CatalogFactory catalogFactory

  The `CatalogFactory` from which catalog containing the the base request-processing `Command` will be retrieved.

### catalog

    protected org.apache.commons.chain.Catalog catalog

  The `Catalog` containing all of the available command chains for this module.

### command

    protected org.apache.commons.chain.Command command

  The `Command` to be executed for each request.

Constructor Detail

### ComposableRequestProcessor

    public ComposableRequestProcessor()

Method Detail

### destroy

    public void destroy()

  Clean up in preparation for a shutdown of this application.

  Overrides:
    `destroy` in class `RequestProcessor`

### init

    public void init(ActionServlet servlet,
                     ModuleConfig moduleConfig)
              throws ServletException

  Initialize this request processor instance.

  Overrides:
    `init` in class `RequestProcessor`
  Parameters:
    `servlet` - The ActionServlet we are associated with
    `moduleConfig` - The ModuleConfig we are associated with.
  Throws:
    `ServletException` - If an error occurs during initialization

### initCatalogFactory

    protected void initCatalogFactory(ActionServlet servlet,
                                      ModuleConfig moduleConfig)

  Establish the CatalogFactory which will be used to look up the catalog which has the request processing command.

  The base implementation simply calls CatalogFactory.getInstance(), unless the catalogFactory property of this object has already been set, in which case it is not changed.

  Parameters:
    `servlet` - The ActionServlet we are processing
    `moduleConfig` - The ModuleConfig we are processing

### process

    public void process(HttpServletRequest request,
                        HttpServletResponse response)
                 throws IOException,
                        ServletException

  Process an `HttpServletRequest` and create the corresponding `HttpServletResponse`.

  Overrides:
    `process` in class `RequestProcessor`
  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
  Throws:
    `IOException` - if an input/output error occurs
    `ServletException` - if a processing exception occurs

### contextInstance

    protected ActionContext contextInstance(HttpServletRequest request,
                                            HttpServletResponse response)
                                     throws ServletException

  Provide the initialized `ActionContext` instance which will be used by this request. Internally, this simply calls `createActionContextInstance` followed by `initializeActionContext`.

  Parameters:
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
  Returns:
    Initiliazed ActionContext
  Throws:
    `ServletException` - if a processing exception occurs

### createActionContextInstance

    protected ActionContext createActionContextInstance(ServletContext servletContext,
                                                        HttpServletRequest request,
                                                        HttpServletResponse response)
                                                 throws ServletException

  Create a new instance of `ActionContext` according to configuration. If no alternative was specified at initialization, a new instance `ServletActionContext` is returned. If an alternative was specified using the `ACTION_CONTEXT_CLASS` property, then that value is treated as a classname, and an instance of that class is created. If that class implements the same constructor that `ServletActionContext` does, then that constructor will be used: `ServletContext, HttpServletRequest, HttpServletResponse`; otherwise, it is assumed that the class has a no-arguments constructor. If these constraints do not suit you, simply override this method in a subclass.

  Parameters:
    `servletContext` - The servlet context we are processing
    `request` - The servlet request we are processing
    `response` - The servlet response we are creating
  Returns:
    New instance of ActionContext
  Throws:
    `ServletException` - if a processing exception occurs

### initializeActionContext

    protected void initializeActionContext(ActionContext context)

  Set common properties on the given `ActionContext` instance so that commands in the chain can count on their presence. Note that while this method does not require that its argument be an instance of `ServletActionContext`, at this time many common Struts commands will be expecting to receive an `ActionContext` which is also a `ServletActionContext`.

  Parameters:
    `context` - The ActionContext we are processing

### processMultipart

    protected HttpServletRequest processMultipart(HttpServletRequest request)

  If this is a multipart request, wrap it with a special wrapper. Otherwise, return the request unchanged.

  Overrides:
    `processMultipart` in class `RequestProcessor`
  Parameters:
    `request` - The HttpServletRequest we are processing
  Returns:
    Original or wrapped request as appropriate

### setCatalogFactory

    public void setCatalogFactory(org.apache.commons.chain.CatalogFactory catalogFactory)

  Set the `CatalogFactory` instance which should be used to find the request-processing command. In the base implementation, if this value is not already set, then it will be initialized when `initCatalogFactory(org.apache.struts.action.ActionServlet, org.apache.struts.config.ModuleConfig)` is called.

  Parameters:
    `catalogFactory` - Our CatalogFactory instance

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.