# 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
Modifier and Type
Field
Description
`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
Constructor
Description
`RulesBase()`

## Method Summary

Modifier and Type
Method
Description
`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 Object

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

## Field Details

### 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 Details

### RulesBase

public RulesBase()

## Method Details

### 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