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
    Modifier and Type | Field and 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 String` | `namespaceURI` Deprecated. Unused. Will be removed in Tomcat 9.0.x
    `protected ArrayList<Rule>` | `rules` The set of registered Rule instances, in the order that they were originally registered.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RulesBase()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and 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.
    `String` | `getNamespaceURI()` Return the namespace URI that will be applied to all subsequently added `Rule` objects.
    `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.
    `void` | `setNamespaceURI(String namespaceURI)` Set the namespace URI that will be applied to all subsequently added `Rule` objects.

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

    - #### namespaceURI

          @Deprecated
          protected String namespaceURI

      Deprecated. Unused. Will be removed in Tomcat 9.0.x
      The namespace URI for which subsequently added `Rule` objects are relevant, or `null` for matching independent of namespaces.

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

    - #### getNamespaceURI

          public String getNamespaceURI()

      Return the namespace URI that will be applied to all subsequently added `Rule` objects.
      Specified by:
        `getNamespaceURI` in interface `Rules`
      Returns:
        the namespace URI that will be applied to all subsequently added `Rule` objects.

    - #### setNamespaceURI

          public void setNamespaceURI(String namespaceURI)

      Set the namespace URI that will be applied to all subsequently added `Rule` objects.
      Specified by:
        `setNamespaceURI` in interface `Rules`
      Parameters:
        `namespaceURI` - Namespace URI that must match on all subsequently added rules, or `null` for matching regardless of the current namespace URI

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

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.