20
20
import java .lang .annotation .Annotation ;
21
21
import java .lang .annotation .Documented ;
22
22
import java .lang .annotation .ElementType ;
23
+ import java .lang .annotation .Inherited ;
23
24
import java .lang .annotation .Retention ;
24
25
import java .lang .annotation .RetentionPolicy ;
25
26
import java .lang .annotation .Target ;
52
53
public class AnnotationMetadataTests {
53
54
54
55
@ Test
55
- public void standardAnnotationMetadata () throws Exception {
56
+ public void standardAnnotationMetadata () {
56
57
AnnotationMetadata metadata = new StandardAnnotationMetadata (AnnotatedComponent .class , true );
57
58
doTestAnnotationInfo (metadata );
58
59
doTestMethodAnnotationInfo (metadata );
@@ -68,7 +69,7 @@ public void asmAnnotationMetadata() throws Exception {
68
69
}
69
70
70
71
@ Test
71
- public void standardAnnotationMetadataForSubclass () throws Exception {
72
+ public void standardAnnotationMetadataForSubclass () {
72
73
AnnotationMetadata metadata = new StandardAnnotationMetadata (AnnotatedComponentSubClass .class , true );
73
74
doTestSubClassAnnotationInfo (metadata );
74
75
}
@@ -104,7 +105,7 @@ private void doTestSubClassAnnotationInfo(AnnotationMetadata metadata) {
104
105
}
105
106
106
107
@ Test
107
- public void standardAnnotationMetadataForInterface () throws Exception {
108
+ public void standardAnnotationMetadataForInterface () {
108
109
AnnotationMetadata metadata = new StandardAnnotationMetadata (AnnotationMetadata .class , true );
109
110
doTestMetadataForInterfaceClass (metadata );
110
111
}
@@ -132,7 +133,7 @@ private void doTestMetadataForInterfaceClass(AnnotationMetadata metadata) {
132
133
}
133
134
134
135
@ Test
135
- public void standardAnnotationMetadataForAnnotation () throws Exception {
136
+ public void standardAnnotationMetadataForAnnotation () {
136
137
AnnotationMetadata metadata = new StandardAnnotationMetadata (Component .class , true );
137
138
doTestMetadataForAnnotationClass (metadata );
138
139
}
@@ -172,7 +173,7 @@ private void doTestMetadataForAnnotationClass(AnnotationMetadata metadata) {
172
173
* 'true' as is done in the main test above.
173
174
*/
174
175
@ Test
175
- public void standardAnnotationMetadata_nestedAnnotationsAsMap_false () throws Exception {
176
+ public void standardAnnotationMetadata_nestedAnnotationsAsMap_false () {
176
177
AnnotationMetadata metadata = new StandardAnnotationMetadata (AnnotatedComponent .class );
177
178
AnnotationAttributes specialAttrs = (AnnotationAttributes ) metadata .getAnnotationAttributes (SpecialAttr .class .getName ());
178
179
Annotation [] nestedAnnoArray = (Annotation []) specialAttrs .get ("nestedAnnoArray" );
@@ -233,6 +234,20 @@ public void composedAnnotationWithMetaAnnotationsWithIdenticalAttributeNamesUsin
233
234
assertMultipleAnnotationsWithIdenticalAttributeNames (metadata );
234
235
}
235
236
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
+
236
251
237
252
private void assertMultipleAnnotationsWithIdenticalAttributeNames (AnnotationMetadata metadata ) {
238
253
AnnotationAttributes attributes1 = (AnnotationAttributes ) metadata .getAnnotationAttributes (
@@ -545,11 +560,15 @@ public static class NamedAnnotationsClass {
545
560
@ NamedAnnotation3 (name = "name 3" )
546
561
@ Retention (RetentionPolicy .RUNTIME )
547
562
@ Target (ElementType .TYPE )
563
+ @ Inherited
548
564
public @interface NamedComposedAnnotation {
549
565
}
550
566
551
567
@ NamedComposedAnnotation
552
568
public static class NamedComposedAnnotationClass {
553
569
}
554
570
571
+ public static class NamedComposedAnnotationExtended extends NamedComposedAnnotationClass {
572
+ }
573
+
555
574
}
0 commit comments