1 27 package ch.ethz.prose.crosscut; 28 29 import java.lang.reflect.Modifier ; 31 import java.lang.reflect.Method ; 32 import ch.ethz.prose.engine.JoinPointRequest; 33 import ch.ethz.prose.engine.MethodExitRequest; 34 import ch.ethz.prose.engine.MethodEntryRequest; 35 import ch.ethz.prose.filter.PointCutter; 36 import ch.ethz.jvmai.JoinPointKinds; 37 import ch.ethz.jvmai.CodeJoinPoint; 38 39 45 public 46 class MethodCutSpecializer extends PointCutter implements JoinPointKinds { 47 48 MethodCutSignaturePattern adviceSignature; 49 public MethodCutSpecializer(MethodCutSignaturePattern adviceSignature) 50 { 51 this.adviceSignature=adviceSignature; 52 acceptMask = MASK_ALL_JP; 53 mayFilterStaticallyMask = MASK_METHOD_ENTRY_JP | MASK_METHOD_EXIT_JP; 54 canFilterStaticallyMask = MASK_METHOD_ENTRY_JP | MASK_METHOD_EXIT_JP; 55 } 56 57 protected boolean doIsSpecialRequest(JoinPointRequest jpr) 58 { 59 Class targetClass =null; 60 Method methodToExecute = null; 61 int methodModifiers = 0; 62 if (jpr instanceof MethodEntryRequest) 63 { 64 targetClass = ((MethodEntryRequest)jpr).getTargetClass(); 65 methodToExecute=((MethodEntryRequest)jpr).getMethod(); 66 } 67 if (jpr instanceof MethodExitRequest) 68 { 69 targetClass = ((MethodExitRequest)jpr).getTargetClass(); 70 methodToExecute = ((MethodExitRequest)jpr).getMethod(); 71 } 72 73 methodModifiers = methodToExecute.getModifiers(); 74 75 return 76 ((methodModifiers & Modifier.ABSTRACT) != Modifier.ABSTRACT) && 77 ((methodModifiers & Modifier.NATIVE ) != Modifier.NATIVE ) && 78 adviceSignature.matchesTarget(targetClass) && 79 adviceSignature.matchesParameters(methodToExecute); 80 } 81 82 83 protected boolean doIsSpecialEvent(CodeJoinPoint jpe) 84 { 85 Object target = jpe.getTarget(); 86 if (target != null) 87 return adviceSignature.matchesTarget(target.getClass()) && 88 adviceSignature.matchesParameters(jpe.getMethod()); 89 else 90 return adviceSignature.matchesTarget(jpe.getMethod().getDeclaringClass()) && 91 adviceSignature.matchesParameters(jpe.getMethod()); 92 } 93 94 95 } 97 98 99 | Popular Tags |