/************************************************************************************** * 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.modifier; import org.codehaus.aspectwerkz.definition.Pointcut; import org.codehaus.aspectwerkz.definition.Pointcut; import org.codehaus.aspectwerkz.joinpoint.JoinPoint; /** * @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a> * @Aspect perJVM */ public class TestAspect { // ============ Pointcuts ============ /** * @Expression call(private * test.modifier.*.*Method(..)) && within(test.modifier.*) */ Pointcut call_privateMethod; /** * @Expression call(protected * test.modifier.*.*Method(..)) && within(test.modifier.*) */ Pointcut call_protectedMethod; /** * @Expression call(public * test.modifier.*.*Method(..)) && within(test.modifier.*) */ Pointcut call_publicMethod; /** * @Expression call(static final * test.modifier.*.*Method(..)) && within(test.modifier.*) */ Pointcut call_staticFinalMethod; /** * @Expression execution(private * test.modifier.*.*Method(..)) */ Pointcut execution_privateMethod; /** * @Expression execution(protected * test.modifier.*.*Method(..)) */ Pointcut execution_protectedMethod; /** * @Expression execution(public * test.modifier.*.*Method(..)) */ Pointcut execution_publicMethod; /** * @Expression get(private * test.modifier.*.*Field) && within(test.modifier.*) */ Pointcut get_privateField; /** * @Expression get(protected * test.modifier.*.*Field) && within(test.modifier.*) */ Pointcut get_protectedField; /** * @Expression get(public * test.modifier.*.*Field) && within(test.modifier.*) */ Pointcut get_publicField; /** * @Expression set(private * test.modifier.*.*Field) && within(test.modifier.*) */ Pointcut set_privateField; /** * @Expression set(protected * test.modifier.*.*Field) && within(test.modifier.*) */ Pointcut set_protectedField; /** * @Expression set(public * test.modifier.*.*Field) && within(test.modifier.*) */ Pointcut set_publicField; // ============ Advices ============ /** * @Around call_privateMethod || call_publicMethod || call_protectedMethod || * call_staticFinalMethod */ public Object advice_CALL(final JoinPoint joinPoint) throws Throwable { ModifierTest.log("call "); Object result = joinPoint.proceed(); ModifierTest.log("call "); return result; } /** * @Around execution_privateMethod || execution_protectedMethod || execution_publicMethod */ public Object advice_EXECUTION(final JoinPoint joinPoint) throws Throwable { ModifierTest.log("execution "); Object result = joinPoint.proceed(); ModifierTest.log("execution "); return result; } /** * @Around set_privateField || set_protectedField || set_publicField */ public Object advice_SET(final JoinPoint joinPoint) throws Throwable { ModifierTest.log("set "); Object result = joinPoint.proceed(); ModifierTest.log("set "); return result; } /** * @Around get_privateField || get_protectedField || get_publicField */ public Object advice_GET(final JoinPoint joinPoint) throws Throwable { ModifierTest.log("get "); Object result = joinPoint.proceed(); ModifierTest.log("get "); return result; } }