Skip to content

Commit f5282bc

Browse files
committed
PayloadArgumentResolver's MessageConversionException includes original payload type
Issue: SPR-14394
1 parent 0345d73 commit f5282bc

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolver.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ public Object resolveArgument(MethodParameter parameter, Message<?> message) thr
106106
}
107107

108108
Class<?> targetClass = parameter.getParameterType();
109-
if (ClassUtils.isAssignable(targetClass, payload.getClass())) {
109+
Class<?> payloadClass = payload.getClass();
110+
if (ClassUtils.isAssignable(targetClass, payloadClass)) {
110111
validate(message, parameter, payload);
111112
return payload;
112113
}
@@ -119,8 +120,8 @@ public Object resolveArgument(MethodParameter parameter, Message<?> message) thr
119120
payload = this.converter.fromMessage(message, targetClass);
120121
}
121122
if (payload == null) {
122-
throw new MessageConversionException(message,
123-
"No converter found to convert to " + targetClass + ", message=" + message);
123+
throw new MessageConversionException(message, "Cannot convert from [" +
124+
payloadClass.getName() + "] to [" + targetClass.getName() + "] for " + message);
124125
}
125126
validate(message, parameter, payload);
126127
return payload;

spring-messaging/src/test/java/org/springframework/messaging/handler/annotation/support/PayloadArgumentResolverTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2015 the original author or authors.
2+
* Copyright 2002-2016 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -132,7 +132,7 @@ public void resolveNonConvertibleParam() throws Exception {
132132
Message<?> notEmptyMessage = MessageBuilder.withPayload(123).build();
133133

134134
thrown.expect(MessageConversionException.class);
135-
thrown.expectMessage("No converter found");
135+
thrown.expectMessage("Cannot convert");
136136
this.resolver.resolveArgument(this.paramAnnotatedRequired, notEmptyMessage);
137137
}
138138

0 commit comments

Comments
 (0)