org.apache.struts.plugins

Class DigestingPlugIn

Implemented Interfaces:
PlugIn

public class DigestingPlugIn
extends java.lang.Object
implements PlugIn

An implementation of PlugIn which can be configured to instantiate a graph of objects using the Commons Digester and place the root object of that graph into the Application context.
Version:
$Rev: 164530 $
Since:
Struts 1.2
See Also:
PlugIn

Field Summary

protected static String
SOURCE_CLASSPATH
protected static String
SOURCE_FILE
protected static String
SOURCE_SERVLET
protected String
configPath
protected String
configSource
protected String
digesterPath
protected String
digesterSource
protected String
key
private static Log
log
Commons Logging instance.
protected ModuleConfig
moduleConfig
protected boolean
push
protected String
rulesets
protected ActionServlet
servlet

Constructor Summary

DigestingPlugIn()
Constructor for DigestingPlugIn.

Method Summary

protected void
applyRuleSets(Digester digester)
Instantiate any RuleSet classes defined in the rulesets property and use them to add rules to our Digester.
void
destroy()
Receive notification that our owning module is being shut down.
protected Digester
digesterFromXml(String path, String source)
Instantiate a Digester from an XML input stream using the Commons DigesterLoader.
protected URL
getClassPathURL(String path)
Given a string, return a URL to a classpath resource of that name.
String
getConfigPath()
String
getConfigSource()
protected URL
getConfigURL(String path, String source)
Look up a resource path using one of a set of known path resolution mechanisms and return a URL to the resource.
String
getDigesterPath()
String
getDigesterSource()
protected URL
getFileURL(String path)
Given a string, return a URL to a Filesystem resource of that name.
String
getKey()
boolean
getPush()
String
getRulesets()
protected URL
getServletContextURL(String path)
Given a string, return a URL to a Servlet Context resource of that name.
void
init(ActionServlet servlet, ModuleConfig config)
Initialize a Digester and use it to parse a configuration file, resulting in a root object which will be placed into the ServletContext.
protected Digester
initializeDigester()
Initialize the Digester which will be used to process the main configuration.
protected Digester
newDigesterInstance()
Instantiate a Digester.
void
setConfigPath(String configPath)
void
setConfigSource(String configSource)
Set the source of the config file.
void
setDigesterPath(String digesterPath)
The path to a Digester XML configuration file, relative to the digesterSource property.
void
setDigesterSource(String digesterSource)
The lookup mechanism to be used to resolve digesterPath (optional).
void
setKey(String key)
void
setPush(boolean push)
If set to true, this PlugIn will be pushed onto the Digester stack before the digester parse method is called.
void
setRulesets(String ruleSets)
A comma-delimited list of one or more classes which implement org.apache.commons.digester.RuleSet.
protected void
storeGeneratedObject(Object obj)
This method is called after the Digester runs to store the generated object somewhere.

Field Details

SOURCE_CLASSPATH

protected static final String SOURCE_CLASSPATH

SOURCE_FILE

protected static final String SOURCE_FILE

SOURCE_SERVLET

protected static final String SOURCE_SERVLET

configPath

protected String configPath

configSource

protected String configSource

digesterPath

protected String digesterPath

digesterSource

protected String digesterSource

key

protected String key

log

private static Log log
Commons Logging instance.

moduleConfig

protected ModuleConfig moduleConfig

push

protected boolean push

rulesets

protected String rulesets

servlet

protected ActionServlet servlet

Constructor Details

DigestingPlugIn

public DigestingPlugIn()
Constructor for DigestingPlugIn.

Method Details

applyRuleSets

protected void applyRuleSets(Digester digester)
            throws ServletException
Instantiate any RuleSet classes defined in the rulesets property and use them to add rules to our Digester.
Parameters:
digester - the Digester instance to add RuleSet objects to.

destroy

public void destroy()
Receive notification that our owning module is being shut down.
Specified by:
destroy in interface PlugIn

digesterFromXml

protected Digester digesterFromXml(String path,
                                   String source)
            throws IOException
Instantiate a Digester from an XML input stream using the Commons DigesterLoader.
Parameters:
path - the path to the digester rules XML to be found using source
source - a string indicating the lookup method to be used with path
Returns:
a configured Digester

