|
1 | 1 | /*
|
2 |
| - * Copyright 2002-2015 the original author or authors. |
| 2 | + * Copyright 2002-2016 the original author or authors. |
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
5 | 5 | * you may not use this file except in compliance with the License.
|
@@ -106,17 +106,22 @@ public Object resolveArgument(MethodParameter parameter, Message<?> message) thr
|
106 | 106 | }
|
107 | 107 |
|
108 | 108 | Class<?> targetClass = parameter.getParameterType();
|
109 |
| - if (ClassUtils.isAssignable(targetClass, payload.getClass())) { |
| 109 | + Class<?> payloadClass = payload.getClass(); |
| 110 | + if (ClassUtils.isAssignable(targetClass, payloadClass)) { |
110 | 111 | validate(message, parameter, payload);
|
111 | 112 | return payload;
|
112 | 113 | }
|
113 | 114 | else {
|
114 |
| - payload = (this.converter instanceof SmartMessageConverter ? |
115 |
| - ((SmartMessageConverter) this.converter).fromMessage(message, targetClass, parameter) : |
116 |
| - this.converter.fromMessage(message, targetClass)); |
| 115 | + if (this.converter instanceof SmartMessageConverter) { |
| 116 | + SmartMessageConverter smartConverter = (SmartMessageConverter) this.converter; |
| 117 | + payload = smartConverter.fromMessage(message, targetClass, parameter); |
| 118 | + } |
| 119 | + else { |
| 120 | + payload = this.converter.fromMessage(message, targetClass); |
| 121 | + } |
117 | 122 | if (payload == null) {
|
118 |
| - throw new MessageConversionException(message, |
119 |
| - "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); |
120 | 125 | }
|
121 | 126 | validate(message, parameter, payload);
|
122 | 127 | return payload;
|
|
0 commit comments