Skip to content

Commit 1ca4b81

Browse files
committed
Reinstated tests for implicit aliases
Issue: SPR-14437 (cherry picked from commit 5ea8c26)
1 parent 4e7e06f commit 1ca4b81

File tree

2 files changed

+69
-2
lines changed

2 files changed

+69
-2
lines changed

spring-core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,15 @@
1818

1919
import java.lang.annotation.Retention;
2020
import java.lang.annotation.RetentionPolicy;
21+
import java.util.Arrays;
22+
import java.util.List;
2123

2224
import org.junit.Rule;
2325
import org.junit.Test;
2426
import org.junit.rules.ExpectedException;
2527

28+
import org.springframework.core.annotation.AnnotationUtilsTests.ImplicitAliasesContextConfig;
29+
2630
import static org.hamcrest.CoreMatchers.*;
2731
import static org.junit.Assert.*;
2832

@@ -154,6 +158,69 @@ public void getEnumWithTypeMismatch() {
154158
attributes.getEnum("color");
155159
}
156160

161+
@Test
162+
public void getAliasedStringWithImplicitAliases() {
163+
String value = "metaverse";
164+
List<String> aliases = Arrays.asList("value", "location1", "location2", "location3", "xmlFile", "groovyScript");
165+
166+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
167+
attributes.put("value", value);
168+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
169+
aliases.stream().forEach(alias -> assertEquals(value, attributes.getString(alias)));
170+
171+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
172+
attributes.put("location1", value);
173+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
174+
aliases.stream().forEach(alias -> assertEquals(value, attributes.getString(alias)));
175+
176+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
177+
attributes.put("value", value);
178+
attributes.put("location1", value);
179+
attributes.put("xmlFile", value);
180+
attributes.put("groovyScript", value);
181+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
182+
aliases.stream().forEach(alias -> assertEquals(value, attributes.getString(alias)));
183+
}
184+
185+
@Test
186+
public void getAliasedStringArrayWithImplicitAliases() {
187+
String[] value = new String[] {"test.xml"};
188+
List<String> aliases = Arrays.asList("value", "location1", "location2", "location3", "xmlFile", "groovyScript");
189+
190+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
191+
attributes.put("location1", value);
192+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
193+
aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias)));
194+
195+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
196+
attributes.put("value", value);
197+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
198+
aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias)));
199+
200+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
201+
attributes.put("location1", value);
202+
attributes.put("value", value);
203+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
204+
aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias)));
205+
206+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
207+
attributes.put("location1", value);
208+
AnnotationUtils.registerDefaultValues(attributes);
209+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
210+
aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias)));
211+
212+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
213+
attributes.put("value", value);
214+
AnnotationUtils.registerDefaultValues(attributes);
215+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
216+
aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias)));
217+
218+
attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class);
219+
AnnotationUtils.registerDefaultValues(attributes);
220+
AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false);
221+
aliases.stream().forEach(alias -> assertArrayEquals(new String[] {""}, attributes.getStringArray(alias)));
222+
}
223+
157224

158225
enum Color {
159226

spring-core/src/test/java/org/springframework/core/annotation/AnnotationUtilsTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2121,12 +2121,12 @@ static class AliasedComposedContextConfigNotMetaPresentClass {
21212121

21222122
@ContextConfig
21232123
@Retention(RetentionPolicy.RUNTIME)
2124-
@interface ImplicitAliasesContextConfig {
2124+
public @interface ImplicitAliasesContextConfig {
21252125

21262126
@AliasFor(annotation = ContextConfig.class, attribute = "location")
21272127
String xmlFile() default "";
21282128

2129-
@AliasFor(annotation = ContextConfig.class, value = "location")
2129+
@AliasFor(annotation = ContextConfig.class, attribute = "location")
21302130
String groovyScript() default "";
21312131

21322132
@AliasFor(annotation = ContextConfig.class, attribute = "location")

0 commit comments

Comments
 (0)