Skip to content

Commit a76c7ca

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

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

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

Lines changed: 16 additions & 5 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.*;
@@ -25,29 +28,37 @@
2528
* Unit tests for {@link AnnotationAsyncExecutionInterceptor}.
2629
*
2730
* @author Chris Beams
28-
* @since 3.1.2
31+
* @since 3.2
2932
*/
3033
public class AnnotationAsyncExecutionInterceptorTests {
3134

3235
@Test
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)