Package org.apache.tomcat.util.digester

## Class Rule

- java.lang.Object
- - org.apache.tomcat.util.digester.Rule

- Direct Known Subclasses:
    `AddPortOffsetRule`, `CallMethodRule`, `CallParamRule`, `CertificateCreateRule`, `ConnectorCreateRule`, `CopyParentClassLoaderRule`, `FactoryCreateRule`, `LifecycleListenerRule`, `ObjectCreateRule`, `SetNextNamingRule`, `SetNextRule`, `SetPropertiesRule`, `StoreFactoryRule`

      public abstract class Rule
      extends java.lang.Object

  Concrete implementations of this class implement actions to be taken when a corresponding nested pattern of XML elements has been matched.

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected Digester` | `digester` | The Digester with which this Rule is associated.
    `protected java.lang.String` | `namespaceURI` | The namespace URI for which this Rule is relevant, if any.
    `protected static StringManager` | `sm` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Rule()` | Base constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `begin​(java.lang.String namespace, java.lang.String name, org.xml.sax.Attributes attributes)` | This method is called when the beginning of a matching XML element is encountered.
    `void` | `body​(java.lang.String namespace, java.lang.String name, java.lang.String text)` | This method is called when the body of a matching XML element is encountered.
    `void` | `end​(java.lang.String namespace, java.lang.String name)` | This method is called when the end of a matching XML element is encountered.
    `void` | `finish()` | This method is called after all parsing methods have been called, to allow Rules to remove temporary data.
    `Digester` | `getDigester()` | Identify the Digester with which this Rule is associated.
    `java.lang.String` | `getNamespaceURI()` | Return the namespace URI for which this Rule is relevant, if any.
    `void` | `setDigester​(Digester digester)` | Set the `Digester` with which this `Rule` is associated.
    `void` | `setNamespaceURI​(java.lang.String namespaceURI)` | Set the namespace URI for which this Rule is relevant, if any.

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### sm

          protected static final StringManager sm

    - #### digester

          protected Digester digester

      The Digester with which this Rule is associated.

    - #### namespaceURI

          protected java.lang.String namespaceURI

      The namespace URI for which this Rule is relevant, if any.

  - ### Constructor Detail

    - #### Rule

          public Rule()

      Base constructor. Now the digester will be set when the rule is added.

  - ### Method Detail

    - #### getDigester

          public Digester getDigester()

      Identify the Digester with which this Rule is associated.
      Returns:
        the Digester with which this Rule is associated.

    - #### setDigester

          public void setDigester​(Digester digester)

      Set the `Digester` with which this `Rule` is associated.
      Parameters:
        `digester` - The digester with which to associate this rule

    - #### getNamespaceURI

          public java.lang.String getNamespaceURI()

      Return the namespace URI for which this Rule is relevant, if any.
      Returns:
        The namespace URI for which this rule is relevant or `null` if none.

    - #### setNamespaceURI

          public void setNamespaceURI​(java.lang.String namespaceURI)

      Set the namespace URI for which this Rule is relevant, if any.
      Parameters:
        `namespaceURI` - Namespace URI for which this Rule is relevant, or `null` to match independent of namespace.

    - #### begin

          public void begin​(java.lang.String namespace,
                            java.lang.String name,
                            org.xml.sax.Attributes attributes)
                     throws java.lang.Exception

      This method is called when the beginning of a matching XML element is encountered. The default implementation is a NO-OP.
      Parameters:
        `namespace` - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element has no namespace
        `name` - the local name if the parser is namespace aware, or just the element name otherwise
        `attributes` - The attribute list of this element
      Throws:
        `java.lang.Exception` - if an error occurs while processing the event

    - #### body

          public void body​(java.lang.String namespace,
                           java.lang.String name,
                           java.lang.String text)
                    throws java.lang.Exception

      This method is called when the body of a matching XML element is encountered. If the element has no body, this method is not called at all. The default implementation is a NO-OP.
      Parameters:
        `namespace` - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element has no namespace
        `name` - the local name if the parser is namespace aware, or just the element name otherwise
        `text` - The text of the body of this element
      Throws:
        `java.lang.Exception` - if an error occurs while processing the event

    - #### end

          public void end​(java.lang.String namespace,
                          java.lang.String name)
                   throws java.lang.Exception

      This method is called when the end of a matching XML element is encountered. The default implementation is a NO-OP.
      Parameters:
        `namespace` - the namespace URI of the matching element, or an empty string if the parser is not namespace aware or the element has no namespace
        `name` - the local name if the parser is namespace aware, or just the element name otherwise
      Throws:
        `java.lang.Exception` - if an error occurs while processing the event

    - #### finish

          public void finish()
                      throws java.lang.Exception

      This method is called after all parsing methods have been called, to allow Rules to remove temporary data.
      Throws:
        `java.lang.Exception` - if an error occurs while processing the event