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 test.hierarchicalpattern;9 10 import test.Loggable;11 import org.codehaus.aspectwerkz.definition.Pointcut;12 import org.codehaus.aspectwerkz.definition.Pointcut;13 import org.codehaus.aspectwerkz.joinpoint.JoinPoint;14 15 /**16 * @author <a HREF="mailto:jboner@codehaus.org">Jonas BonŽr </a>17 * @Aspect18 */19 public class TestAspect {20 /**21 * @Expression execution(* test.hierarchicalpattern.DummyInterface1+.declaringType1(..))22 */23 Pointcut pc1;24 25 /**26 * @Expression execution(* test.hierarchicalpattern.DummyInterface2+.declaringType2(..))27 */28 Pointcut pc2;29 30 /**31 * @Expression execution(test.hierarchicalpattern.DummyInterface2+32 * test.hierarchicalpattern.HierachicalPatternTest.returnType*(..))33 */34 Pointcut pc3;35 36 /**37 * @Expression execution(*38 * test.hierarchicalpattern.HierachicalPatternTest.parameterTypes(test.hierarchicalpattern.DummyInterface1+,39 * test.hierarchicalpattern.DummyInterface2+))40 */41 Pointcut pc4;42 43 /**44 * @Around pc1 || pc2 || pc3 || pc445 */46 public Object advice(final JoinPoint joinPoint) throws Throwable {47 ((Loggable) joinPoint.getTarget()).log("before1 ");48 final Object result = joinPoint.proceed();49 ((Loggable) joinPoint.getTarget()).log("after1 ");50 return result;51 }52 }