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
This commit is contained in:
@@ -69,8 +69,10 @@ public interface AnnotatedTypeMetadata {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the attributes of the annotation of the given type, if any (i.e. if
|
* 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),
|
* defined on the underlying element, as direct annotation or meta-annotation).
|
||||||
* also taking attribute overrides on composed annotations into account.
|
* <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
|
* @param annotationName the fully-qualified class name of the annotation
|
||||||
* type to look for
|
* type to look for
|
||||||
* @return a {@link Map} of attributes, with each annotation attribute name
|
* @return a {@link Map} of attributes, with each annotation attribute name
|
||||||
@@ -84,8 +86,10 @@ public interface AnnotatedTypeMetadata {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the attributes of the annotation of the given type, if any (i.e. if
|
* 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),
|
* defined on the underlying element, as direct annotation or meta-annotation).
|
||||||
* also taking attribute overrides on composed annotations into account.
|
* <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
|
* @param annotationName the fully-qualified class name of the annotation
|
||||||
* type to look for
|
* type to look for
|
||||||
* @param classValuesAsString whether to convert class references to String
|
* @param classValuesAsString whether to convert class references to String
|
||||||
|
|||||||
@@ -214,8 +214,8 @@ class AnnotationMetadataTests {
|
|||||||
private void assertMetaAnnotationOverrides(AnnotationMetadata metadata) {
|
private void assertMetaAnnotationOverrides(AnnotationMetadata metadata) {
|
||||||
AnnotationAttributes attributes = (AnnotationAttributes) metadata.getAnnotationAttributes(
|
AnnotationAttributes attributes = (AnnotationAttributes) metadata.getAnnotationAttributes(
|
||||||
TestComponentScan.class.getName(), false);
|
TestComponentScan.class.getName(), false);
|
||||||
|
assertThat(attributes.getStringArray("value")).containsExactly("org.example.componentscan");
|
||||||
assertThat(attributes.getStringArray("basePackages")).containsExactly("org.example.componentscan");
|
assertThat(attributes.getStringArray("basePackages")).containsExactly("org.example.componentscan");
|
||||||
assertThat(attributes.getStringArray("value")).isEmpty();
|
|
||||||
assertThat(attributes.getClassArray("basePackageClasses")).isEmpty();
|
assertThat(attributes.getClassArray("basePackageClasses")).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -536,8 +536,10 @@ class AnnotationMetadataTests {
|
|||||||
@Target(ElementType.TYPE)
|
@Target(ElementType.TYPE)
|
||||||
public @interface TestComponentScan {
|
public @interface TestComponentScan {
|
||||||
|
|
||||||
|
@AliasFor("basePackages")
|
||||||
String[] value() default {};
|
String[] value() default {};
|
||||||
|
|
||||||
|
@AliasFor("value")
|
||||||
String[] basePackages() default {};
|
String[] basePackages() default {};
|
||||||
|
|
||||||
Class<?>[] basePackageClasses() default {};
|
Class<?>[] basePackageClasses() default {};
|
||||||
|
|||||||
Reference in New Issue
Block a user