Browse Source
Update `TypeMappedAnnotation` mirror resolution logic so that mapped annotation values are also considered. Prior to this commit, mirrors in more complex meta-annotation scenarios would not resolve correctly. Specifically, given the following: @interface TestAliased { @AliasFor(attribute = "qualifier") String value() default ""; @AliasFor(attribute = "value") String qualifier() default ""; } @TestAliased @interface TestMetaAliased { @AliasFor(annotation = Aliased.class, attribute = "value") String value() default ""; } @TestMetaAliased("test") @interface TestComposed { } A merged `@TestAliased` annotation obtained from a `@TestComposed` root annotation would return a `value` and `qualifier` of "". This was because the "value" and "qualifier" mirrors needed to be resolved against the `@TestMetaAliased` meta-annotation. They cannot be resolved against the declared `@TestComposed` annotation because it does not have any attributes. Our previous tests only covered a single depth scenario where `@TestMetaAliased` was used directly on the annotated element. Closes gh-23767 Co-authored-by: Sam Brannen <sbrannen@pivotal.io>pull/23847/head
Phillip Webb
5 years ago
4 changed files with 144 additions and 5 deletions
Loading…
Reference in new issue