org.apache.struts.tiles
Class TilesPlugin

java.lang.Object
  |
  +--org.apache.struts.tiles.TilesPlugin
All Implemented Interfaces:
PlugIn

public class TilesPlugin
extends java.lang.Object
implements PlugIn

Tiles Plugin used to initialize Tiles. This plugin is to be used with Struts 1.1 in association with TilesRequestProcessor.
This plugin creates one definition factory for each Struts-module. The definition factory configuration is read first from 'web.xml' (backward compatibility), then it is overloaded with values found in the plugin property values.
The plugin changes the Struts configuration by specifying a TilesRequestProcessor as request processor. If you want to use your own RequestProcessor, it should subclass TilesRequestProcessor.
This plugin can also be used to create one single factory for all modules. This behavior is enabled by specifying moduleAware=false in each plugin properties. In this case, the definition factory configuration file is read by the first Tiles plugin to be initialized. The order is determined by the order of modules declaration in web.xml. The first module is always the default one if it exists. The plugin should be declared in each struts-config.xml file in order to properly initialize the request processor.

Since:
Struts 1.1

Field Summary
protected  PlugInConfig currentPlugInConfigObject
          The plugin config object provided by the ActionServlet initializing this plugin.
protected  DefinitionsFactory definitionFactory
          Associated definition factory.
protected static org.apache.commons.logging.Log log
          Commons Logging instance.
protected  boolean moduleAware
          Is the factory module aware?
protected  java.lang.String tilesUtilImplClassname
          Tiles util implementation classname.
 
Constructor Summary
TilesPlugin()
           
 
Method Summary
 void destroy()
          End plugin.
protected  java.util.Map findStrutsPlugInConfigProperties(ActionServlet servlet, ModuleConfig config)
          Find original properties set in the Struts PlugInConfig object.
 java.lang.String getTilesUtilImplClassname()
          Get Tiles util implemention classname.
 void init(ActionServlet servlet, ModuleConfig moduleConfig)
          Receive notification that the specified module is being started up.
private  void initDefinitionsFactory(javax.servlet.ServletContext servletContext, ModuleConfig moduleConfig, DefinitionsFactoryConfig factoryConfig)
          Initialize the DefinitionsFactory this module will use.
protected  void initRequestProcessorClass(ModuleConfig config)
          Set RequestProcessor to appropriate Tiles RequestProcessor.
private  void initTilesUtil()
          Set TilesUtil implementation according to properties 'tilesUtilImplClassname' and 'moduleAware'.
 boolean isModuleAware()
          Get the module aware flag.
protected  DefinitionsFactoryConfig readFactoryConfig(ActionServlet servlet, ModuleConfig config)
          Create FactoryConfig and initialize it from web.xml and struts-config.xml.
 void setCurrentPlugInConfigObject(PlugInConfig plugInConfigObject)
          Method used by the ActionServlet initializing this plugin.
 void setModuleAware(boolean moduleAware)
          Set the module aware flag.
 void setTilesUtilImplClassname(java.lang.String tilesUtilImplClassname)
          Set Tiles util implemention classname.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

log

protected static org.apache.commons.logging.Log log
Commons Logging instance.

moduleAware

protected boolean moduleAware
Is the factory module aware?

tilesUtilImplClassname

protected java.lang.String tilesUtilImplClassname
Tiles util implementation classname. This property can be set by user in the plugin declaration.

definitionFactory

protected DefinitionsFactory definitionFactory
Associated definition factory.

currentPlugInConfigObject

protected PlugInConfig currentPlugInConfigObject
The plugin config object provided by the ActionServlet initializing this plugin.
Constructor Detail

TilesPlugin

public TilesPlugin()
Method Detail

isModuleAware

public boolean isModuleAware()
Get the module aware flag.
Returns:
true: user wants a single factory instance, false: user wants multiple factory instances (one per module with Struts)

setModuleAware

public void setModuleAware(boolean moduleAware)
Set the module aware flag. This flag is only meaningful if the property tilesUtilImplClassname is not set.
Parameters:
moduleAware - true: user wants a single factory instance, false: user wants multiple factory instances (one per module with Struts)

init

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

Receive notification that the specified module is being started up.

Specified by:
init in interface PlugIn
Parameters:
servlet - ActionServlet that is managing all the modules in this web application.
moduleConfig - ModuleConfig for the module with which this plugin is associated.
Throws:
javax.servlet.ServletException - if this PlugIn cannot be successfully initialized.

initTilesUtil

private void initTilesUtil()
                    throws javax.servlet.ServletException
Set TilesUtil implementation according to properties 'tilesUtilImplClassname' and 'moduleAware'. These properties are taken into account only once. A side effect is that only the values set in the first initialized plugin are effectively taken into account.
Throws:
javax.servlet.ServletException -  

initDefinitionsFactory

private void initDefinitionsFactory(javax.servlet.ServletContext servletContext,
                                    ModuleConfig moduleConfig,
                                    DefinitionsFactoryConfig factoryConfig)
                             throws javax.servlet.ServletException
Initialize the DefinitionsFactory this module will use.
Parameters:
servletContext -  
moduleConfig -  
factoryConfig -  
Throws:
javax.servlet.ServletException -  

destroy

public void destroy()
End plugin.
Specified by:
destroy in interface PlugIn

readFactoryConfig

protected DefinitionsFactoryConfig readFactoryConfig(ActionServlet servlet,
                                                     ModuleConfig config)
                                              throws javax.servlet.ServletException
Create FactoryConfig and initialize it from web.xml and struts-config.xml.
Parameters:
servlet - ActionServlet that is managing all the modules in this web application.
config - ModuleConfig for the module with which this plugin is associated.
Throws:
javax.servlet.ServletException - if this PlugIn cannot be successfully initialized.

findStrutsPlugInConfigProperties

protected java.util.Map findStrutsPlugInConfigProperties(ActionServlet servlet,
                                                         ModuleConfig config)
                                                  throws javax.servlet.ServletException
Find original properties set in the Struts PlugInConfig object. First, we need to find the index of this plugin. Then we retrieve the array of configs and then the object for this plugin.
Parameters:
servlet - ActionServlet that is managing all the modules in this web application.
config - ModuleConfig for the module with which this plug in is associated.
Throws:
javax.servlet.ServletException - if this PlugIn cannot be successfully initialized.

initRequestProcessorClass

protected void initRequestProcessorClass(ModuleConfig config)
                                  throws javax.servlet.ServletException
Set RequestProcessor to appropriate Tiles RequestProcessor. First, check if a RequestProcessor is specified. If yes, check if it extends the appropriate TilesRequestProcessor class. If not, set processor class to TilesRequestProcessor.
Parameters:
config - ModuleConfig for the module with which this plugin is associated.
Throws:
javax.servlet.ServletException - On errors.

setTilesUtilImplClassname

public void setTilesUtilImplClassname(java.lang.String tilesUtilImplClassname)
Set Tiles util implemention classname. If this property is set, the flag moduleAware will not be used anymore.
Parameters:
tilesUtilImplClassname - Classname.

getTilesUtilImplClassname

public java.lang.String getTilesUtilImplClassname()
Get Tiles util implemention classname.
Returns:
The classname or null if none is set.

setCurrentPlugInConfigObject

public void setCurrentPlugInConfigObject(PlugInConfig plugInConfigObject)
Method used by the ActionServlet initializing this plugin. Set the plugin config object read from module config.
Parameters:
plugInConfigObject - PlugInConfig.


Copyright 2000-2006 - The Apache Software Foundation