Browse Source

Document @AliasFor support in AnnotatedTypeMetadata.getAnnotationAttributes()

The Javadoc for getAnnotationAttributes() states that it supports
"attribute overrides on composed annotations"; however, it actually
supports @AliasFor in general, including attribute aliases within a
given annotation.

This commit updates the Javadoc and corresponding tests to reflect that.

Closes gh-31042
pull/31063/head
Sam Brannen 2 years ago
parent
commit
fb6c325cc0
  1. 12
      spring-core/src/main/java/org/springframework/core/type/AnnotatedTypeMetadata.java
  2. 4
      spring-core/src/test/java/org/springframework/core/type/AnnotationMetadataTests.java

12
spring-core/src/main/java/org/springframework/core/type/AnnotatedTypeMetadata.java

@ -69,8 +69,10 @@ public interface AnnotatedTypeMetadata { @@ -69,8 +69,10 @@ public interface AnnotatedTypeMetadata {
/**
* Retrieve the attributes of the annotation of the given type, if any (i.e. if
* defined on the underlying element, as direct annotation or meta-annotation),
* also taking attribute overrides on composed annotations into account.
* defined on the underlying element, as direct annotation or meta-annotation).
* <p>{@link org.springframework.core.annotation.AliasFor @AliasFor} semantics
* are fully supported, both within a single annotation and within annotation
* hierarchies.
* @param annotationName the fully-qualified class name of the annotation
* type to look for
* @return a {@link Map} of attributes, with each annotation attribute name
@ -84,8 +86,10 @@ public interface AnnotatedTypeMetadata { @@ -84,8 +86,10 @@ public interface AnnotatedTypeMetadata {
/**
* Retrieve the attributes of the annotation of the given type, if any (i.e. if
* defined on the underlying element, as direct annotation or meta-annotation),
* also taking attribute overrides on composed annotations into account.
* defined on the underlying element, as direct annotation or meta-annotation).
* <p>{@link org.springframework.core.annotation.AliasFor @AliasFor} semantics
* are fully supported, both within a single annotation and within annotation
* hierarchies.
* @param annotationName the fully-qualified class name of the annotation
* type to look for
* @param classValuesAsString whether to convert class references to String

4
spring-core/src/test/java/org/springframework/core/type/AnnotationMetadataTests.java

@ -214,8 +214,8 @@ class AnnotationMetadataTests { @@ -214,8 +214,8 @@ class AnnotationMetadataTests {
private void assertMetaAnnotationOverrides(AnnotationMetadata metadata) {
AnnotationAttributes attributes = (AnnotationAttributes) metadata.getAnnotationAttributes(
TestComponentScan.class.getName(), false);
assertThat(attributes.getStringArray("value")).containsExactly("org.example.componentscan");
assertThat(attributes.getStringArray("basePackages")).containsExactly("org.example.componentscan");
assertThat(attributes.getStringArray("value")).isEmpty();
assertThat(attributes.getClassArray("basePackageClasses")).isEmpty();
}
@ -536,8 +536,10 @@ class AnnotationMetadataTests { @@ -536,8 +536,10 @@ class AnnotationMetadataTests {
@Target(ElementType.TYPE)
public @interface TestComponentScan {
@AliasFor("basePackages")
String[] value() default {};
@AliasFor("value")
String[] basePackages() default {};
Class<?>[] basePackageClasses() default {};

Loading…
Cancel
Save