1 27 package ch.ethz.prose.filter; 28 29 import ch.ethz.jvmai.CodeJoinPoint; 31 import ch.ethz.jvmai.JoinPointKinds; 32 import ch.ethz.prose.engine.*; 33 34 40 public 41 class ExecutionsInMethodFilter extends PointCutter implements JoinPointKinds{ 42 43 private NameExpression regexp; 44 48 public ExecutionsInMethodFilter(String regexp) 49 { 50 this.regexp = new NameExpression(regexp); 51 acceptMask = MASK_ALL_JP; 52 mayFilterStaticallyMask = MASK_METHOD_ENTRY_JP | MASK_METHOD_EXIT_JP | MASK_METHOD_REDEFINE_JP; 53 canFilterStaticallyMask = MASK_METHOD_ENTRY_JP | MASK_METHOD_EXIT_JP | MASK_METHOD_REDEFINE_JP; 54 } 55 56 protected boolean doIsSpecialRequest(JoinPointRequest jpr) 57 { 58 switch(jpr.getMask() & (MASK_METHOD_ENTRY_JP | MASK_METHOD_EXIT_JP | MASK_METHOD_REDEFINE_JP) ) 59 { 60 case MASK_METHOD_ENTRY_JP: 61 return regexp.memberMatchesRegexp(((MethodEntryRequest)jpr).getMethod()); 62 case MASK_METHOD_EXIT_JP: 63 return regexp.memberMatchesRegexp(((MethodExitRequest)jpr).getMethod()); 64 case MASK_METHOD_REDEFINE_JP: 65 return regexp.memberMatchesRegexp(((MethodRedefineRequest)jpr).getMethod()); 66 default: 67 throw new Error ("illegal request forwarded by the PointCutter"); 68 } 69 } 70 71 protected boolean doIsSpecialEvent(CodeJoinPoint jp) 72 { 73 return regexp.memberMatchesRegexp(jp.getMethod()); 74 } 75 } 76 77 78 | Popular Tags |