/************************************************************************************** * 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.proceedinnewthread; import org.codehaus.aspectwerkz.joinpoint.JoinPoint; /** * @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a> */ public class TestAspect { public Object advice1(final JoinPoint jp) throws Throwable { Thread t = new Thread( new Runnable() { public void run() { try { ProceedTest.LOG += "advice1Pre "; jp.proceed(); ProceedTest.LOG += "advice1Post "; } catch (Throwable e) { throw new RuntimeException(e.toString()); } } } ); // Note: in 2.0, it happens that the context switch does not occurs and the test case reach the assertion // before the new thread updates the test data LOG. We force priority just in case // but it may still corrupt the test case. t.setPriority(Thread.MAX_PRIORITY); t.start(); return null; } public Object advice2(final JoinPoint jp) throws Throwable { ProceedTest.LOG += "advice2Pre "; jp.proceed(); ProceedTest.LOG += "advice2Post "; return null; } public Object advice3(final JoinPoint jp) throws Throwable { ProceedTest.LOG += "advice3Pre "; jp.proceed(); ProceedTest.LOG += "advice3Post "; return null; } }