org.apache.commons.digester.plugins

Class 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 Summary
HashMapdeclarationsByClass
Map of classname->Declaration
HashMapdeclarationsById
Map of id->Declaration
PluginManagerparent
the parent manager to which this one may delegate lookups.
PluginContextpluginContext
The object containing data that should only exist once for each Digester instance.
Constructor Summary
PluginManager(PluginContext r)
Construct a "root" PluginManager, ie one with no parent.
PluginManager(PluginManager parent)
Construct a "child" PluginManager.
Method Summary
voidaddDeclaration(Declaration decl)
Add the declaration to the set of known declarations.
RuleLoaderfindLoader(Digester digester, String id, Class pluginClass, Properties props)
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).
DeclarationgetDeclarationByClass(String className)
Return the declaration object with the specified class.
DeclarationgetDeclarationById(String id)
Return the declaration object with the specified id.

Field Detail

declarationsByClass

private HashMap declarationsByClass
Map of classname->Declaration

declarationsById

private HashMap 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 Detail

PluginManager

public PluginManager(PluginContext r)
Construct a "root" PluginManager, ie one with no parent.

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 Detail

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.

findLoader

public RuleLoader findLoader(Digester digester, String id, Class pluginClass, Properties props)
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.

getDeclarationByClass

public Declaration getDeclarationByClass(String className)
Return the declaration object with the specified class. If no such plugin is known, null is returned.

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

Copyright 2001-2005 The Apache Software Foundation.