01: //
02: // This file is part of the prose package.
03: //
04: // The contents of this file are subject to the Mozilla Public License
05: // Version 1.1 (the "License"); you may not use this file except in
06: // compliance with the License. You may obtain a copy of the License at
07: // http://www.mozilla.org/MPL/
08: //
09: // Software distributed under the License is distributed on an "AS IS" basis,
10: // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11: // for the specific language governing rights and limitations under the
12: // License.
13: //
14: // The Original Code is prose.
15: //
16: // The Initial Developer of the Original Code is Andrei Popovici. Portions
17: // created by Andrei Popovici are Copyright (C) 2002 Andrei Popovici.
18: // All Rights Reserved.
19: //
20: // Contributor(s):
21: // $Id$
22: // ======================================================================
23: //
24: //(history at end)
25: //
26:
27: package ch.ethz.jvmai;
28:
29: import java.lang.reflect.Method;
30:
31: /** Code Join Points are join-points that can occur within the
32: * execution of a method. They can be arbitrary points within the
33: * bytecode of a method.
34: */
35: public interface CodeJoinPoint extends JoinPoint {
36: public static String KIND = JoinPointKinds.KIND_CODE_JP;
37:
38: /**
39: * Contains the method beeing executed
40: * when this joinpoint has been reached. For MethodEntry Join Points
41: * and method exit join points, methods captured statically and
42: * the method being currently executed coincide. Therefore, for such
43: * joinoints, the signature of the method returned by <code>getMethod</code>
44: * and the one returned by <code>getJoinPointStaticPart().getSignature()</code>
45: * are the same. This is not the case with
46: * Exception Throws, catche Field access & modifications join points.
47: */
48: public Method getMethod();
49:
50: /** The byteCodeIndex of this joinPoint.
51: */
52: public int getByteCodeIndex();
53:
54: /** Return the enclosing join-point. The enclosing join-point is join-point of the <em>calling frame</em>.
55: * For instance, if <em>a</em> calls <em>b</em> and <em>x</em> is the method entry join point in b,
56: * <em>x.getEnclosingJoinPoint</em> is the point in the execution of the same thread within
57: * <em>a</em>'s frame where the invocation to be is done.
58: * <p>
59: * If if <em>a</em> calls <em>b</em> and within <em>b</em> the join-point <em>y</em> is a field
60: * set join point, then <em>x.getEnclsingJoinPoint()</em> and <em>y.getEnclosingJoinPoint()</em>
61: * denote the same join point within a's frame.
62: */
63: public CodeJoinPoint getEnclosingJoinPoint();
64:
65: /**
66: * Contains a user-defined object. This object has been
67: * supplied during registration of this joinpoint.
68: */
69: public Object getAopTag();
70:
71: }
72:
73: //================================================================
74: //
75: // $Log$
76: //
|