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 /*** 11 * Implements the join point concept, e.g. defines a well defined point in the program flow. 12 * <p/> 13 * Provides access to only static data, is therefore much more performant than the usage of the {@link 14 * org.codehaus.aspectwerkz.joinpoint.JoinPoint} interface. 15 * 16 * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a> 17 */ 18 public interface StaticJoinPoint { 19 public static final String METHOD_EXECUTION = "METHOD_EXECUTION"; 20 public static final String METHOD_CALL = "METHOD_CALL"; 21 public static final String CONSTRUCTOR_EXECUTION = "CONSTRUCTOR_EXECUTION"; 22 public static final String CONSTRUCTOR_CALL = "CONSTRUCTOR_CALL"; 23 public static final String FIELD_SET = "FIELD_SET"; 24 public static final String FIELD_GET = "FIELD_GET"; 25 public static final String HANDLER = "HANDLER"; 26 public static final String STATIC_INITIALIZATION = "STATIC_INITIALIZATION"; 27 28 /*** 29 * Walks through the pointcuts and invokes all its advices. When the last advice of the last pointcut has been 30 * invoked, the original method is invoked. Is called recursively. 31 * 32 * @return the result from the next invocation 33 * @throws Throwable 34 */ 35 Object proceed() throws Throwable; 36 37 /*** 38 * Clones the join point instance. 39 * 40 * @return the cloned join point instance 41 */ 42 StaticJoinPoint deepCopy(); 43 44 /*** 45 * Returns metadata matchingn a specfic key. 46 * 47 * @param key the key to the metadata 48 * @return the value 49 */ 50 Object getMetaData(Object key); 51 52 /*** 53 * Adds metadata. 54 * 55 * @param key the key to the metadata 56 * @param value the value 57 */ 58 void addMetaData(Object key, Object value); 59 60 /*** 61 * Returns the signature for the join point. 62 * 63 * @return the signature 64 */ 65 Signature getSignature(); 66 67 /*** 68 * Returns the callee instance. 69 * 70 * @return the callee instance 71 */ 72 Object getCallee(); 73 74 /*** 75 * Returns the caller instance. 76 * 77 * @return the caller instance 78 */ 79 Object getCaller(); 80 81 /*** 82 * Returns the 'this' instance (the one currently executing). 83 * 84 * @return 'this' 85 */ 86 Object getThis(); 87 88 /*** 89 * Returns the target instance. If the join point is executing in a static context it returns null. 90 * 91 * @return the target instance 92 */ 93 Object getTarget(); 94 95 /*** 96 * Returns the caller class. 97 * 98 * @return the caller class 99 */ 100 Class getCallerClass(); 101 102 /*** 103 * Returns the target class. 104 * 105 * @return the target class 106 */ 107 Class getTargetClass(); 108 109 /*** 110 * Returns the join point type. 111 * 112 * @return the type 113 * @TODO: should return an Enum and not an untyped string 114 */ 115 String getType(); 116 }