Class RulesBase

All Implemented Interfaces:
Rules
Direct Known Subclasses:
ExtendedBaseRules

public class RulesBase extends AbstractRulesImpl

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.

Note that wildcard patterns are ignored if an explicit match can be found (and when multiple wildcard patterns match, only the longest, ie most explicit, pattern is considered a match).

See the package documentation for package org.apache.commons.digester3 for more information.

  • 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 orginally registered.
    • 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

    • setDigester

      public void setDigester(Digester digester)
      Set the Digester instance with which this Rules instance is associated.
      Specified by:
      setDigester in interface Rules
      Overrides:
      setDigester in class AbstractRulesImpl
      Parameters:
      digester - The newly associated Digester instance
    • registerRule

      protected void registerRule(String pattern, Rule rule)
      Register rule at given pattern. The the Digester and namespaceURI properties of the given Rule can be assumed to have been set properly before this method is called.
      Specified by:
      registerRule in class AbstractRulesImpl
      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.
    • match

      public List<Rule> match(String namespaceURI, String pattern, String name, Attributes attributes)
      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.
      Parameters:
      namespaceURI - Namespace URI for which to select matching rules, or null to match regardless of namespace URI
      pattern - Nesting pattern to be matched
      name - the local name if the parser is namespace aware, or just the element name otherwise
      attributes - The attribute list of the current matching element
      Returns:
      a List of all registered Rule instances that match the specified nesting pattern
    • 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.
      Returns:
      a List of all registered Rule instances
    • 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 List of Rule instances for the specified pattern that also match the specified namespace URI (if any)