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>>
    The set of registered Rule instances, keyed by the matching pattern.
    protected Digester
    The Digester instance with which this Rules instance is associated.
    protected String
    Deprecated.
    Unused.
    protected ArrayList<Rule>
    The set of registered Rule instances, in the order that they were originally registered.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    add(String pattern, Rule rule)
    Register a new Rule instance matching the specified pattern.
    void
    Clear all existing Rule instance registrations.
    Return the Digester instance with which this Rules instance is associated.
    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).
    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.
    Return a List of all registered Rule instances, or a zero-length List if there are no registered Rule instances.
    void
    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 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.
    • 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 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
    • 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