1 /***************************************************************************************
2 * Copyright (c) Jonas BonŽr, Alexandre Vasseur. All rights reserved. *
3 * http://aspectwerkz.codehaus.org *
4 * ---------------------------------------------------------------------------------- *
5 * The software in this package is published under the terms of the LGPL license *
6 * a copy of which has been included with this distribution in the license.txt file. *
7 **************************************************************************************/
8 package org.codehaus.aspectwerkz.joinpoint;
9
10 import org.codehaus.aspectwerkz.joinpoint.management.JoinPointType;
11
12 /***
13 * Implements the join point concept, e.g. defines a well defined point in the program flow.
14 * <p/>
15 * Provides access to only static data, is therefore much more performant than the usage of the {@link
16 * org.codehaus.aspectwerkz.joinpoint.JoinPoint} interface.
17 *
18 * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a>
19 */
20 public interface StaticJoinPoint {
21 public static final String METHOD_EXECUTION = "METHOD_EXECUTION";
22 public static final String METHOD_CALL = "METHOD_CALL";
23 public static final String CONSTRUCTOR_EXECUTION = "CONSTRUCTOR_EXECUTION";
24 public static final String CONSTRUCTOR_CALL = "CONSTRUCTOR_CALL";
25 public static final String FIELD_SET = "FIELD_SET";
26 public static final String FIELD_GET = "FIELD_GET";
27 public static final String HANDLER = "HANDLER";
28 public static final String STATIC_INITIALIZATION = "STATIC_INITIALIZATION";
29
30 /***
31 * Walks through the pointcuts and invokes all its advices. When the last advice of the last pointcut has been
32 * invoked, the original method is invoked. Is called recursively.
33 *
34 * @return the result from the next invocation
35 * @throws Throwable
36 */
37 Object proceed() throws Throwable;
38
39 /***
40 * Creates a copy of the join point instance.
41 *
42 * @return a copy of the join point instance
43 */
44 StaticJoinPoint copy();
45
46 /***
47 * Returns metadata matchingn a specfic key.
48 *
49 * @param key the key to the metadata
50 * @return the value
51 */
52 Object getMetaData(Object key);
53
54 /***
55 * Adds metadata.
56 *
57 * @param key the key to the metadata
58 * @param value the value
59 */
60 void addMetaData(Object key, Object value);
61
62 /***
63 * Returns the signature for the join point.
64 *
65 * @return the signature
66 */
67 Signature getSignature();
68
69 /***
70 * Returns the caller class.
71 *
72 * @return the caller class
73 */
74 Class getCallerClass();
75
76 /***
77 * Returns the callee class.
78 *
79 * @return the target class
80 */
81 Class getCalleeClass();
82
83 /***
84 * Returns the callee class.
85 *
86 * @return the target class
87 * @deprecated use getCalleeClass() instead
88 */
89 Class getTargetClass();
90
91 /***
92 * Returns the join point type.
93 *
94 * @return the type
95 */
96 JoinPointType getType();
97
98 /***
99 * Returns the enclosing static joinpoint.
100 *
101 * @return the enclosing static joinpoint
102 */
103 EnclosingStaticJoinPoint getEnclosingStaticJoinPoint();
104 }