Package org.apache.tomcat.util.digester

## Class RulesBase

- java.lang.Object
- - org.apache.tomcat.util.digester.RulesBase

All Implemented Interfaces:
  `Rules`

    public class RulesBase
    extends Object
    implements Rules

Default implementation of the `Rules` interface that supports the standard rule matching behavior. This class can also be used as a base class for specialized `Rules` 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.

### Field Summary

Fields
`protected HashMap<String,​List<Rule>>` `cache` The set of registered Rule instances, keyed by the matching pattern.
`protected Digester` `digester` The Digester instance with which this Rules instance is associated.
`protected ArrayList<Rule>` `rules` The set of registered Rule instances, in the order that they were originally registered.

### Constructor Summary

Constructors
`RulesBase()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `add​(String pattern, Rule rule)` Register a new Rule instance matching the specified pattern.
`void` `clear()` Clear all existing Rule instance registrations.
`Digester` `getDigester()` Return the Digester instance with which this Rules instance is associated.
`protected List<Rule>` `lookup​(String namespaceURI, String pattern)` Return a List of Rule instances for the specified pattern that also match the specified namespace URI (if any).
`List<Rule>` `match​(String namespaceURI, String pattern)` 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<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 java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### cache

    protected HashMap<String,​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 originally registered.

#### digester

    protected Digester digester

The Digester instance with which this Rules instance is associated.

#### rules

    protected ArrayList<Rule> rules

The set of registered Rule instances, in the order that they were originally registered.

### Constructor Detail

#### RulesBase

    public RulesBase()

### Method Detail

#### getDigester

    public Digester getDigester()

Return the Digester instance with which this Rules instance is associated.

Specified by:
  `getDigester` in interface `Rules`
Returns:
  the Digester instance with which this Rules instance is associated.

#### setDigester

    public void setDigester​(Digester digester)

Set the Digester instance with which this Rules instance is associated.

Specified by:
  `setDigester` in interface `Rules`
Parameters:
  `digester` - The newly associated Digester instance

#### add

    public void add​(String pattern,
                    Rule rule)

Register a new Rule instance matching the specified pattern.

Specified by:
  `add` in interface `Rules`
Parameters:
  `pattern` - Nesting pattern to be matched for this Rule
  `rule` - Rule instance to be registered

#### clear

    public void clear()

Clear all existing Rule instance registrations.

Specified by:
  `clear` in interface `Rules`

#### match

    public List<Rule> match​(String namespaceURI,
                            String pattern)

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 the `add()` method.

Specified by:
  `match` in interface `Rules`
Parameters:
  `namespaceURI` - Namespace URI for which to select matching rules, or `null` to match regardless of namespace URI
  `pattern` - Nesting pattern to be matched
Returns:
  a rules list

#### rules

    public 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 the `add()` method.

Specified by:
  `rules` in interface `Rules`
Returns:
  a rules list

#### lookup

    protected List<Rule> lookup​(String namespaceURI,
                                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, return `null`.

Parameters:
  `namespaceURI` - Namespace URI to match, or `null` to select matching rules regardless of namespace URI
  `pattern` - Pattern to be matched
Returns:
  a rules list