From f049a6ec16c758c2a2f6ead45ab212873cb9e506 Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Tue, 3 Dec 2019 17:12:14 +0100 Subject: [PATCH] Add integration test for gh-24110 --- .../AnnotatedElementUtilsTests.java | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/spring-core/src/test/java/org/springframework/core/annotation/AnnotatedElementUtilsTests.java b/spring-core/src/test/java/org/springframework/core/annotation/AnnotatedElementUtilsTests.java index 0ca70fac74..ea719a1e2e 100644 --- a/spring-core/src/test/java/org/springframework/core/annotation/AnnotatedElementUtilsTests.java +++ b/spring-core/src/test/java/org/springframework/core/annotation/AnnotatedElementUtilsTests.java @@ -488,6 +488,20 @@ public class AnnotatedElementUtilsTests { assertTrue(isAnnotated(element, name)); } + @Test + public void getMergedAnnotationWithImplicitAliasesWithDefaultsInMetaAnnotationOnComposedAnnotation() { + Class element = ImplicitAliasesWithDefaultsClass.class; + String name = AliasesWithDefaults.class.getName(); + AliasesWithDefaults annotation = getMergedAnnotation(element, AliasesWithDefaults.class); + + assertNotNull("Should find @AliasesWithDefaults on " + element.getSimpleName(), annotation); + assertEquals("a1", "ImplicitAliasesWithDefaults", annotation.a1()); + assertEquals("a2", "ImplicitAliasesWithDefaults", annotation.a2()); + + // Verify contracts between utility methods: + assertTrue(isAnnotated(element, name)); + } + @Test public void getMergedAnnotationAttributesWithInvalidConventionBasedComposedAnnotation() { Class element = InvalidConventionBasedComposedContextConfigClass.class; @@ -958,7 +972,6 @@ public class AnnotatedElementUtilsTests { String[] xmlConfigFiles() default {}; } - @ContextConfig @Retention(RetentionPolicy.RUNTIME) @interface AliasedComposedContextConfig { @@ -999,6 +1012,27 @@ public class AnnotatedElementUtilsTests { @interface ComposedImplicitAliasesContextConfig { } + @Retention(RetentionPolicy.RUNTIME) + @interface AliasesWithDefaults { + + @AliasFor("a2") + String a1() default "AliasesWithDefaults"; + + @AliasFor("a1") + String a2() default "AliasesWithDefaults"; + } + + @Retention(RetentionPolicy.RUNTIME) + @AliasesWithDefaults + @interface ImplicitAliasesWithDefaults { + + @AliasFor(annotation = AliasesWithDefaults.class, attribute = "a1") + String b1() default "ImplicitAliasesWithDefaults"; + + @AliasFor(annotation = AliasesWithDefaults.class, attribute = "a2") + String b2() default "ImplicitAliasesWithDefaults"; + } + @ImplicitAliasesContextConfig @Retention(RetentionPolicy.RUNTIME) @interface TransitiveImplicitAliasesContextConfig { @@ -1296,6 +1330,10 @@ public class AnnotatedElementUtilsTests { static class ImplicitAliasesContextConfigClass3 { } + @ImplicitAliasesWithDefaults + static class ImplicitAliasesWithDefaultsClass { + } + @TransitiveImplicitAliasesContextConfig(groovy = "test.groovy") static class TransitiveImplicitAliasesContextConfigClass { }