Skip to content

Commit 55103a2

Browse files
committed
Add meta-annotation tests and Template annotation
Import findMetaAnnotation/findMetaAnnotations into tests and add coverage for meta-annotation discovery. Adds testFindMetaAnnotation and testFindMetaAnnotations (with helper assertFindMetaAnnotations) to assert that meta-annotations such as Monitored, ServiceMode and Template are found on test types A and B and not present on AnnotationUtils. Also introduces a new @template meta-annotation and annotates @ServiceMode with @template to support the tests.
1 parent 975b9cc commit 55103a2

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

microsphere-java-core/src/test/java/io/microsphere/util/AnnotationUtilsTest.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@
5959
import static io.microsphere.util.AnnotationUtils.findAttributeValue;
6060
import static io.microsphere.util.AnnotationUtils.findAttributesMap;
6161
import static io.microsphere.util.AnnotationUtils.findDeclaredAnnotations;
62+
import static io.microsphere.util.AnnotationUtils.findMetaAnnotation;
63+
import static io.microsphere.util.AnnotationUtils.findMetaAnnotations;
6264
import static io.microsphere.util.AnnotationUtils.getAllDeclaredAnnotations;
6365
import static io.microsphere.util.AnnotationUtils.getAttributeValue;
6466
import static io.microsphere.util.AnnotationUtils.getAttributesMap;
@@ -627,6 +629,39 @@ void testIsCallerSensitivePresent() {
627629
assertEquals(CALLER_SENSITIVE_ANNOTATION_CLASS != null, isCallerSensitivePresent());
628630
}
629631

632+
@Test
633+
void testFindMetaAnnotation() {
634+
assertNotNull(findMetaAnnotation(A.class, Monitored.class));
635+
assertNotNull(findMetaAnnotation(B.class, Monitored.class));
636+
637+
assertNotNull(findMetaAnnotation(A.class, ServiceMode.class));
638+
assertNotNull(findMetaAnnotation(B.class, ServiceMode.class));
639+
640+
assertNotNull(findMetaAnnotation(A.class, Template.class));
641+
assertNotNull(findMetaAnnotation(B.class, Template.class));
642+
643+
assertNull(findMetaAnnotation(AnnotationUtils.class, Monitored.class));
644+
assertNull(findMetaAnnotation(AnnotationUtils.class, ServiceMode.class));
645+
assertNull(findMetaAnnotation(AnnotationUtils.class, Template.class));
646+
}
647+
648+
@Test
649+
void testFindMetaAnnotations() {
650+
assertFindMetaAnnotations(A.class, Monitored.class);
651+
assertFindMetaAnnotations(B.class, Monitored.class);
652+
653+
assertFindMetaAnnotations(A.class, ServiceMode.class);
654+
assertFindMetaAnnotations(B.class, ServiceMode.class);
655+
656+
assertFindMetaAnnotations(A.class, Template.class);
657+
assertFindMetaAnnotations(B.class, Template.class);
658+
}
659+
660+
private void assertFindMetaAnnotations(AnnotatedElement annotatedElement, Class<? extends Annotation> metaAnnotationType) {
661+
List<? extends Annotation> metaAnnotations = findMetaAnnotations(annotatedElement, metaAnnotationType);
662+
assertEquals(1, metaAnnotations.size());
663+
}
664+
630665
private void assertFilterAnnotations(Annotation[] annotations) {
631666
assertEquals(ofList(annotations), filterAnnotations(annotations, annotation -> true));
632667
assertEquals(ofList(annotations), filterAnnotations(ofList(annotations), annotation -> true));
@@ -639,6 +674,14 @@ private void assertFilterAnnotations(Annotation[] annotations) {
639674
@Retention(RUNTIME)
640675
@Inherited
641676
@Documented
677+
public @interface Template {
678+
}
679+
680+
@Target(TYPE)
681+
@Retention(RUNTIME)
682+
@Inherited
683+
@Documented
684+
@Template
642685
public @interface ServiceMode {
643686
}
644687

0 commit comments

Comments
 (0)