1 package ch.ethz.prose.crosscut; 2 3 import java.lang.reflect.Method ; 4 5 import ch.ethz.jvmai.MethodRedefineJoinPoint; 6 import ch.ethz.prose.engine.JoinPointRequest; 7 8 13 public abstract class MethodRedefineCut extends MethodCut { 14 15 protected MethodRedefineCut() throws MissingInformationException { 16 super(); 17 mcutSpecializer = new MethodRedefineCutSpecializer(adviceSignature); 18 } 19 20 27 protected CrosscutRequest doCreateRequest(Class theClass) { 28 CrosscutRequest result = new CrosscutRequest(); 29 Method [] methArray = null; 30 31 try { 32 methArray = theClass.getDeclaredMethods(); 33 } catch (NoClassDefFoundError e) { 34 return result; 35 } 36 37 for (int i = 0; i < methArray.length; i++) { 38 Class [] params = methArray[i].getParameterTypes(); 39 JoinPointRequest crtRequest; 40 41 crtRequest = requestFactory.createJoinPointRequest(MethodRedefineJoinPoint.KIND, methArray[i]); 42 if (mcutSpecializer.isSpecialRequest(crtRequest)) 43 result.add(crtRequest); 44 } 45 46 return result; 47 } 48 49 public String toString() { 50 return " Crosscut: 'MethodRedefineCut' \n" + " Advice:" + toStringSignature + "\n" + " PointCutter: " + getSpecializer() + "\n"; 51 } 52 53 } 54 | Popular Tags |