ResolvableType-based matching respects generic factory method return type

Includes consistent use of ResolvableType.resolve() wherever applicable.

Issue: SPR-15011
This commit is contained in:
Juergen Hoeller
2016-12-17 23:10:48 +01:00
parent e9b4cac47f
commit 4c005e6336
14 changed files with 107 additions and 53 deletions

View File

@@ -283,7 +283,7 @@ public class InvocableHandlerMethod extends HandlerMethod {
return this.returnValue.getClass();
}
if (!ResolvableType.NONE.equals(this.returnType)) {
return this.returnType.getRawClass();
return this.returnType.resolve();
}
return super.getParameterType();
}

View File

@@ -436,7 +436,7 @@ public class DefaultStompSession implements ConnectionHandlingStompSession {
return;
}
Type type = handler.getPayloadType(stompHeaders);
Class<?> payloadType = ResolvableType.forType(type).getRawClass();
Class<?> payloadType = ResolvableType.forType(type).resolve();
Object object = getMessageConverter().fromMessage(message, payloadType);
if (object == null) {
throw new MessageConversionException("No suitable converter, payloadType=" + payloadType +