+++ /dev/null
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-public class Application {
- static int proceedTimesOuter;
- static int proceedTimesInner;
- static boolean useThreadPool = false;
- static ExecutorService executorService = Executors.newFixedThreadPool(2);
-
- @MarkerA
- @MarkerB
- public void doSomething() {
- System.out.println(" Doing something");
- }
-
- public static void main(String[] args) throws ExecutionException, InterruptedException {
- proceedTimesOuter = Integer.parseInt(args[0]);
- proceedTimesInner = Integer.parseInt(args[1]);
- useThreadPool = args.length > 2 && args[2].trim().equalsIgnoreCase("true");
- if (useThreadPool)
- prepopulateFixedThreadPool();
-
- new Application().doSomething();
- Thread.sleep(500);
- }
-
- private static void prepopulateFixedThreadPool() throws InterruptedException, ExecutionException {
- Future<?> future1 = executorService.submit(() -> {
- try { Thread.sleep(250); }
- catch (InterruptedException e) { e.printStackTrace(); }
- });
- Future<?> future2 = executorService.submit(() -> {
- try { Thread.sleep(250); }
- catch (InterruptedException e) { e.printStackTrace(); }
- });
- future1.get();
- future2.get();
- }
-
-}
+++ /dev/null
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-@Retention(RUNTIME)
-@Target(METHOD)
-public @interface MarkerA {}
+++ /dev/null
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-@Retention(RUNTIME)
-@Target(METHOD)
-public @interface MarkerB {}
+++ /dev/null
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.annotation.DeclarePrecedence;
-
-@Aspect
-@DeclarePrecedence("MarkerAAspect, MarkerBAspect")
-public class MarkerAAspect {
- @Around("@annotation(MarkerA) && execution(* *(..))")
- public Object intercept(ProceedingJoinPoint thisJoinPoint) throws Throwable {
- System.out.println(">> Outer intercept");
- Object result = null;
- for (int i = 0; i < Application.proceedTimesOuter; i++) {
- System.out.println(" >> Outer proceed");
- result = thisJoinPoint.proceed();
- System.out.println(" << Outer proceed");
- }
- System.out.println("<< Outer intercept");
- return result;
- }
-}
+++ /dev/null
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-@Aspect
-public class MarkerBAspect {
- @Around("@annotation(MarkerB) && execution(* *(..))")
- public Object intercept(ProceedingJoinPoint thisJoinPoint) throws Throwable {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- try {
- for (int i = 0; i < Application.proceedTimesInner; i++) {
- System.out.println(" >> Inner proceed");
- thisJoinPoint.proceed();
- System.out.println(" << Inner proceed");
- }
- }
- catch (Throwable throwable) {
- throwable.printStackTrace(System.out);
- }
- }
- };
-
- System.out.println(" >> Inner intercept");
- if (Application.useThreadPool)
- Application.executorService.submit(runnable);
- else
- new Thread(runnable).start();
- System.out.println(" << Inner intercept");
- return null;
- }
-}
+++ /dev/null
-public aspect MarkerAAspect {
- declare precedence : MarkerAAspect, MarkerBAspect;
-
- Object around() : @annotation(MarkerA) && execution(* *(..)) {
- System.out.println(">> Outer intercept");
- Object result = null;
- for (int i = 0; i < Application.proceedTimesOuter; i++) {
- System.out.println(" >> Outer proceed");
- result = proceed();
- System.out.println(" << Outer proceed");
- }
- System.out.println("<< Outer intercept");
- return result;
- }
-}
+++ /dev/null
-public aspect MarkerBAspect {
- Object around() : @annotation(MarkerB) && execution(* *(..)) {
- Runnable runnable = new Runnable() {
- @Override
- public void run() {
- try {
- for (int i = 0; i < Application.proceedTimesInner; i++) {
- System.out.println(" >> Inner proceed");
- proceed();
- System.out.println(" << Inner proceed");
- }
- }
- catch (Throwable throwable) {
- throwable.printStackTrace(System.out);
- }
- }
- };
-
- System.out.println(" >> Inner intercept");
- if (Application.useThreadPool)
- Application.executorService.submit(runnable);
- else
- new Thread(runnable).start();
- System.out.println(" << Inner intercept");
- return null;
- }
-}
--- /dev/null
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+public class Application {
+ static int proceedTimesOuter;
+ static int proceedTimesInner;
+ static boolean useThreadPool = false;
+ static ExecutorService executorService = Executors.newFixedThreadPool(2);
+
+ @MarkerA
+ @MarkerB
+ public void doSomething() {
+ System.out.println(" Doing something");
+ }
+
+ public static void main(String[] args) throws ExecutionException, InterruptedException {
+ proceedTimesOuter = Integer.parseInt(args[0]);
+ proceedTimesInner = Integer.parseInt(args[1]);
+ useThreadPool = args.length > 2 && args[2].trim().equalsIgnoreCase("true");
+ if (useThreadPool)
+ prepopulateFixedThreadPool();
+
+ new Application().doSomething();
+ Thread.sleep(500);
+ }
+
+ private static void prepopulateFixedThreadPool() throws InterruptedException, ExecutionException {
+ Future<?> future1 = executorService.submit(() -> {
+ try { Thread.sleep(250); }
+ catch (InterruptedException e) { e.printStackTrace(); }
+ });
+ Future<?> future2 = executorService.submit(() -> {
+ try { Thread.sleep(250); }
+ catch (InterruptedException e) { e.printStackTrace(); }
+ });
+ future1.get();
+ future2.get();
+ }
+
+}
--- /dev/null
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target(METHOD)
+public @interface MarkerA {}
--- /dev/null
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+@Retention(RUNTIME)
+@Target(METHOD)
+public @interface MarkerB {}
--- /dev/null
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.DeclarePrecedence;
+
+@Aspect
+@DeclarePrecedence("MarkerAAspect, MarkerBAspect")
+public class MarkerAAspect {
+ @Around("@annotation(MarkerA) && execution(* *(..))")
+ public Object intercept(ProceedingJoinPoint thisJoinPoint) throws Throwable {
+ System.out.println(">> Outer intercept");
+ Object result = null;
+ for (int i = 0; i < Application.proceedTimesOuter; i++) {
+ System.out.println(" >> Outer proceed");
+ result = thisJoinPoint.proceed();
+ System.out.println(" << Outer proceed");
+ }
+ System.out.println("<< Outer intercept");
+ return result;
+ }
+}
--- /dev/null
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Aspect
+public class MarkerBAspect {
+ @Around("@annotation(MarkerB) && execution(* *(..))")
+ public Object intercept(ProceedingJoinPoint thisJoinPoint) throws Throwable {
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ try {
+ for (int i = 0; i < Application.proceedTimesInner; i++) {
+ System.out.println(" >> Inner proceed");
+ thisJoinPoint.proceed();
+ System.out.println(" << Inner proceed");
+ }
+ }
+ catch (Throwable throwable) {
+ throwable.printStackTrace(System.out);
+ }
+ }
+ };
+
+ System.out.println(" >> Inner intercept");
+ if (Application.useThreadPool)
+ Application.executorService.submit(runnable);
+ else
+ new Thread(runnable).start();
+ System.out.println(" << Inner intercept");
+ return null;
+ }
+}
--- /dev/null
+public aspect MarkerAAspect {
+ declare precedence : MarkerAAspect, MarkerBAspect;
+
+ Object around() : @annotation(MarkerA) && execution(* *(..)) {
+ System.out.println(">> Outer intercept");
+ Object result = null;
+ for (int i = 0; i < Application.proceedTimesOuter; i++) {
+ System.out.println(" >> Outer proceed");
+ result = proceed();
+ System.out.println(" << Outer proceed");
+ }
+ System.out.println("<< Outer intercept");
+ return result;
+ }
+}
--- /dev/null
+public aspect MarkerBAspect {
+ Object around() : @annotation(MarkerB) && execution(* *(..)) {
+ Runnable runnable = new Runnable() {
+ @Override
+ public void run() {
+ try {
+ for (int i = 0; i < Application.proceedTimesInner; i++) {
+ System.out.println(" >> Inner proceed");
+ proceed();
+ System.out.println(" << Inner proceed");
+ }
+ }
+ catch (Throwable throwable) {
+ throwable.printStackTrace(System.out);
+ }
+ }
+ };
+
+ System.out.println(" >> Inner intercept");
+ if (Application.useThreadPool)
+ Application.executorService.submit(runnable);
+ else
+ new Thread(runnable).start();
+ System.out.println(" << Inner intercept");
+ return null;
+ }
+}
runTest("ITD annotation with mandatory parameter via aspectpath");
}
- public void testAsyncProceedNestedAroundAdvice_gh128() {
- runTest("asynchronous proceed for nested around-advice (@AspectJ)");
- }
-
- public void testAsyncProceedNestedAroundAdviceThreadPool_gh128() {
- // TODO: future improvement, see https://github.com/eclipse/org.aspectj/issues/141
- // runTest("asynchronous proceed for nested around-advice (@AspectJ, thread pool)");
- }
-
- public void testAsyncProceedNestedAroundAdviceNative_gh128() {
- runTest("asynchronous proceed for nested around-advice (native)");
- }
-
- public void testAsyncProceedNestedAroundAdviceNativeThreadPool_gh128() {
- runTest("asynchronous proceed for nested around-advice (native, thread pool)");
- }
-
public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(Bugs198Tests.class);
}
}
}
+ public void testAsyncProceedNestedAroundAdvice_gh128() {
+ runTest("asynchronous proceed for nested around-advice (@AspectJ)");
+ }
+
+ public void testAsyncProceedNestedAroundAdviceThreadPool_gh128() {
+ // TODO: future improvement, see https://github.com/eclipse/org.aspectj/issues/141
+ // runTest("asynchronous proceed for nested around-advice (@AspectJ, thread pool)");
+ }
+
+ public void testAsyncProceedNestedAroundAdviceNative_gh128() {
+ runTest("asynchronous proceed for nested around-advice (native)");
+ }
+
+ public void testAsyncProceedNestedAroundAdviceNativeThreadPool_gh128() {
+ runTest("asynchronous proceed for nested around-advice (native, thread pool)");
+ }
+
public static Test suite() {
return XMLBasedAjcTestCase.loadSuite(Bugs199Tests.class);
}
<compile files="Buffers.java" options="--release 8"/>
</ajc-test>
- <ajc-test dir="bugs198/github_128" title="asynchronous proceed for nested around-advice (@AspectJ)">
- <compile files="Application.java MarkerA.java MarkerB.java annotation_syntax/MarkerAAspect.aj annotation_syntax/MarkerBAspect.aj" options="-1.8" />
- <run class="Application" options="1,1">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text="<< Outer intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- </stdout>
- </run>
- <run class="Application" options="2,1">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text="<< Outer intercept"/>
- </stdout>
- </run>
- <run class="Application" options="1,2">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text="<< Outer intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- </stdout>
- </run>
- <run class="Application" options="2,2">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" << Inner intercept"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text="<< Outer intercept"/>
- </stdout>
- </run>
- </ajc-test>
-
- <ajc-test dir="bugs198/github_128" title="asynchronous proceed for nested around-advice (@AspectJ, thread pool)">
- <compile files="Application.java MarkerA.java MarkerB.java annotation_syntax/MarkerAAspect.aj annotation_syntax/MarkerBAspect.aj" options="-1.8" />
- <run class="Application" options="1,1,true">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text="<< Outer intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- </stdout>
- </run>
- <run class="Application" options="2,1,true">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text="<< Outer intercept"/>
- </stdout>
- </run>
- <run class="Application" options="1,2,true">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text="<< Outer intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- </stdout>
- </run>
- <run class="Application" options="2,2,true">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" << Inner intercept"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text="<< Outer intercept"/>
- </stdout>
- </run>
- </ajc-test>
-
- <ajc-test dir="bugs198/github_128" title="asynchronous proceed for nested around-advice (native)">
- <compile files="Application.java MarkerA.java MarkerB.java native_syntax/MarkerAAspect.aj native_syntax/MarkerBAspect.aj" options="-1.8" />
- <run class="Application" options="1,1">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text="<< Outer intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- </stdout>
- </run>
- <run class="Application" options="2,1">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text="<< Outer intercept"/>
- </stdout>
- </run>
- <run class="Application" options="1,2">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text="<< Outer intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- </stdout>
- </run>
- <run class="Application" options="2,2">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" << Inner intercept"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text="<< Outer intercept"/>
- </stdout>
- </run>
- </ajc-test>
-
- <ajc-test dir="bugs198/github_128" title="asynchronous proceed for nested around-advice (native, thread pool)">
- <compile files="Application.java MarkerA.java MarkerB.java native_syntax/MarkerAAspect.aj native_syntax/MarkerBAspect.aj" options="-1.8" />
- <run class="Application" options="1,1,true">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text="<< Outer intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- </stdout>
- </run>
- <run class="Application" options="2,1,true">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text="<< Outer intercept"/>
- </stdout>
- </run>
- <run class="Application" options="1,2,true">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text="<< Outer intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- </stdout>
- </run>
- <run class="Application" options="2,2,true">
- <stdout ordered="no">
- <line text=">> Outer intercept"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" << Inner intercept"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Outer proceed"/>
- <line text=" >> Inner intercept"/>
- <line text=" >> Inner proceed"/>
- <line text=" << Inner intercept"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" << Outer proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" >> Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text=" Doing something"/>
- <line text=" << Inner proceed"/>
- <line text="<< Outer intercept"/>
- </stdout>
- </run>
- </ajc-test>
-
</suite>
</run>
</ajc-test>
+ <ajc-test dir="bugs199/github_128" title="asynchronous proceed for nested around-advice (@AspectJ)">
+ <compile files="Application.java MarkerA.java MarkerB.java annotation_syntax/MarkerAAspect.aj annotation_syntax/MarkerBAspect.aj" options="-1.8" />
+ <run class="Application" options="1,1">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text="<< Outer intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ </stdout>
+ </run>
+ <run class="Application" options="2,1">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text="<< Outer intercept"/>
+ </stdout>
+ </run>
+ <run class="Application" options="1,2">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text="<< Outer intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ </stdout>
+ </run>
+ <run class="Application" options="2,2">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" << Inner intercept"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text="<< Outer intercept"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs199/github_128" title="asynchronous proceed for nested around-advice (@AspectJ, thread pool)">
+ <compile files="Application.java MarkerA.java MarkerB.java annotation_syntax/MarkerAAspect.aj annotation_syntax/MarkerBAspect.aj" options="-1.8" />
+ <run class="Application" options="1,1,true">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text="<< Outer intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ </stdout>
+ </run>
+ <run class="Application" options="2,1,true">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text="<< Outer intercept"/>
+ </stdout>
+ </run>
+ <run class="Application" options="1,2,true">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text="<< Outer intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ </stdout>
+ </run>
+ <run class="Application" options="2,2,true">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" << Inner intercept"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text="<< Outer intercept"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs199/github_128" title="asynchronous proceed for nested around-advice (native)">
+ <compile files="Application.java MarkerA.java MarkerB.java native_syntax/MarkerAAspect.aj native_syntax/MarkerBAspect.aj" options="-1.8" />
+ <run class="Application" options="1,1">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text="<< Outer intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ </stdout>
+ </run>
+ <run class="Application" options="2,1">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text="<< Outer intercept"/>
+ </stdout>
+ </run>
+ <run class="Application" options="1,2">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text="<< Outer intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ </stdout>
+ </run>
+ <run class="Application" options="2,2">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" << Inner intercept"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text="<< Outer intercept"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
+ <ajc-test dir="bugs199/github_128" title="asynchronous proceed for nested around-advice (native, thread pool)">
+ <compile files="Application.java MarkerA.java MarkerB.java native_syntax/MarkerAAspect.aj native_syntax/MarkerBAspect.aj" options="-1.8" />
+ <run class="Application" options="1,1,true">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text="<< Outer intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ </stdout>
+ </run>
+ <run class="Application" options="2,1,true">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text="<< Outer intercept"/>
+ </stdout>
+ </run>
+ <run class="Application" options="1,2,true">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text="<< Outer intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ </stdout>
+ </run>
+ <run class="Application" options="2,2,true">
+ <stdout ordered="no">
+ <line text=">> Outer intercept"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" << Inner intercept"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Outer proceed"/>
+ <line text=" >> Inner intercept"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" << Inner intercept"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" << Outer proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" >> Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text=" Doing something"/>
+ <line text=" << Inner proceed"/>
+ <line text="<< Outer intercept"/>
+ </stdout>
+ </run>
+ </ajc-test>
+
</suite>