AbstractJspRule.java
001 /**
002  * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
003  */
004 package net.sourceforge.pmd.lang.jsp.rule;
005 
006 import java.util.List;
007 
008 import net.sourceforge.pmd.RuleContext;
009 import net.sourceforge.pmd.lang.Language;
010 import net.sourceforge.pmd.lang.ast.Node;
011 import net.sourceforge.pmd.lang.jsp.ast.ASTAttribute;
012 import net.sourceforge.pmd.lang.jsp.ast.ASTAttributeValue;
013 import net.sourceforge.pmd.lang.jsp.ast.ASTCData;
014 import net.sourceforge.pmd.lang.jsp.ast.ASTCommentTag;
015 import net.sourceforge.pmd.lang.jsp.ast.ASTCompilationUnit;
016 import net.sourceforge.pmd.lang.jsp.ast.ASTContent;
017 import net.sourceforge.pmd.lang.jsp.ast.ASTDeclaration;
018 import net.sourceforge.pmd.lang.jsp.ast.ASTDoctypeDeclaration;
019 import net.sourceforge.pmd.lang.jsp.ast.ASTDoctypeExternalId;
020 import net.sourceforge.pmd.lang.jsp.ast.ASTElExpression;
021 import net.sourceforge.pmd.lang.jsp.ast.ASTElement;
022 import net.sourceforge.pmd.lang.jsp.ast.ASTJspComment;
023 import net.sourceforge.pmd.lang.jsp.ast.ASTJspDeclaration;
024 import net.sourceforge.pmd.lang.jsp.ast.ASTJspDirective;
025 import net.sourceforge.pmd.lang.jsp.ast.ASTJspDirectiveAttribute;
026 import net.sourceforge.pmd.lang.jsp.ast.ASTJspExpression;
027 import net.sourceforge.pmd.lang.jsp.ast.ASTJspExpressionInAttribute;
028 import net.sourceforge.pmd.lang.jsp.ast.ASTJspScriptlet;
029 import net.sourceforge.pmd.lang.jsp.ast.ASTText;
030 import net.sourceforge.pmd.lang.jsp.ast.ASTUnparsedText;
031 import net.sourceforge.pmd.lang.jsp.ast.ASTValueBinding;
032 import net.sourceforge.pmd.lang.jsp.ast.JspNode;
033 import net.sourceforge.pmd.lang.jsp.ast.JspParserVisitor;
034 import net.sourceforge.pmd.lang.rule.AbstractRule;
035 import net.sourceforge.pmd.lang.rule.ImmutableLanguage;
036 
037 public abstract class AbstractJspRule extends AbstractRule implements JspParserVisitor, ImmutableLanguage {
038     
039     public AbstractJspRule() {
040   super.setLanguage(Language.JSP);
041     }
042 
043     @Override
044     public void setUsesTypeResolution() {
045   // No Type resolution for JSP rules?
046     }
047 
048     public void apply(List<? extends Node> nodes, RuleContext ctx) {
049   visitAll(nodes, ctx);
050     }
051 
052     protected void visitAll(List<? extends Node> nodes, RuleContext ctx) {
053   for (Object element : nodes) {
054       JspNode node = (JspNodeelement;
055       visit(node, ctx);
056   }
057     }
058 
059     //
060     // The following APIs are identical to those in JspParserVisitorAdapter.
061     // Due to Java single inheritance, it preferred to extend from the more
062     // complex Rule base class instead of from relatively simple Visitor.
063     //
064 
065     public Object visit(JspNode node, Object data) {
066   node.childrenAccept(this, data);
067   return null;
068     }
069 
070     public Object visit(ASTCompilationUnit node, Object data) {
071   return visit((JspNodenode, data);
072     }
073 
074     public Object visit(ASTContent node, Object data) {
075   return visit((JspNodenode, data);
076     }
077 
078     public Object visit(ASTJspDirective node, Object data) {
079   return visit((JspNodenode, data);
080     }
081 
082     public Object visit(ASTJspDirectiveAttribute node, Object data) {
083   return visit((JspNodenode, data);
084     }
085 
086     public Object visit(ASTJspScriptlet node, Object data) {
087   return visit((JspNodenode, data);
088     }
089 
090     public Object visit(ASTJspExpression node, Object data) {
091   return visit((JspNodenode, data);
092     }
093 
094     public Object visit(ASTJspDeclaration node, Object data) {
095   return visit((JspNodenode, data);
096     }
097 
098     public Object visit(ASTJspComment node, Object data) {
099   return visit((JspNodenode, data);
100     }
101 
102     public Object visit(ASTText node, Object data) {
103   return visit((JspNodenode, data);
104     }
105 
106     public Object visit(ASTUnparsedText node, Object data) {
107   return visit((JspNodenode, data);
108     }
109 
110     public Object visit(ASTElExpression node, Object data) {
111   return visit((JspNodenode, data);
112     }
113 
114     public Object visit(ASTValueBinding node, Object data) {
115   return visit((JspNodenode, data);
116     }
117 
118     public Object visit(ASTCData node, Object data) {
119   return visit((JspNodenode, data);
120     }
121 
122     public Object visit(ASTElement node, Object data) {
123   return visit((JspNodenode, data);
124     }
125 
126     public Object visit(ASTAttribute node, Object data) {
127   return visit((JspNodenode, data);
128     }
129 
130     public Object visit(ASTAttributeValue node, Object data) {
131   return visit((JspNodenode, data);
132     }
133 
134     public Object visit(ASTJspExpressionInAttribute node, Object data) {
135   return visit((JspNodenode, data);
136     }
137 
138     public Object visit(ASTCommentTag node, Object data) {
139   return visit((JspNodenode, data);
140     }
141 
142     public Object visit(ASTDeclaration node, Object data) {
143   return visit((JspNodenode, data);
144     }
145 
146     public Object visit(ASTDoctypeDeclaration node, Object data) {
147   return visit((JspNodenode, data);
148     }
149 
150     public Object visit(ASTDoctypeExternalId node, Object data) {
151   return visit((JspNodenode, data);
152     }
153 }