All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aspectj.lang.JoinPoint Maven / Gradle / Ivy

Go to download

AspectJ tools most notably contains the AspectJ compiler (AJC). AJC applies aspects to Java classes during compilation, fully replacing Javac for plain Java classes and also compiling native AspectJ or annotation-based @AspectJ syntax. Furthermore, AJC can weave aspects into existing class files in a post-compile binary weaving step. This library is a superset of AspectJ weaver and hence also of AspectJ runtime.

There is a newer version: 1.9.22.1
Show newest version
/* *******************************************************************
 * Copyright (c) 1999-2001 Xerox Corporation,
 *               2002 Palo Alto Research Center, Incorporated (PARC).
 * All rights reserved.
 * This program and the accompanying materials are made available
 * under the terms of the Eclipse Public License v 2.0
 * which accompanies this distribution and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
 *
 * Contributors:
 *     Xerox/PARC     initial implementation
 * ******************************************************************/


package org.aspectj.lang;

import org.aspectj.lang.reflect.SourceLocation;

/**
 * 

Provides reflective access to both the state available at a join point and * static information about it. This information is available from the body * of advice using the special form thisJoinPoint. The primary * use of this reflective information is for tracing and logging applications. *

* *
 * aspect Logging {
 *     before(): within(com.bigboxco..*) && execution(public * *(..)) {
 *         System.err.println("entering: " + thisJoinPoint);
 *         System.err.println("  w/args: " + thisJoinPoint.getArgs());
 *         System.err.println("      at: " + thisJoinPoint.getSourceLocation());
 *     }
 * }
 * 
*/ public interface JoinPoint { String toString(); /** * @return an abbreviated string representation of the join point. */ String toShortString(); /** * @return an extended string representation of the join point. */ String toLongString(); /** *

Returns the currently executing object. This will always be * the same object as that matched by the this pointcut * designator. Unless you specifically need this reflective access, * you should use the this pointcut designator to * get at this object for better static typing and performance.

* *

Returns null when there is no currently executing object available. * This includes all join points that occur in a static context.

* * @return the currently executing object (or null if not available - e.g. static context) */ Object getThis(); /** * Returns the target object. This will always be * the same object as that matched by the target pointcut * designator. Unless you specifically need this reflective access, * you should use the target pointcut designator to * get at this object for better static typing and performance. * * Returns null when there is no target object * * @return the target object (or null if there isn't one) */ Object getTarget(); /** * @return the arguments at this join point */ Object[] getArgs(); /** * getStaticPart().getSignature() returns the same object * @return the signature at the join point. */ Signature getSignature(); /** * *

If there is no source location available, returns null.

* *

Returns the SourceLocation of the defining class for default constructors.

* *

getStaticPart().getSourceLocation() returns the same object.

* * @return the source location corresponding to the join point. */ SourceLocation getSourceLocation(); /** This string is guaranteed to be interned. * getStaticPart().getKind() returns the same object. * * @return a string representing the kind of join point. */ String getKind(); /** *

This helper object contains only the static information about a join point. * It is available from the JoinPoint.getStaticPart() method, and * can be accessed separately within advice using the special form * thisJoinPointStaticPart.

* *

If you are only interested in the static information about a join point, * you should access it through this type for the best performance. This * is particularly useful for library methods that want to do serious * manipulations of this information, i.e.

* *
     * public class LoggingUtils {
     *     public static void prettyPrint(JoinPoint.StaticPart jp) {
     *         ...
     *     }
     * }
     *
     * aspect Logging {
     *     before(): ... { LoggingUtils.prettyPrint(thisJoinPointStaticPart); }
     * }
     * 
* * @see JoinPoint#getStaticPart() */ interface StaticPart { /** @return the signature at the join point. */ Signature getSignature(); /** Returns the source location corresponding to the join point. * * If there is no source location available, returns null. * * @return the SourceLocation of the defining class for default constructors */ SourceLocation getSourceLocation(); /** @return a string representing the kind of join point. This String * is guaranteed to be interned */ String getKind(); /** * Return the id for this JoinPoint.StaticPart. All JoinPoint.StaticPart * instances are assigned an id number upon creation. For each advised type * the id numbers start at 0. *
* The id is guaranteed to remain constant across repeated executions * of a program but may change if the code is recompiled. *
* The benefit of having an id is that it can be used for array index * purposes which can be quicker than using the JoinPoint.StaticPart * object itself in a map lookup. *
* Since two JoinPoint.StaticPart instances in different advised types may have * the same id, then if the id is being used to index some joinpoint specific * state then that state must be maintained on a pertype basis - either by * using pertypewithin() or an ITD. * * @return the id of this joinpoint */ int getId(); String toString(); /** * @return an abbreviated string representation of the join point */ String toShortString(); /** * @return an extended string representation of the join point */ String toLongString(); } interface EnclosingStaticPart extends StaticPart {} /** * @return an object that encapsulates the static parts of this join point. */ StaticPart getStaticPart(); /** * The legal return values from getKind() */ String METHOD_EXECUTION = "method-execution"; String METHOD_CALL = "method-call"; String CONSTRUCTOR_EXECUTION = "constructor-execution"; String CONSTRUCTOR_CALL = "constructor-call"; String FIELD_GET = "field-get"; String FIELD_SET = "field-set"; String STATICINITIALIZATION = "staticinitialization"; String PREINITIALIZATION = "preinitialization"; String INITIALIZATION = "initialization"; String EXCEPTION_HANDLER = "exception-handler"; String SYNCHRONIZATION_LOCK = "lock"; String SYNCHRONIZATION_UNLOCK = "unlock"; String ADVICE_EXECUTION = "adviceexecution"; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy