org.apache.commons.digester.plugins
public class PluginRules extends Object implements Rules
During parsing, a linked list of PluginCreateRule instances develop, and this list also acts like a stack. The original instance that was set before the Digester started parsing is always at the tail of the list, and the Digester always holds a reference to the instance at the head of the list in the rules member. Initially, this list/stack holds just one instance, ie head and tail are the same object.
When the start of an xml element causes a PluginCreateRule to fire, a new PluginRules instance is created and inserted at the head of the list (ie pushed onto the stack of Rules objects). Digester.getRules() therefore returns this new Rules object, and any custom rules associated with that plugin are added to that instance.
When the end of the xml element is encountered (and therefore the PluginCreateRule end method fires), the stack of Rules objects is popped, so that Digester.getRules returns the previous Rules object.
Since: 1.6
Field Summary | |
---|---|
Rules | decoratedRules
The rules implementation that we are "enhancing" with plugins
functionality, as per the Decorator pattern. |
protected Digester | digester
The Digester instance with which this Rules instance is associated. |
String | mountPoint
The path below which this rules object has responsibility.
|
PluginRules | parent
The Rules object that holds rules applying "above" the mountpoint,
ie the next Rules object down in the stack. |
PluginContext | pluginContext
A reference to the object that holds all data which should only
exist once per digester instance. |
PluginManager | pluginManager Object which contains information about all known plugins. |
RulesFactory | rulesFactory
The (optional) object which generates new rules instances. |
Constructor Summary | |
---|---|
PluginRules()
Constructor for top-level Rules objects. | |
PluginRules(Rules decoratedRules)
Constructor for top-level Rules object which handles rule-matching
using the specified implementation. | |
PluginRules(Digester digester, String mountPoint, PluginRules parent, Class pluginClass)
Constructs a Rules instance which has a parent Rules object
(which is different from having a delegate rules object).
|
Method Summary | |
---|---|
void | add(String pattern, Rule rule)
Register a new Rule instance matching the specified pattern.
|
void | clear()
Clear all rules. |
Rules | getDecoratedRules()
This package-scope method is used by the PluginCreateRule class to
get direct access to the rules that were dynamically added by the
plugin. |
Digester | getDigester()
Return the Digester instance with which this instance is associated. |
String | getNamespaceURI()
Return the namespace URI that will be applied to all subsequently
added Rule objects. |
Rules | getParent()
Return the parent Rules object. |
String | getPluginClassAttr() See {@link PluginContext#getPluginClassAttr}. |
String | getPluginClassAttrNs() See {@link PluginContext#getPluginClassAttrNs}. |
String | getPluginIdAttr() See {@link PluginContext#getPluginIdAttr}. |
String | getPluginIdAttrNs() See {@link PluginContext#getPluginIdAttrNs}. |
PluginManager | getPluginManager()
Return the object which "knows" about all declared plugins.
|
List | getRuleFinders()
See {@link PluginContext#getRuleFinders}. |
RulesFactory | getRulesFactory()
Return the rules factory object (or null if one has not been specified). |
List | match(String path)
Return a List of all registered Rule instances that match the specified
nesting pattern, or a zero-length List if there are no matches. |
List | match(String namespaceURI, String path)
Return a List of all registered Rule instances that match the specified
nodepath, or a zero-length List if there are no matches. |
List | rules()
Return the list of rules registered with this object, in the order
they were registered with this object.
|
void | setDigester(Digester digester)
Set the Digester instance with which this Rules instance is associated.
|
void | setNamespaceURI(String namespaceURI)
Set the namespace URI that will be applied to all subsequently
added Rule objects.
|
void | setPluginClassAttribute(String namespaceUri, String attrName) See {@link PluginContext#setPluginClassAttribute}. |
void | setPluginIdAttribute(String namespaceUri, String attrName) See {@link PluginContext#setPluginIdAttribute}. |
void | setRuleFinders(List ruleFinders)
See {@link PluginContext#setRuleFinders}. |
void | setRulesFactory(RulesFactory factory)
Set the object which is used to generate the new Rules instances created
to hold and process the rules associated with each plugged-in class. |
One of these is created each time a PluginCreateRule's begin method fires, in order to manage the custom rules associated with whatever concrete plugin class the user has specified.
Parameters: digester is the object this rules will be associated with. mountPoint is the digester match path for the element matching a PluginCreateRule which caused this "nested parsing scope" to begin. This is expected to be equal to digester.getMatch(). parent must be non-null. pluginClass is the plugin class whose custom rules will be loaded into this new PluginRules object.
Parameters: pattern Nesting pattern to be matched for this Rule. This parameter treats equally patterns that begin with and without a leading slash ('/'). rule Rule instance to be registered
Rule
objects.Returns: The pluginManager value
Deprecated: Call match(namespaceURI,pattern) instead.
Return a List of all registered Rule instances that match the specified nesting pattern, or a zero-length List if there are no matches. If more than one Rule instance matches, they must be returned in the order originally registered through theadd()
method.
Parameters: path the path to the xml nodes to be matched.
add()
method.
Parameters: namespaceURI Namespace URI for which to select matching rules,
or null
to match regardless of namespace URI path the path to the xml nodes to be matched.
Note that Rule objects stored in parent Rules objects are not returned by this method.
Returns: list of all Rule objects known to this Rules instance.
Parameters: digester The newly associated Digester instance
Rule
objects.
Parameters: namespaceURI Namespace URI that must match on all
subsequently added rules, or null
for matching
regardless of the current namespace URI