From f5282bc1e3ee30c39275eaf58c2bb549143f00ed Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 23 Jun 2016 17:32:30 +0200 Subject: [PATCH] PayloadArgumentResolver's MessageConversionException includes original payload type Issue: SPR-14394 --- .../annotation/support/PayloadArgumentResolver.java | 7 ++++--- .../annotation/support/PayloadArgumentResolverTests.java | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) 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 cb218c34a3..d14a4878e8 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 @@ -106,7 +106,8 @@ public class PayloadArgumentResolver implements HandlerMethodArgumentResolver { } Class targetClass = parameter.getParameterType(); - if (ClassUtils.isAssignable(targetClass, payload.getClass())) { + Class payloadClass = payload.getClass(); + if (ClassUtils.isAssignable(targetClass, payloadClass)) { validate(message, parameter, payload); return payload; } @@ -119,8 +120,8 @@ public class PayloadArgumentResolver implements HandlerMethodArgumentResolver { payload = this.converter.fromMessage(message, targetClass); } if (payload == null) { - throw new MessageConversionException(message, - "No converter found to convert to " + targetClass + ", message=" + message); + throw new MessageConversionException(message, "Cannot convert from [" + + payloadClass.getName() + "] to [" + targetClass.getName() + "] for " + message); } validate(message, parameter, payload); return payload; diff --git a/spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolverTests.java b/spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolverTests.java index ffc0954109..33a098221e 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolverTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolverTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -132,7 +132,7 @@ public class PayloadArgumentResolverTests { Message notEmptyMessage = MessageBuilder.withPayload(123).build(); thrown.expect(MessageConversionException.class); - thrown.expectMessage("No converter found"); + thrown.expectMessage("Cannot convert"); this.resolver.resolveArgument(this.paramAnnotatedRequired, notEmptyMessage); }