KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hammurapi > inspectors > SqlCreateStatementWithinLoop


1 /*
2  * Created on Oct 21, 2004
3  *
4  */

5 package org.hammurapi.inspectors;
6
7 import org.hammurapi.InspectorBase;
8
9 import com.pavelvlasov.jsel.Code;
10 import com.pavelvlasov.jsel.JselException;
11 import com.pavelvlasov.jsel.LanguageElement;
12 import com.pavelvlasov.jsel.Operation;
13 import com.pavelvlasov.jsel.OperationInfo;
14 import com.pavelvlasov.jsel.TypeBody;
15 import com.pavelvlasov.jsel.expressions.MethodCall;
16 import com.pavelvlasov.jsel.statements.DoStatement;
17 import com.pavelvlasov.jsel.statements.ForStatement;
18 import com.pavelvlasov.jsel.statements.WhileStatement;
19 import com.pavelvlasov.review.SourceMarker;
20
21 /**
22  * @author Johannes Bellert
23  *
24  */

25 public class SqlCreateStatementWithinLoop extends InspectorBase {
26         
27     public boolean visit(MethodCall target) throws JselException {
28         if (context.getVisitorStack().isIn(new Class JavaDoc[] { ForStatement.class, DoStatement.class, WhileStatement.class })) {
29             context.verbose((SourceMarker) target, " target " + target.toString());
30             if ("createStatement".equals(target.getMethodName()) || "prepareStatement".equals(target.getMethodName())) {
31                 Code code = ((LanguageElement) target).getEnclosingCode();
32                 if (code != null) {
33                     Operation op = (Operation) code;
34                     TypeBody tb = code.getEnclosingType();
35
36                     String JavaDoc key = tb.getFcn() + ">>" + op.getOperationSignature();
37
38                     OperationInfo opi = target.getProvider();
39                     context.verbose((SourceMarker) target, "opi " + opi.getDeclaringType().getName());
40
41                     if ("java.sql.Connection".equals(opi.getDeclaringType().getName())) {
42                         context.reportViolation((SourceMarker) target);
43                     }
44                 }
45             }
46         }
47         return true;
48     }
49 }
50
Popular Tags