/************************************************************************************** * Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. * * http://aspectwerkz.codehaus.org * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the LGPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package test.afterxxx; import org.codehaus.aspectwerkz.joinpoint.StaticJoinPoint; import org.codehaus.aspectwerkz.definition.Pointcut; /** * @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a> */ public class Aspect { /** * @Expression execution(* test.afterxxx.Test.all(..)) */ Pointcut all; /** * @Expression execution(* test.afterxxx.Test.aroundFinally(..)) */ Pointcut aroundFinally; /** * @Expression execution(* test.afterxxx.Test.aroundReturning(..)) */ Pointcut aroundReturning; /** * @Expression execution(* test.afterxxx.Test.aroundFinallyReturning(..)) */ Pointcut aroundFinallyReturning; /** * @Expression execution(* test.afterxxx.Test.aroundFinallyReturningThrowing(..)) */ Pointcut aroundFinallyReturningThrowing; /** * @Expression execution(* test.afterxxx.Test.aroundReturningThrowing(..)) */ Pointcut aroundReturningThrowing; /** * @Expression execution(* test.afterxxx.Test._finally(..)) */ Pointcut _finally; /** * @Expression execution(* test.afterxxx.Test.finallyReturning(..)) */ Pointcut finallyReturning; /** * @Expression execution(* test.afterxxx.Test.finallyReturningThrowing(..)) */ Pointcut finallyReturningThrowing; /** * @Expression execution(* test.afterxxx.Test.returning(..)) */ Pointcut returning; /** * @Expression execution(* test.afterxxx.Test.returningThrowing(..)) */ Pointcut returningThrowing; /** * @Around all || aroundFinally || aroundFinallyReturning || * aroundFinallyReturningThrowing || aroundReturningThrowing || aroundReturning */ public Object logAround(StaticJoinPoint joinPoint) throws Throwable { Test.log("logAround "); final Object result = joinPoint.proceed(); return result; } /** * @AfterReturning aroundFinallyReturning || aroundFinallyReturningThrowing || * aroundReturningThrowing || finallyReturning || finallyReturningThrowing || * returningThrowing || aroundReturning || returning */ public void logAfterReturning(final StaticJoinPoint joinPoint) throws Throwable { Test.log("logAfterReturning "); } /** * @AfterReturning(type="java.lang.String", pointcut="aroundFinallyReturning || aroundFinallyReturningThrowing || * aroundReturningThrowing || finallyReturning || finallyReturningThrowing || * returningThrowing || aroundReturning || returning") */ public void logAfterReturningString(final StaticJoinPoint joinPoint) throws Throwable { Test.log("logAfterReturningString "); } /** * @AfterThrowing(type="java.lang.RuntimeException", pointcut="aroundFinallyReturningThrowing || * aroundReturningThrowing || * finallyReturningThrowing || returningThrowing") */ public void logAfterThrowingRTE(final StaticJoinPoint joinPoint) throws Throwable { Test.log("logAfterThrowingRTE "); } /** * @AfterThrowing(type="java.lang.IllegalArgumentException", pointcut=" * aroundFinallyReturningThrowing || aroundReturningThrowing || * finallyReturningThrowing || returningThrowing") */ public void logAfterThrowing(final StaticJoinPoint joinPoint) throws Throwable { Test.log("logAfterThrowing "); } /** * @AfterFinally aroundFinally || aroundFinallyReturning || aroundFinallyReturningThrowing || * _finally || finallyReturning || finallyReturningThrowing */ public void logAfterFinally(final StaticJoinPoint joinPoint) throws Throwable { Test.log("logAfterFinally "); } /** * @After finallyReturning */ public void logAfter(final StaticJoinPoint joinPoint) throws Throwable { Test.log("logAfter "); } /** * @AfterReturning(type="i", pointcut="execution(* test.afterxxx.TestBinding.returnInt(..))") */ public void logAfterBinding(int i) { TestBinding.log("afterReturningInt " + i); } /** * @AfterReturning(type="s", pointcut="execution(* test.afterxxx.TestBinding.returnString(..))") */ public void logAfterBinding(String s) { TestBinding.log("afterReturningString " + s); } /** * @AfterThrowing(type="e", pointcut="execution(* test.afterxxx.TestBinding.throwChecked(..))") */ public void logAfterBindingExact(ClassNotFoundException e) { TestBinding.log("afterThrowingExact " + e.getClass().getName()); } /** * @AfterThrowing(type="e", pointcut="execution(* test.afterxxx.TestBinding.throwChecked(..))") */ public void logAfterBindingParentClass(Exception e) { TestBinding.log(" afterThrowingParentClass " + e.getClass().getName()); } }