Package org.apache.commons.digester3
Class RulesBase
- java.lang.Object
-
- org.apache.commons.digester3.AbstractRulesImpl
-
- org.apache.commons.digester3.RulesBase
-
- All Implemented Interfaces:
Rules
- Direct Known Subclasses:
ExtendedBaseRules
public class RulesBase extends AbstractRulesImpl
Default implementation of the
Rules
interface that supports the standard rule matching behavior. This class can also be used as a base class for specializedRules
implementations.The matching policies implemented by this class support two different types of pattern matching rules:
- Exact Match - A pattern "a/b/c" exactly matches a
<c>
element, nested inside a<b>
element, which is nested inside an<a>
element. - Tail Match - A pattern "*/a/b" matches a
<b>
element, nested inside an<a>
element, no matter how deeply the pair is nested.
Note that wildcard patterns are ignored if an explicit match can be found (and when multiple wildcard patterns match, only the longest, ie most explicit, pattern is considered a match).
See the package documentation for package org.apache.commons.digester3 for more information.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.HashMap<java.lang.String,java.util.List<Rule>>
cache
The set of registered Rule instances, keyed by the matching pattern.protected java.util.ArrayList<Rule>
rules
The set of registered Rule instances, in the order that they were originally registered.
-
Constructor Summary
Constructors Constructor Description RulesBase()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clear all existing Rule instance registrations.protected java.util.List<Rule>
lookup(java.lang.String namespaceURI, java.lang.String pattern)
Return a List of Rule instances for the specified pattern that also match the specified namespace URI (if any).java.util.List<Rule>
match(java.lang.String namespaceURI, java.lang.String pattern, java.lang.String name, org.xml.sax.Attributes attributes)
Return a List of all registered Rule instances that match the specified nesting pattern, or a zero-length List if there are no matches.protected void
registerRule(java.lang.String pattern, Rule rule)
Register rule at given pattern.java.util.List<Rule>
rules()
Return a List of all registered Rule instances, or a zero-length List if there are no registered Rule instances.void
setDigester(Digester digester)
Set the Digester instance with which this Rules instance is associated.-
Methods inherited from class org.apache.commons.digester3.AbstractRulesImpl
add, getDigester, getNamespaceURI, setNamespaceURI
-
-
-
-
Field Detail
-
cache
protected java.util.HashMap<java.lang.String,java.util.List<Rule>> cache
The set of registered Rule instances, keyed by the matching pattern. Each value is a List containing the Rules for that pattern, in the order that they were orginally registered.
-
rules
protected java.util.ArrayList<Rule> rules
The set of registered Rule instances, in the order that they were originally registered.
-
-
Method Detail
-
setDigester
public void setDigester(Digester digester)
Set the Digester instance with which this Rules instance is associated.- Specified by:
setDigester
in interfaceRules
- Overrides:
setDigester
in classAbstractRulesImpl
- Parameters:
digester
- The newly associated Digester instance
-
registerRule
protected void registerRule(java.lang.String pattern, Rule rule)
Register rule at given pattern. The the Digester and namespaceURI properties of the givenRule
can be assumed to have been set properly before this method is called.- Specified by:
registerRule
in classAbstractRulesImpl
- Parameters:
pattern
- Nesting pattern to be matched for this Rulerule
- Rule instance to be registered
-
clear
public void clear()
Clear all existing Rule instance registrations.
-
match
public java.util.List<Rule> match(java.lang.String namespaceURI, java.lang.String pattern, java.lang.String name, org.xml.sax.Attributes attributes)
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:
namespaceURI
- Namespace URI for which to select matching rules, ornull
to match regardless of namespace URIpattern
- Nesting pattern to be matchedname
- the local name if the parser is namespace aware, or just the element name otherwiseattributes
- The attribute list of the current matching element- Returns:
- a List of all registered Rule instances that match the specified nesting pattern
-
rules
public java.util.List<Rule> rules()
Return a List of all registered Rule instances, or a zero-length List if there are no registered Rule instances. If more than one Rule instance has been registered, they must be returned in the order originally registered through theadd()
method.- Returns:
- a List of all registered Rule instances
-
lookup
protected java.util.List<Rule> lookup(java.lang.String namespaceURI, java.lang.String pattern)
Return a List of Rule instances for the specified pattern that also match the specified namespace URI (if any). If there are no such rules, returnnull
.- Parameters:
namespaceURI
- Namespace URI to match, ornull
to select matching rules regardless of namespace URIpattern
- Pattern to be matched- Returns:
- a List of Rule instances for the specified pattern that also match the specified namespace URI (if any)
-
-