org.springframework.web.struts
Class DelegatingTilesRequestProcessor

java.lang.Object
  extended by org.apache.struts.action.RequestProcessor
      extended by org.apache.struts.tiles.TilesRequestProcessor
          extended by org.springframework.web.struts.DelegatingTilesRequestProcessor

public class DelegatingTilesRequestProcessor
extends TilesRequestProcessor

Subclass of Struts's TilesRequestProcessor that autowires Struts Actions defined in ContextLoaderPlugIn's WebApplicationContext (or, as a fallback, in the root WebApplicationContext).

Behaves like DelegatingRequestProcessor, but also provides the Tiles functionality of the original TilesRequestProcessor. As there's just a single central class to customize in Struts, we have to provide another subclass here, covering both the Tiles and the Spring delegation aspect.

The default implementation delegates to the DelegatingActionUtils class as fas as possible, to reuse as much code as possible despite the need to provide two RequestProcessor subclasses. If you need to subclass yet another RequestProcessor, take this class as a template, delegating to DelegatingActionUtils just like it.

Since:
1.0.2
Author:
Juergen Hoeller
See Also:
DelegatingRequestProcessor, DelegatingActionProxy, DelegatingActionUtils, ContextLoaderPlugIn

Field Summary
 
Fields inherited from class org.apache.struts.tiles.TilesRequestProcessor
definitionsFactory, log
 
Fields inherited from class org.apache.struts.action.RequestProcessor
actions, INCLUDE_PATH_INFO, INCLUDE_SERVLET_PATH, moduleConfig, servlet
 
Constructor Summary
DelegatingTilesRequestProcessor()
           
 
Method Summary
protected  String determineActionBeanName(ActionMapping mapping)
          Determine the name of the Action bean, to be looked up in the WebApplicationContext.
protected  Action getDelegateAction(ActionMapping mapping)
          Return the delegate Action for the given mapping.
protected  WebApplicationContext getWebApplicationContext()
          Return the WebApplicationContext that this processor delegates to.
 void init(ActionServlet actionServlet, ModuleConfig moduleConfig)
           
protected  WebApplicationContext initWebApplicationContext(ActionServlet actionServlet, ModuleConfig moduleConfig)
          Fetch ContextLoaderPlugIn's WebApplicationContext from the ServletContext, falling back to the root WebApplicationContext.
protected  Action processActionCreate(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping)
          Override the base class method to return the delegate action.
 
Methods inherited from class org.apache.struts.tiles.TilesRequestProcessor
doForward, getDefinitionsFactory, initDefinitionsMapping, internalModuleRelativeForward, internalModuleRelativeInclude, processForwardConfig, processTilesDefinition
 
Methods inherited from class org.apache.struts.action.RequestProcessor
destroy, doInclude, getInternal, getServletContext, log, log, process, processActionForm, processActionPerform, processCachedMessages, processContent, processException, processForward, processInclude, processLocale, processMapping, processMultipart, processNoCache, processPath, processPopulate, processPreprocess, processRoles, processValidate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelegatingTilesRequestProcessor

public DelegatingTilesRequestProcessor()
Method Detail

init

public void init(ActionServlet actionServlet,
                 ModuleConfig moduleConfig)
          throws ServletException
Overrides:
init in class TilesRequestProcessor
Throws:
ServletException

initWebApplicationContext

protected WebApplicationContext initWebApplicationContext(ActionServlet actionServlet,
                                                          ModuleConfig moduleConfig)
                                                   throws IllegalStateException
Fetch ContextLoaderPlugIn's WebApplicationContext from the ServletContext, falling back to the root WebApplicationContext. This context is supposed to contain the Struts Action beans to delegate to.

Parameters:
actionServlet - the associated ActionServlet
moduleConfig - the associated ModuleConfig
Returns:
the WebApplicationContext
Throws:
IllegalStateException - if no WebApplicationContext could be found
See Also:
DelegatingActionUtils.findRequiredWebApplicationContext(org.apache.struts.action.ActionServlet, org.apache.struts.config.ModuleConfig), ContextLoaderPlugIn.SERVLET_CONTEXT_PREFIX

getWebApplicationContext

protected final WebApplicationContext getWebApplicationContext()
Return the WebApplicationContext that this processor delegates to.


processActionCreate

protected Action processActionCreate(HttpServletRequest request,
                                     HttpServletResponse response,
                                     ActionMapping mapping)
                              throws IOException
Override the base class method to return the delegate action.

Overrides:
processActionCreate in class RequestProcessor
Throws:
IOException
See Also:
getDelegateAction(org.apache.struts.action.ActionMapping)

getDelegateAction

protected Action getDelegateAction(ActionMapping mapping)
                            throws BeansException
Return the delegate Action for the given mapping.

The default implementation determines a bean name from the given ActionMapping and looks up the corresponding bean in the WebApplicationContext.

Parameters:
mapping - the Struts ActionMapping
Returns:
the delegate Action, or null if none found
Throws:
BeansException - if thrown by WebApplicationContext methods
See Also:
determineActionBeanName(org.apache.struts.action.ActionMapping)

determineActionBeanName

protected String determineActionBeanName(ActionMapping mapping)
Determine the name of the Action bean, to be looked up in the WebApplicationContext.

The default implementation takes the mapping path and prepends the module prefix, if any.

Parameters:
mapping - the Struts ActionMapping
Returns:
the name of the Action bean
See Also:
DelegatingActionUtils.determineActionBeanName(org.apache.struts.action.ActionMapping), ActionConfig.getPath(), ModuleConfig.getPrefix()


Copyright © 2002-2008 The Spring Framework.