KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > ch > ethz > prose > crosscut > MethodRedefineCut


1 package ch.ethz.prose.crosscut;
2
3 import java.lang.reflect.Method JavaDoc;
4
5 import ch.ethz.jvmai.MethodRedefineJoinPoint;
6 import ch.ethz.prose.engine.JoinPointRequest;
7
8 /**
9  * A crosscut that represents method redefinitions.
10  *
11  * @author Johann Gyger
12  */

13 public abstract class MethodRedefineCut extends MethodCut {
14
15   protected MethodRedefineCut() throws MissingInformationException {
16     super();
17     mcutSpecializer = new MethodRedefineCutSpecializer(adviceSignature);
18   }
19
20   /**
21    * Generate method redefine requests for each declared method in <code>theClass</code>
22    * that matches this crosscut.
23    *
24    * @param theClass class whose methods are checked
25    * @return matching collection of join point requests
26    */

27   protected CrosscutRequest doCreateRequest(Class JavaDoc theClass) {
28     CrosscutRequest result = new CrosscutRequest();
29     Method JavaDoc[] methArray = null;
30
31     try {
32       methArray = theClass.getDeclaredMethods();
33     } catch (NoClassDefFoundError JavaDoc e) {
34       return result;
35     }
36
37     for (int i = 0; i < methArray.length; i++) {
38       Class JavaDoc[] 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 JavaDoc toString() {
50     return " Crosscut: 'MethodRedefineCut' \n" + " Advice:" + toStringSignature + "\n" + " PointCutter: " + getSpecializer() + "\n";
51   }
52
53 }
54
Popular Tags