# 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