Recipe6.1.Capturing When Advice Is Executing


Recipe 6.1. Capturing When Advice Is Executing

Problem

You want to capture when any piece of advice is executing.

Solution

Use the adviceexecution( ) pointcut. The syntax of the adviceexecution( ) pointcut is:

pointcut <pointcut name>( ) : adviceexecution( );

Discussion

The adviceexecution( ) pointcut captures the join points where any advice is executed within an application. Example 6-1 uses the adviceexecution( ) pointcut to apply advice when other advice begins execution.

Example 6-1. Using the adviceexecution( ) pointcut to apply advice
public aspect AdviceExecutionRecipe  {    /*        Specifies calling advice whenever advice is executed    */    pointcut adviceExecutionPointcut( ) : adviceexecution( );    // Advice declaration    before( ) : adviceExecutionPointcut( )       && !within(AdviceExecutionRecipe +)    {       System.out.println(          "------------------- Aspect Advice Logic --------------------");       System.out.println("In the advice picked by ExecutionRecipe");       System.out.println(          "Signature: "             + thisJoinPoint.getStaticPart( ).getSignature( ));       System.out.println(          "Source Line: "             + thisJoinPoint.getStaticPart( ).getSourceLocation( ));       System.out.println(          "------------------------------------------------------------");    } }

Figure 6-1 shows how the adviceexecution() pointcut is applied to a simple class.

Figure 6-1. How the adviceexecution( ) pointcut is applied


See Also

Recipe 6.3 protects against code in the aspect being called by using the adviceexecution() pointcut combined with the NOT (!) operator; Chapter 9 discusses scope based pointcuts; combining pointcut logic using a logical AND (&&) is shown in Recipe 12.2; the unary NOT (!) operator is shown in Recipe 12.4; Chapter 13 describes the different types of advice available in AspectJ.



AspectJ Cookbook
Aspectj Cookbook
ISBN: 0596006543
EAN: 2147483647
Year: 2006
Pages: 203
Authors: Russ Miles

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net