Class ChainListener

java.lang.Object
org.apache.commons.chain.web.ChainListener
All Implemented Interfaces:
EventListener, javax.servlet.ServletContextListener

public class ChainListener extends Object implements javax.servlet.ServletContextListener

ServletContextListener that automatically scans chain configuration files in the current web application at startup time, and exposes the result in a Catalog under a specified servlet context attribute. The following context init parameters are utilized:

  • org.apache.commons.chain.CONFIG_CLASS_RESOURCE - comma-delimited list of chain configuration resources to be loaded via ClassLoader.getResource() calls. If not specified, no class loader resources will be loaded.
  • org.apache.commons.chain.CONFIG_WEB_RESOURCE - comma-delimited list of chain configuration webapp resources to be loaded. If not specified, no web application resources will be loaded.
  • org.apache.commons.chain.CONFIG_ATTR - Name of the servlet context attribute under which the resulting Catalog will be created or updated. If not specified, it is expected that parsed resources will contain <catalog> elements (which will cause registration of the created Catalogs into the CatalogFactory for this application, and no servet context attribute will be created. NOTE - This parameter is deprecated.

  • org.apache.commons.chain.RULE_SET - Fully qualified class name of a Digester RuleSet implementation to use for parsing configuration resources (this class must have a public zero-args constructor). If not defined, the standard RuleSet implementation will be used.

When a web application that has configured this listener is started, it will acquire the Catalog under the specified servlet context attribute key, creating a new one if there is none already there. This Catalog will then be populated by scanning configuration resources from the following sources (loaded in this order):

  • Resources loaded from any META-INF/chain-config.xml resource found in a JAR file in /WEB-INF/lib.
  • Resources loaded from specified resource paths from the webapp's class loader (via ClassLoader.getResource()).
  • Resources loaded from specified resource paths in the web application archive (via ServetContext.getResource()).

If no attribute key is specified, on the other hand, parsed configuration resources are expected to contain <catalog> elements, and the catalogs will be registered with the CatalogFactory for this web application.

This class requires Servlet 2.3 or later. If you are running on Servlet 2.2 system, consider using ChainServlet instead. Note that ChainServlet uses parameters of the same names, but they are servlet init parameters instead of context init parameters. Because of this, you can use both facilities in the same application, if desired.

Version:
$Revision: 658426 $ $Date: 2008-05-20 21:55:38 +0100 (Tue, 20 May 2008) $
Author:
Craig R. McClanahan, Ted Husted
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The name of the context init parameter containing the name of the servlet context attribute under which our resulting Catalog will be stored.
    static final String
    The name of the context init parameter containing a comma-delimited list of class loader resources to be scanned.
    static final String
    The name of the context init parameter containing a comma-delimited list of web applicaton resources to be scanned.
    static final String
    The name of the context init parameter containing the fully qualified class name of the RuleSet implementation for configuring our ConfigParser.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    contextDestroyed(javax.servlet.ServletContextEvent event)
    Remove the configured Catalog from the servlet context attributes for this web application.
    void
    contextInitialized(javax.servlet.ServletContextEvent event)
    Scan the required chain configuration resources, assemble the configured chains into a Catalog, and expose it as a servlet context attribute under the specified key.
    private void
    parseJarResources(javax.servlet.ServletContext context, ConfigParser parser, org.apache.commons.logging.Log log)
    Parse resources found in JAR files in the /WEB-INF/lib subdirectory (if any).
    private void
    parseJarResources(Catalog catalog, javax.servlet.ServletContext context, ConfigParser parser, org.apache.commons.logging.Log log)
    Deprecated.
    Use the variant that does not take a catalog, on a configuration resource containing "catalog" element(s)
    private String
    Translate space character into &pct;20 to avoid problems with paths that contain spaces on some JVMs.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • CONFIG_ATTR

      public static final String CONFIG_ATTR

      The name of the context init parameter containing the name of the servlet context attribute under which our resulting Catalog will be stored.

      See Also:
    • CONFIG_CLASS_RESOURCE

      public static final String CONFIG_CLASS_RESOURCE

      The name of the context init parameter containing a comma-delimited list of class loader resources to be scanned.

      See Also:
    • CONFIG_WEB_RESOURCE

      public static final String CONFIG_WEB_RESOURCE

      The name of the context init parameter containing a comma-delimited list of web applicaton resources to be scanned.

      See Also:
    • RULE_SET

      public static final String RULE_SET

      The name of the context init parameter containing the fully qualified class name of the RuleSet implementation for configuring our ConfigParser.

      See Also:
  • Constructor Details

    • ChainListener

      public ChainListener()
  • Method Details

    • contextDestroyed

      public void contextDestroyed(javax.servlet.ServletContextEvent event)

      Remove the configured Catalog from the servlet context attributes for this web application.

      Specified by:
      contextDestroyed in interface javax.servlet.ServletContextListener
      Parameters:
      event - ServletContextEvent to be processed
    • contextInitialized

      public void contextInitialized(javax.servlet.ServletContextEvent event)

      Scan the required chain configuration resources, assemble the configured chains into a Catalog, and expose it as a servlet context attribute under the specified key.

      Specified by:
      contextInitialized in interface javax.servlet.ServletContextListener
      Parameters:
      event - ServletContextEvent to be processed
    • parseJarResources

      private void parseJarResources(javax.servlet.ServletContext context, ConfigParser parser, org.apache.commons.logging.Log log)

      Parse resources found in JAR files in the /WEB-INF/lib subdirectory (if any).

      Parameters:
      context - ServletContext for this web application
      parser - ConfigParser to use for parsing
    • parseJarResources

      private void parseJarResources(Catalog catalog, javax.servlet.ServletContext context, ConfigParser parser, org.apache.commons.logging.Log log)
      Deprecated.
      Use the variant that does not take a catalog, on a configuration resource containing "catalog" element(s)

      Parse resources found in JAR files in the /WEB-INF/lib subdirectory (if any).

      Parameters:
      catalog - Catalog we are populating
      context - ServletContext for this web application
      parser - ConfigParser to use for parsing
    • translate

      private String translate(String value)

      Translate space character into &pct;20 to avoid problems with paths that contain spaces on some JVMs.

      Parameters:
      value - Value to translate