From 5ea8c2670e1b5dd9dfed2aa0061b59330b536ce1 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 19 Jul 2016 17:26:47 +0200 Subject: [PATCH] Reinstated tests for implicit aliases Issue: SPR-14437 --- .../annotation/AnnotationAttributesTests.java | 67 +++++++++++++++++++ .../core/annotation/AnnotationUtilsTests.java | 4 +- 2 files changed, 69 insertions(+), 2 deletions(-) diff --git a/spring-core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java b/spring-core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java index 99818400e6..5908bf3693 100644 --- a/spring-core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java +++ b/spring-core/src/test/java/org/springframework/core/annotation/AnnotationAttributesTests.java @@ -18,11 +18,15 @@ package org.springframework.core.annotation; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.Arrays; +import java.util.List; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.springframework.core.annotation.AnnotationUtilsTests.ImplicitAliasesContextConfig; + import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; @@ -154,6 +158,69 @@ public class AnnotationAttributesTests { attributes.getEnum("color"); } + @Test + public void getAliasedStringWithImplicitAliases() { + String value = "metaverse"; + List aliases = Arrays.asList("value", "location1", "location2", "location3", "xmlFile", "groovyScript"); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + attributes.put("value", value); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertEquals(value, attributes.getString(alias))); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + attributes.put("location1", value); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertEquals(value, attributes.getString(alias))); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + attributes.put("value", value); + attributes.put("location1", value); + attributes.put("xmlFile", value); + attributes.put("groovyScript", value); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertEquals(value, attributes.getString(alias))); + } + + @Test + public void getAliasedStringArrayWithImplicitAliases() { + String[] value = new String[] {"test.xml"}; + List aliases = Arrays.asList("value", "location1", "location2", "location3", "xmlFile", "groovyScript"); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + attributes.put("location1", value); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias))); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + attributes.put("value", value); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias))); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + attributes.put("location1", value); + attributes.put("value", value); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias))); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + attributes.put("location1", value); + AnnotationUtils.registerDefaultValues(attributes); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias))); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + attributes.put("value", value); + AnnotationUtils.registerDefaultValues(attributes); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertArrayEquals(value, attributes.getStringArray(alias))); + + attributes = new AnnotationAttributes(ImplicitAliasesContextConfig.class); + AnnotationUtils.registerDefaultValues(attributes); + AnnotationUtils.postProcessAnnotationAttributes(null, attributes, false); + aliases.stream().forEach(alias -> assertArrayEquals(new String[] {""}, attributes.getStringArray(alias))); + } + enum Color { diff --git a/spring-core/src/test/java/org/springframework/core/annotation/AnnotationUtilsTests.java b/spring-core/src/test/java/org/springframework/core/annotation/AnnotationUtilsTests.java index 5332709696..c8d5170cdd 100644 --- a/spring-core/src/test/java/org/springframework/core/annotation/AnnotationUtilsTests.java +++ b/spring-core/src/test/java/org/springframework/core/annotation/AnnotationUtilsTests.java @@ -2121,12 +2121,12 @@ public class AnnotationUtilsTests { @ContextConfig @Retention(RetentionPolicy.RUNTIME) - @interface ImplicitAliasesContextConfig { + public @interface ImplicitAliasesContextConfig { @AliasFor(annotation = ContextConfig.class, attribute = "location") String xmlFile() default ""; - @AliasFor(annotation = ContextConfig.class, value = "location") + @AliasFor(annotation = ContextConfig.class, attribute = "location") String groovyScript() default ""; @AliasFor(annotation = ContextConfig.class, attribute = "location")