getClassPathURL

protected URL getClassPathURL(String path)
Given a string, return a URL to a classpath resource of that name.
Parameters:
path - a Classpath-relative string identifying a resource.
Returns:
a URL identifying the resource on the classpath. TODO Do we need to be smarter about ClassLoaders?

getConfigPath

public String getConfigPath()
Returns:
the configPath property

getConfigSource

public String getConfigSource()
Returns:
the string describing which access method should be used to resolve configPath.

getConfigURL

protected URL getConfigURL(String path,
                           String source)
            throws IOException
Look up a resource path using one of a set of known path resolution mechanisms and return a URL to the resource.
Parameters:
path - a String which is meaningful to one of the known resolution mechanisms.
source - one of the known path resolution mechanisms:
  • file - the path is a fully-qualified filesystem path.
  • servlet - the path is a servlet-context relative path.
  • classpath - the path is a classpath-relative path.
Returns:
a URL pointing to the given path in the given mechanism.

getDigesterPath

public String getDigesterPath()
Returns:
the configured path to a Digester XML config file, or null.

getDigesterSource

public String getDigesterSource()
Returns:
the configured lookup mechanism for resolving digesterPath.

getFileURL

protected URL getFileURL(String path)
            throws IOException
Given a string, return a URL to a Filesystem resource of that name.
Parameters:
path - a path to a file.
Returns:
a URL identifying the resource in the in the file system.

getKey

public String getKey()
Returns:
The ServletContext attribute name the generated object is stored under.

getPush

public boolean getPush()
Returns:
Whether or not this PlugIn instance will be pushed onto the Digester stack before digester.parse() is called.

getRulesets

public String getRulesets()
Returns:
The configured list of RuleSet classes.

getServletContextURL

protected URL getServletContextURL(String path)
            throws IOException
Given a string, return a URL to a Servlet Context resource of that name.
Parameters:
path - a Classpath-relative string identifying a resource.
Returns:
a URL identifying the resource in the Servlet Context

init

public void init(ActionServlet servlet,
                 ModuleConfig config)
            throws ServletException
Initialize a Digester and use it to parse a configuration file, resulting in a root object which will be placed into the ServletContext.
Specified by:
init in interface 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

initializeDigester

protected Digester initializeDigester()
            throws ServletException
Initialize the Digester which will be used to process the main configuration.
Returns:
a Digester, ready to use.

newDigesterInstance

protected Digester newDigesterInstance()
Instantiate a Digester.

Subclasses may wish to override this to provide a subclass of Digester, or to configure the Digester using object methods.

Returns:
a basic instance of org.apache.commons.digester.Digester

setConfigPath

public void setConfigPath(String configPath)
Parameters:
configPath - the path to configuration information for this PlugIn.

setConfigSource

public void setConfigSource(String configSource)
Set the source of the config file. Should be one of the following:
  • "classpath" - indicates that the configPath will be resolved by the ClassLoader.
  • "file" - indicates that the configPath is a fully-qualified filesystem path.
  • "servlet" - indicates that the configPath will be found by the ServletContext.
Parameters:
configSource - the source (lookup method) for the config file.

setDigesterPath

public void setDigesterPath(String digesterPath)
The path to a Digester XML configuration file, relative to the digesterSource property. (Optional)

setDigesterSource

public void setDigesterSource(String digesterSource)
The lookup mechanism to be used to resolve digesterPath (optional).
Parameters:
digesterSource -

setKey

public void setKey(String key)
Parameters:
key - The ServletContext attribute name to store the generated object under.

setPush

public void setPush(boolean push)
If set to true, this PlugIn will be pushed onto the Digester stack before the digester parse method is called.

Defaults to false

Parameters:
push -

setRulesets

public void setRulesets(String ruleSets)
A comma-delimited list of one or more classes which implement org.apache.commons.digester.RuleSet. (Optional)

storeGeneratedObject

protected void storeGeneratedObject(Object obj)
This method is called after the Digester runs to store the generated object somewhere. This implementation places the given object into the ServletContext under the attribute name as defined in key.
Parameters:
obj - The object to save.

Copyright B) 2000-2007 - The Apache Software Foundation