diff --git a/spring-core/src/test/java/org/springframework/core/annotation/AnnotatedElementUtilsTests.java b/spring-core/src/test/java/org/springframework/core/annotation/AnnotatedElementUtilsTests.java index 89c04d351e..7596a0ecaa 100644 --- a/spring-core/src/test/java/org/springframework/core/annotation/AnnotatedElementUtilsTests.java +++ b/spring-core/src/test/java/org/springframework/core/annotation/AnnotatedElementUtilsTests.java @@ -89,6 +89,35 @@ public class AnnotatedElementUtilsTests { assertFalse(hasMetaAnnotationTypes(ComposedTransactionalComponentClass.class, ComposedTransactionalComponent.class.getName())); } + @Test + public void isAnnotatedOnNonAnnotatedClass() { + assertFalse(isAnnotated(NonAnnotatedClass.class, Transactional.class.getName())); + } + + @Test + public void isAnnotatedOnClassWithMetaDepth0() { + assertTrue(isAnnotated(TransactionalComponentClass.class, TransactionalComponent.class.getName())); + } + + @Test + public void isAnnotatedOnSubclassWithMetaDepth0() { + assertFalse("isAnnotated() does not search the class hierarchy.", + isAnnotated(SubTransactionalComponentClass.class, TransactionalComponent.class.getName())); + } + + @Test + public void isAnnotatedOnClassWithMetaDepth1() { + assertTrue(isAnnotated(TransactionalComponentClass.class, Transactional.class.getName())); + assertTrue(isAnnotated(TransactionalComponentClass.class, Component.class.getName())); + } + + @Test + public void isAnnotatedOnClassWithMetaDepth2() { + assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, Transactional.class.getName())); + assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, Component.class.getName())); + assertTrue(isAnnotated(ComposedTransactionalComponentClass.class, ComposedTransactionalComponent.class.getName())); + } + @Test public void getAllAnnotationAttributesOnClassWithLocalAnnotation() { MultiValueMap attributes = getAllAnnotationAttributes(TxConfig.class, @@ -410,6 +439,9 @@ public class AnnotatedElementUtilsTests { static class TransactionalComponentClass { } + static class SubTransactionalComponentClass extends TransactionalComponentClass { + } + @ComposedTransactionalComponent static class ComposedTransactionalComponentClass { }