From 02d05ed133566cc4ba2d72c51e5f7ca3ede02e2a Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 29 Jul 2015 01:05:25 +0200 Subject: [PATCH] Consistent lookup of parameter-level JsonView annotation Issue: SPR-13265 --- .../MappingJackson2MessageConverter.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java index 94749cd694..f6c8ca2e1f 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java @@ -262,18 +262,16 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { * @param conversionHint the conversion hint Object as passed into the * converter for the current conversion attempt * @return the serialization view class, or {@code null} if none + * @since 4.2 */ protected Class getSerializationView(Object conversionHint) { if (conversionHint instanceof MethodParameter) { - MethodParameter methodParam = (MethodParameter) conversionHint; - JsonView annotation = methodParam.getParameterAnnotation(JsonView.class); - if (annotation == null) { - annotation = methodParam.getMethodAnnotation(JsonView.class); - if (annotation == null) { - return null; - } + MethodParameter param = (MethodParameter) conversionHint; + JsonView annotation = (param.getParameterIndex() >= 0 ? + param.getParameterAnnotation(JsonView.class) : param.getMethodAnnotation(JsonView.class)); + if (annotation != null) { + return extractViewClass(annotation, conversionHint); } - return extractViewClass(annotation, conversionHint); } else if (conversionHint instanceof JsonView) { return extractViewClass((JsonView) conversionHint, conversionHint); @@ -281,9 +279,9 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { else if (conversionHint instanceof Class) { return (Class) conversionHint; } - else { - return null; - } + + // No JSON view specified... + return null; } private Class extractViewClass(JsonView annotation, Object conversionHint) {