1 package net.sourceforge.pmd.jsp.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 import net.sourceforge.pmd.ast.CompilationUnit;
10
11 public class JspRuleChainVisitor extends AbstractRuleChainVisitor {
12
13 protected void indexNodes(List<CompilationUnit> astCompilationUnits, RuleContext ctx) {
14 JspParserVisitor jspParserVisitor = new JspParserVisitorAdapter() {
15
16
17 public Object visit(SimpleNode node, Object data) {
18 indexNode(node);
19 return super.visit(node, data);
20 }
21 };
22
23 for (int i = 0; i < astCompilationUnits.size(); i++) {
24 jspParserVisitor.visit((ASTCompilationUnit)astCompilationUnits.get(i), ctx);
25 }
26 }
27
28 protected void visit(Rule rule, net.sourceforge.pmd.ast.SimpleNode node, RuleContext ctx) {
29
30 if (rule instanceof JspParserVisitor) {
31 ((SimpleNode) node).jjtAccept((JspParserVisitor) rule, ctx);
32 } else {
33 ((XPathRule) rule).evaluate(node, ctx);
34 }
35 }
36 }