1 27 package ch.ethz.prose.filter; 28 29 import java.util.*; 31 import java.io.*; 32 import ch.ethz.jvmai.JoinPointKinds; 33 import ch.ethz.jvmai.JoinPoint; 34 import ch.ethz.jvmai.CodeJoinPoint; 35 import ch.ethz.prose.engine.JoinPointRequest; 36 import ch.ethz.prose.engine.FieldAccessRequest; 37 import ch.ethz.prose.engine.FieldModificationRequest; 38 39 40 46 public 47 class FieldsInClassFilter extends PointCutter implements JoinPointKinds { 48 49 NameExpression regexp; 50 public FieldsInClassFilter(String cls) 51 { 52 acceptMask = MASK_FIELD_ACCESS_JP | MASK_FIELD_MODIFICATION_JP | MASK_FIELD_JP; 53 mayFilterStaticallyMask = MASK_FIELD_ACCESS_JP | MASK_FIELD_MODIFICATION_JP | MASK_FIELD_JP; 54 canFilterStaticallyMask = MASK_FIELD_ACCESS_JP | MASK_FIELD_MODIFICATION_JP | MASK_FIELD_JP; 55 regexp = new NameExpression(cls); 56 } 57 58 protected boolean doIsSpecialRequest(JoinPointRequest jpr) 59 { 60 int jprType = jpr.getMask() & ( MASK_FIELD_ACCESS_JP | MASK_FIELD_MODIFICATION_JP); 62 switch (jprType) 63 { 64 case MASK_FIELD_ACCESS_JP: 65 return regexp.classMatchesRegexp(((FieldAccessRequest)jpr).getTargetClass()); 66 case MASK_FIELD_MODIFICATION_JP: 67 return regexp.classMatchesRegexp(((FieldModificationRequest)jpr).getTargetClass()); 68 default: throw new Error ("cannot get unrequested request"); 69 } 70 71 } 72 73 protected boolean doIsSpecialEvent(CodeJoinPoint jp) 74 { 75 throw new Error ("The PointCutter contract is not correct"); 76 } 77 78 } 79 80 81 | Popular Tags |