# 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 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 String`
`namespaceURI`
The namespace URI for which this Rule is relevant, if any.
`protected static final StringManager`
`sm`

## Constructor Summary

Constructors
Constructor
Description
`Rule()`
Base constructor.

## Method Summary

Modifier and Type
Method
Description
`void`
`begin(String namespace, String name, Attributes attributes)`
This method is called when the beginning of a matching XML element is encountered.
`void`
`body(String namespace, String name, String text)`
This method is called when the body of a matching XML element is encountered.
`void`
`end(String namespace, 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.
`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(String namespaceURI)`
Set the namespace URI for which this Rule is relevant, if any.

### Methods inherited from class Object

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

## Field Details

### sm

protected static final StringManager sm

### digester

protected Digester digester
The Digester with which this Rule is associated.

### namespaceURI

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

## Constructor Details

### Rule

public Rule()

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

## Method Details

### 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 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(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(String namespace, String name, Attributes attributes) throws 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:
  `Exception` - if an error occurs while processing the event

### body

public void body(String namespace, String name, String text) throws 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:
  `Exception` - if an error occurs while processing the event

### end

public void end(String namespace, String name) throws 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:
  `Exception` - if an error occurs while processing the event

### finish

public void finish() throws Exception
This method is called after all parsing methods have been called, to allow Rules to remove temporary data.

Throws:
  `Exception` - if an error occurs while processing the event