2020import java .lang .annotation .Annotation ;
2121import java .lang .annotation .Documented ;
2222import java .lang .annotation .ElementType ;
23+ import java .lang .annotation .Inherited ;
2324import java .lang .annotation .Retention ;
2425import java .lang .annotation .RetentionPolicy ;
2526import java .lang .annotation .Target ;
5253public class AnnotationMetadataTests {
5354
5455 @ Test
55- public void standardAnnotationMetadata () throws Exception {
56+ public void standardAnnotationMetadata () {
5657 AnnotationMetadata metadata = new StandardAnnotationMetadata (AnnotatedComponent .class , true );
5758 doTestAnnotationInfo (metadata );
5859 doTestMethodAnnotationInfo (metadata );
@@ -68,7 +69,7 @@ public void asmAnnotationMetadata() throws Exception {
6869 }
6970
7071 @ Test
71- public void standardAnnotationMetadataForSubclass () throws Exception {
72+ public void standardAnnotationMetadataForSubclass () {
7273 AnnotationMetadata metadata = new StandardAnnotationMetadata (AnnotatedComponentSubClass .class , true );
7374 doTestSubClassAnnotationInfo (metadata );
7475 }
@@ -104,7 +105,7 @@ private void doTestSubClassAnnotationInfo(AnnotationMetadata metadata) {
104105 }
105106
106107 @ Test
107- public void standardAnnotationMetadataForInterface () throws Exception {
108+ public void standardAnnotationMetadataForInterface () {
108109 AnnotationMetadata metadata = new StandardAnnotationMetadata (AnnotationMetadata .class , true );
109110 doTestMetadataForInterfaceClass (metadata );
110111 }
@@ -132,7 +133,7 @@ private void doTestMetadataForInterfaceClass(AnnotationMetadata metadata) {
132133 }
133134
134135 @ Test
135- public void standardAnnotationMetadataForAnnotation () throws Exception {
136+ public void standardAnnotationMetadataForAnnotation () {
136137 AnnotationMetadata metadata = new StandardAnnotationMetadata (Component .class , true );
137138 doTestMetadataForAnnotationClass (metadata );
138139 }
@@ -172,7 +173,7 @@ private void doTestMetadataForAnnotationClass(AnnotationMetadata metadata) {
172173 * 'true' as is done in the main test above.
173174 */
174175 @ Test
175- public void standardAnnotationMetadata_nestedAnnotationsAsMap_false () throws Exception {
176+ public void standardAnnotationMetadata_nestedAnnotationsAsMap_false () {
176177 AnnotationMetadata metadata = new StandardAnnotationMetadata (AnnotatedComponent .class );
177178 AnnotationAttributes specialAttrs = (AnnotationAttributes ) metadata .getAnnotationAttributes (SpecialAttr .class .getName ());
178179 Annotation [] nestedAnnoArray = (Annotation []) specialAttrs .get ("nestedAnnoArray" );
@@ -233,6 +234,20 @@ public void composedAnnotationWithMetaAnnotationsWithIdenticalAttributeNamesUsin
233234 assertMultipleAnnotationsWithIdenticalAttributeNames (metadata );
234235 }
235236
237+ @ Test
238+ public void inheritedAnnotationWithMetaAnnotationsWithIdenticalAttributeNamesUsingStandardAnnotationMetadata () {
239+ AnnotationMetadata metadata = new StandardAnnotationMetadata (NamedComposedAnnotationExtended .class );
240+ assertFalse (metadata .hasAnnotation (NamedComposedAnnotation .class .getName ()));
241+ }
242+
243+ @ Test
244+ public void inheritedAnnotationWithMetaAnnotationsWithIdenticalAttributeNamesUsingAnnotationMetadataReadingVisitor () throws Exception {
245+ MetadataReaderFactory metadataReaderFactory = new SimpleMetadataReaderFactory ();
246+ MetadataReader metadataReader = metadataReaderFactory .getMetadataReader (NamedComposedAnnotationExtended .class .getName ());
247+ AnnotationMetadata metadata = metadataReader .getAnnotationMetadata ();
248+ assertFalse (metadata .hasAnnotation (NamedComposedAnnotation .class .getName ()));
249+ }
250+
236251
237252 private void assertMultipleAnnotationsWithIdenticalAttributeNames (AnnotationMetadata metadata ) {
238253 AnnotationAttributes attributes1 = (AnnotationAttributes ) metadata .getAnnotationAttributes (
@@ -545,11 +560,15 @@ public static class NamedAnnotationsClass {
545560 @ NamedAnnotation3 (name = "name 3" )
546561 @ Retention (RetentionPolicy .RUNTIME )
547562 @ Target (ElementType .TYPE )
563+ @ Inherited
548564 public @interface NamedComposedAnnotation {
549565 }
550566
551567 @ NamedComposedAnnotation
552568 public static class NamedComposedAnnotationClass {
553569 }
554570
571+ public static class NamedComposedAnnotationExtended extends NamedComposedAnnotationClass {
572+ }
573+
555574}
0 commit comments