Skip to content

Commit 37e024c

Browse files
committed
Test meta-@async executor qualification
Prove that Async#value is respected even when using @async as a meta annotation. Issue: SPR-6847
1 parent 1d06001 commit 37e024c

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

spring-context/src/test/java/org/springframework/scheduling/annotation/AnnotationAsyncExecutionInterceptorTests.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.springframework.scheduling.annotation;
1818

19+
import java.lang.annotation.Retention;
20+
import java.lang.annotation.RetentionPolicy;
21+
1922
import org.junit.Test;
2023

2124
import static org.hamcrest.CoreMatchers.*;
@@ -33,21 +36,29 @@ public class AnnotationAsyncExecutionInterceptorTests {
3336
@SuppressWarnings("unused")
3437
public void testGetExecutorQualifier() throws SecurityException, NoSuchMethodException {
3538
AnnotationAsyncExecutionInterceptor i = new AnnotationAsyncExecutionInterceptor(null);
36-
{
39+
{ // method level
3740
class C { @Async("qMethod") void m() { } }
3841
assertThat(i.getExecutorQualifier(C.class.getDeclaredMethod("m")), is("qMethod"));
3942
}
40-
{
43+
{ // class level
4144
@Async("qClass") class C { void m() { } }
4245
assertThat(i.getExecutorQualifier(C.class.getDeclaredMethod("m")), is("qClass"));
4346
}
44-
{
47+
{ // method and class level -> method value overrides
4548
@Async("qClass") class C { @Async("qMethod") void m() { } }
4649
assertThat(i.getExecutorQualifier(C.class.getDeclaredMethod("m")), is("qMethod"));
4750
}
48-
{
51+
{ // method and class level -> method value, even if empty, overrides
4952
@Async("qClass") class C { @Async void m() { } }
5053
assertThat(i.getExecutorQualifier(C.class.getDeclaredMethod("m")), is(""));
5154
}
55+
{ // meta annotation with qualifier
56+
@MyAsync class C { void m() { } }
57+
assertThat(i.getExecutorQualifier(C.class.getDeclaredMethod("m")), is("qMeta"));
58+
}
5259
}
60+
61+
@Async("qMeta")
62+
@Retention(RetentionPolicy.RUNTIME)
63+
@interface MyAsync { }
5364
}

0 commit comments

Comments
 (0)