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 = (JspNode) element;
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((JspNode) node, data);
072 }
073
074 public Object visit(ASTContent node, Object data) {
075 return visit((JspNode) node, data);
076 }
077
078 public Object visit(ASTJspDirective node, Object data) {
079 return visit((JspNode) node, data);
080 }
081
082 public Object visit(ASTJspDirectiveAttribute node, Object data) {
083 return visit((JspNode) node, data);
084 }
085
086 public Object visit(ASTJspScriptlet node, Object data) {
087 return visit((JspNode) node, data);
088 }
089
090 public Object visit(ASTJspExpression node, Object data) {
091 return visit((JspNode) node, data);
092 }
093
094 public Object visit(ASTJspDeclaration node, Object data) {
095 return visit((JspNode) node, data);
096 }
097
098 public Object visit(ASTJspComment node, Object data) {
099 return visit((JspNode) node, data);
100 }
101
102 public Object visit(ASTText node, Object data) {
103 return visit((JspNode) node, data);
104 }
105
106 public Object visit(ASTUnparsedText node, Object data) {
107 return visit((JspNode) node, data);
108 }
109
110 public Object visit(ASTElExpression node, Object data) {
111 return visit((JspNode) node, data);
112 }
113
114 public Object visit(ASTValueBinding node, Object data) {
115 return visit((JspNode) node, data);
116 }
117
118 public Object visit(ASTCData node, Object data) {
119 return visit((JspNode) node, data);
120 }
121
122 public Object visit(ASTElement node, Object data) {
123 return visit((JspNode) node, data);
124 }
125
126 public Object visit(ASTAttribute node, Object data) {
127 return visit((JspNode) node, data);
128 }
129
130 public Object visit(ASTAttributeValue node, Object data) {
131 return visit((JspNode) node, data);
132 }
133
134 public Object visit(ASTJspExpressionInAttribute node, Object data) {
135 return visit((JspNode) node, data);
136 }
137
138 public Object visit(ASTCommentTag node, Object data) {
139 return visit((JspNode) node, data);
140 }
141
142 public Object visit(ASTDeclaration node, Object data) {
143 return visit((JspNode) node, data);
144 }
145
146 public Object visit(ASTDoctypeDeclaration node, Object data) {
147 return visit((JspNode) node, data);
148 }
149
150 public Object visit(ASTDoctypeExternalId node, Object data) {
151 return visit((JspNode) node, data);
152 }
153 }
|