1 23 package org.hammurapi.inspectors; 24 25 import org.hammurapi.InspectorBase; 26 27 import com.pavelvlasov.jsel.Constructor; 28 import com.pavelvlasov.jsel.JselException; 29 import com.pavelvlasov.jsel.LanguageElement; 30 import com.pavelvlasov.jsel.Method; 31 import com.pavelvlasov.jsel.OperationInfo; 32 import com.pavelvlasov.jsel.expressions.MethodCall; 33 import com.pavelvlasov.review.SourceMarker; 34 import com.pavelvlasov.util.Visitor; 35 36 37 43 public class AbstractMethodFromConstructorRule extends InspectorBase { 44 45 48 private static final String ABSTRACT = "abstract"; 49 50 56 public void visit(Constructor element) { 57 element.accept(new Visitor() { 58 public boolean visit(Object target) { 59 if (target instanceof MethodCall) { 60 MethodCall mc = (MethodCall) target; 61 try { 62 OperationInfo oi = mc.getProvider(); 63 if (oi==null) { 64 context.warn((SourceMarker) mc, "Provider is null for "+mc+" at "+((LanguageElement) mc).getLocation()); 65 } else if (oi.getOperation() instanceof Method) { 66 Method method = (Method) oi.getOperation(); 67 if (method.getModifiers().contains(ABSTRACT) && method.getEnclosingType()==((LanguageElement) mc).getEnclosingType()) { 68 context.reportViolation((SourceMarker) mc); 69 } 70 } 71 } catch (JselException e) { 72 context.warn((SourceMarker) mc, e); 73 } 74 } 75 return true; 76 } 77 }); 78 } 79 } 80 | Popular Tags |