1 package net.sourceforge.pmd.ast;
2
3 import java.util.List;
4
5 import net.sourceforge.pmd.AbstractRuleChainVisitor;
6 import net.sourceforge.pmd.Rule;
7 import net.sourceforge.pmd.RuleContext;
8 import net.sourceforge.pmd.rules.XPathRule;
9
10 public class JavaRuleChainVisitor extends AbstractRuleChainVisitor {
11
12 protected void indexNodes(List<CompilationUnit> astCompilationUnits, RuleContext ctx) {
13 JavaParserVisitor javaParserVistor = new JavaParserVisitorAdapter() {
14
15
16 public Object visit(SimpleJavaNode node, Object data) {
17 indexNode(node);
18 return super.visit(node, data);
19 }
20 };
21
22 for (int i = 0; i < astCompilationUnits.size(); i++) {
23 javaParserVistor.visit((ASTCompilationUnit)astCompilationUnits.get(i), ctx);
24 }
25 }
26
27 protected void visit(Rule rule, SimpleNode node, RuleContext ctx) {
28
29 if (rule instanceof XPathRule) {
30 ((XPathRule)rule).evaluate(node, ctx);
31 } else {
32 ((SimpleJavaNode)node).jjtAccept((JavaParserVisitor)rule, ctx);
33 }
34 }
35 }