From ed0e2f4445c1f3e90b8eb522a0a916dcdff00b3f Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 29 Dec 2014 12:55:37 +0100 Subject: [PATCH] PayloadArgumentResolver does not insist on configured Validator anymore Issue: SPR-12567 --- .../DefaultMessageHandlerMethodFactory.java | 16 +--------------- .../support/PayloadArgumentResolver.java | 19 +++++++++++++++++-- .../SimpAnnotationMethodMessageHandler.java | 17 +---------------- 3 files changed, 19 insertions(+), 33 deletions(-) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DefaultMessageHandlerMethodFactory.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DefaultMessageHandlerMethodFactory.java index 4ec50a6263d..a7c2e989c08 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DefaultMessageHandlerMethodFactory.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/DefaultMessageHandlerMethodFactory.java @@ -31,7 +31,6 @@ import org.springframework.messaging.converter.MessageConverter; import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolver; import org.springframework.messaging.handler.invocation.HandlerMethodArgumentResolverComposite; import org.springframework.messaging.handler.invocation.InvocableHandlerMethod; -import org.springframework.validation.Errors; import org.springframework.validation.Validator; /** @@ -62,7 +61,7 @@ public class DefaultMessageHandlerMethodFactory implements MessageHandlerMethodF private MessageConverter messageConverter; - private Validator validator = new NoOpValidator(); + private Validator validator; private List customArgumentResolvers; @@ -169,17 +168,4 @@ public class DefaultMessageHandlerMethodFactory implements MessageHandlerMethodF return resolvers; } - - private static final class NoOpValidator implements Validator { - - @Override - public boolean supports(Class clazz) { - return false; - } - - @Override - public void validate(Object target, Errors errors) { - } - } - } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java index 7a247380682..7b5f17892cc 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java @@ -56,9 +56,24 @@ public class PayloadArgumentResolver implements HandlerMethodArgumentResolver { private final Validator validator; + /** + * Create a new {@code PayloadArgumentResolver} with the given + * {@link MessageConverter}. + * @param messageConverter the MessageConverter to use (required) + * @since 4.0.9 + */ + public PayloadArgumentResolver(MessageConverter messageConverter) { + this(messageConverter, null); + } + + /** + * Create a new {@code PayloadArgumentResolver} with the given + * {@link MessageConverter} and {@link Validator}. + * @param messageConverter the MessageConverter to use (required) + * @param validator the Validator to use (optional) + */ public PayloadArgumentResolver(MessageConverter messageConverter, Validator validator) { - Assert.notNull(messageConverter, "converter must not be null"); - Assert.notNull(validator, "validator must not be null"); + Assert.notNull(messageConverter, "MessageConverter must not be null"); this.converter = messageConverter; this.validator = validator; } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java index b1d6a00d5ec..bfcb51face7 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java @@ -67,7 +67,6 @@ import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.CollectionUtils; import org.springframework.util.PathMatcher; -import org.springframework.validation.Errors; import org.springframework.validation.Validator; /** @@ -309,8 +308,7 @@ public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHan resolvers.add(new MessageMethodArgumentResolver()); resolvers.addAll(getCustomArgumentResolvers()); - resolvers.add(new PayloadArgumentResolver(this.messageConverter, - (this.validator != null ? this.validator : new NoOpValidator()))); + resolvers.add(new PayloadArgumentResolver(this.messageConverter, this.validator)); return resolvers; } @@ -457,17 +455,4 @@ public class SimpAnnotationMethodMessageHandler extends AbstractMethodMessageHan return new AnnotationExceptionHandlerMethodResolver(beanType); } - - private static final class NoOpValidator implements Validator { - - @Override - public boolean supports(Class clazz) { - return false; - } - - @Override - public void validate(Object target, Errors errors) { - } - } - }