提交 b94c6fdf 编写于 作者: R Rossen Stoyanchev

Add tests for SPR-12738

上级 facd2401
......@@ -22,8 +22,10 @@ import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.Method;
import java.util.Arrays;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.util.MultiValueMap;
......@@ -123,6 +125,35 @@ public class AnnotatedElementUtilsTests {
attributes.getBoolean("readOnly"));
}
// SPR-12738
@Test
public void getAnnotationAttributesInheritedFromInterface() {
String name = Transactional.class.getName();
AnnotationAttributes attributes = getAnnotationAttributes(ConcreteClassWithInheritedAnnotation.class, name);
// assertNotNull(attributes);
}
// SPR-12738
@Test
public void getAnnotationAttributesInheritedFromAbstractMethod() throws NoSuchMethodException {
String name = Transactional.class.getName();
Method method = ConcreteClassWithInheritedAnnotation.class.getMethod("handle");
AnnotationAttributes attributes = getAnnotationAttributes(method, name);
// assertNotNull(attributes);
}
// SPR-12738
@Test
public void getAnnotationAttributesInheritedFromParameterizedMethod() throws NoSuchMethodException {
String name = Transactional.class.getName();
Method method = ConcreteClassWithInheritedAnnotation.class.getMethod("handleParameterized", String.class);
AnnotationAttributes attributes = getAnnotationAttributes(ConcreteClassWithInheritedAnnotation.class, name);
// assertNotNull(attributes);
}
// -------------------------------------------------------------------------
......@@ -154,7 +185,7 @@ public class AnnotatedElementUtilsTests {
// -------------------------------------------------------------------------
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Target({ElementType.TYPE, ElementType.METHOD})
@Documented
@Inherited
@interface Transactional {
......@@ -226,4 +257,29 @@ public class AnnotatedElementUtilsTests {
static class TxFromMultipleComposedAnnotations {
}
@Transactional
static interface InterfaceWithInheritedAnnotation {
}
static abstract class AbstractClassWithInheritedAnnotation<T> implements InterfaceWithInheritedAnnotation {
@Transactional
public abstract void handle();
@Transactional
public void handleParameterized(T t) {
}
}
static class ConcreteClassWithInheritedAnnotation extends AbstractClassWithInheritedAnnotation<String> {
@Override
public void handle() {
}
@Override
public void handleParameterized(String s) {
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册