net.sourceforge.pmd.lang.rule

## Class AbstractRuleChainVisitor

- java.lang.Object
- - net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor

All Implemented Interfaces:
  RuleChainVisitor

Direct Known Subclasses:
  EcmascriptRuleChainVisitor, JavaRuleChainVisitor, JspRuleChainVisitor, XmlRuleChainVisitor

    public abstract class AbstractRuleChainVisitor
    extends Object
    implements RuleChainVisitor

This is a base class for RuleChainVisitor implementations which extracts interesting nodes from an AST, and lets each Rule visit the nodes it has expressed interest in.

### Field Summary

Fields
`protected Map<String,List<Node>>` `nodeNameToNodes` This is a mapping from node names to nodes instances for the current AST.
`protected Map<RuleSet,List<Rule>>` `ruleSetRules` These are all the rules participating in the RuleChain, grouped by RuleSet.

### Constructor Summary

Constructors
Constructor and Description
`AbstractRuleChainVisitor()`

### Method Summary

Methods
`void` `add(RuleSet ruleSet, Rule rule)` Add the given rule to the visitor.
`protected void` `clear()` Clears the internal data structure used to manage the nodes visited between visiting different ASTs.
`protected void` `indexNode(Node node)` Index a single node for visitation by rules.
`protected abstract void` `indexNodes(List<Node> nodes, RuleContext ctx)` Index all nodes for visitation by rules.
`protected void` `initialize()` Initialize the RuleChainVisitor to be ready to perform visitations.
`protected abstract void` `visit(Rule rule, Node node, RuleContext ctx)` Visit the given rule to the given node.
`void` `visitAll(List<Node> nodes, RuleContext ctx)` Visit all the given Nodes provided using the given RuleContext.

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

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

### Field Detail

#### ruleSetRules

    protected Map<RuleSet,List<Rule>> ruleSetRules

These are all the rules participating in the RuleChain, grouped by RuleSet.

#### nodeNameToNodes

    protected Map<String,List<Node>> nodeNameToNodes

This is a mapping from node names to nodes instances for the current AST.

### Constructor Detail

#### AbstractRuleChainVisitor

    public AbstractRuleChainVisitor()

### Method Detail

#### add

    public void add(RuleSet ruleSet,
           Rule rule)

Description copied from interface: `RuleChainVisitor`
Add the given rule to the visitor.

Specified by:
  `add` in interface `RuleChainVisitor`
Parameters:
  `ruleSet` - The RuleSet to which the rule belongs.
  `rule` - The rule to add.
See Also:
  `RuleChainVisitor.add(RuleSet, Rule)`

#### visitAll

    public void visitAll(List<Node> nodes,
                RuleContext ctx)

Description copied from interface: `RuleChainVisitor`
Visit all the given Nodes provided using the given RuleContext. Every Rule added will visit the AST as appropriate.

Specified by:
  `visitAll` in interface `RuleChainVisitor`
Parameters:
  `nodes` - The Nodes to visit.
  `ctx` - The RuleContext.
See Also:
  `RuleChainVisitor.visitAll(List, RuleContext)`

#### visit

    protected abstract void visit(Rule rule,
             Node node,
             RuleContext ctx)

Visit the given rule to the given node.

#### indexNodes

    protected abstract void indexNodes(List<Node> nodes,
                  RuleContext ctx)

Index all nodes for visitation by rules.

#### indexNode

    protected void indexNode(Node node)

Index a single node for visitation by rules.

#### initialize

    protected void initialize()

Initialize the RuleChainVisitor to be ready to perform visitations. This method should not be called until it is known that all Rules participating in the RuleChain are ready to be initialized themselves. Some rules may require full initialization to determine if they will participate in the RuleChain, so this has been delayed as long as possible to ensure that manipulation of the Rules is no longer occurring.

#### clear

    protected void clear()

Clears the internal data structure used to manage the nodes visited between visiting different ASTs.