Class PluginManager

java.lang.Object
org.apache.commons.digester3.plugins.PluginManager

public class PluginManager extends Object
Coordinates between PluginDeclarationRule and PluginCreateRule objects, providing a place to share data between instances of these rules.

One instance of this class exists per PluginRules instance.

Since:
1.6
  • Field Details

    • declarationsByClass

      private HashMap<String,Declaration> declarationsByClass
      Map of classname->Declaration
    • declarationsById

      private HashMap<String,Declaration> declarationsById
      Map of id->Declaration
    • parent

      private PluginManager parent
      the parent manager to which this one may delegate lookups.
    • pluginContext

      private PluginContext pluginContext
      The object containing data that should only exist once for each Digester instance.
  • Constructor Details

    • PluginManager

      public PluginManager(PluginContext r)
      Construct a "root" PluginManager, ie one with no parent.
      Parameters:
      r - The object containing data that should only exist once for each Digester instance.
    • PluginManager

      public PluginManager(PluginManager parent)
      Construct a "child" PluginManager. When declarations are added to a "child", they are stored within the child and do not modify the parent, so when the child goes out of scope, those declarations disappear. When asking a "child" to retrieve a declaration, it delegates the search to its parent if it does not hold a matching entry itself.

      Parameters:
      parent - must be non-null.
  • Method Details

    • addDeclaration

      public void addDeclaration(Declaration decl)
      Add the declaration to the set of known declarations.

      TODO: somehow get a reference to a Digester object so that we can really log here. Currently, all logging is disabled from this method.

      Parameters:
      decl - an object representing a plugin class.
    • getDeclarationByClass

      public Declaration getDeclarationByClass(String className)
      Return the declaration object with the specified class. If no such plugin is known, null is returned.
      Parameters:
      className - The Declaration class name
      Returns:
      The Declaration instance obtained by the input class name
    • getDeclarationById

      public Declaration getDeclarationById(String id)
      Return the declaration object with the specified id. If no such plugin is known, null is returned.
      Parameters:
      id - Description of the Parameter
      Returns:
      The declaration value
    • findLoader

      public RuleLoader findLoader(Digester digester, String id, Class<?> pluginClass, Properties props) throws PluginException
      Given a plugin class and some associated properties, scan the list of known RuleFinder instances until one detects a source of custom rules for this plugin (aka a RuleLoader).

      If no source of custom rules can be found, null is returned.

      Parameters:
      digester - The digester instance where locating plugin classes
      id - The id that the user associated with a particular plugin declaration in the input xml
      pluginClass - The plugin Java class
      props - The properties object that holds any xml attributes the user may have specified on the plugin declaration in order to indicate how to locate the plugin rules.
      Returns:
      The discovered Rule loader instance
      Throws:
      PluginException - if any error occurs while finding the loader