Support synthesized annotations in MethodParameter

master
Sam Brannen 9 years ago
parent 1afc938da1
commit 518c85b107
  1. 10
      spring-core/src/main/java/org/springframework/core/MethodParameter.java

@ -26,6 +26,7 @@ import java.lang.reflect.Type;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.util.Assert; import org.springframework.util.Assert;
/** /**
@ -36,6 +37,7 @@ import org.springframework.util.Assert;
* @author Juergen Hoeller * @author Juergen Hoeller
* @author Rob Harrop * @author Rob Harrop
* @author Andy Clement * @author Andy Clement
* @author Sam Brannen
* @since 2.0 * @since 2.0
* @see GenericCollectionTypeResolver * @see GenericCollectionTypeResolver
*/ */
@ -386,7 +388,7 @@ public class MethodParameter {
* Return the annotations associated with the target method/constructor itself. * Return the annotations associated with the target method/constructor itself.
*/ */
public Annotation[] getMethodAnnotations() { public Annotation[] getMethodAnnotations() {
return getAnnotatedElement().getAnnotations(); return AnnotationUtils.synthesizeAnnotationArray(getAnnotatedElement().getAnnotations(), getAnnotatedElement());
} }
/** /**
@ -395,7 +397,8 @@ public class MethodParameter {
* @return the annotation object, or {@code null} if not found * @return the annotation object, or {@code null} if not found
*/ */
public <T extends Annotation> T getMethodAnnotation(Class<T> annotationType) { public <T extends Annotation> T getMethodAnnotation(Class<T> annotationType) {
return getAnnotatedElement().getAnnotation(annotationType); AnnotatedElement element = getAnnotatedElement();
return AnnotationUtils.synthesizeAnnotation(element.getAnnotation(annotationType), element);
} }
/** /**
@ -406,7 +409,8 @@ public class MethodParameter {
Annotation[][] annotationArray = (this.method != null ? Annotation[][] annotationArray = (this.method != null ?
this.method.getParameterAnnotations() : this.constructor.getParameterAnnotations()); this.method.getParameterAnnotations() : this.constructor.getParameterAnnotations());
if (this.parameterIndex >= 0 && this.parameterIndex < annotationArray.length) { if (this.parameterIndex >= 0 && this.parameterIndex < annotationArray.length) {
this.parameterAnnotations = annotationArray[this.parameterIndex]; this.parameterAnnotations = AnnotationUtils.synthesizeAnnotationArray(
annotationArray[this.parameterIndex], getAnnotatedElement());
} }
else { else {
this.parameterAnnotations = new Annotation[0]; this.parameterAnnotations = new Annotation[0];

Loading…
Cancel
Save