From 305e4535d8b30aa53f68560dd454d70b618645bd Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 27 Apr 2018 18:24:59 +0200 Subject: [PATCH] Null-safe handling of response type in AcceptHeaderRequestCallback Issue: SPR-16690 See gh-22401 --- .../springframework/web/client/RestTemplate.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java b/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java index 84087a80c2..9f474ba620 100644 --- a/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java +++ b/spring-web/src/main/java/org/springframework/web/client/RestTemplate.java @@ -797,10 +797,8 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat @Override public void doWithRequest(ClientHttpRequest request) throws IOException { if (this.responseType != null) { - final Class responseClass = (this.responseType instanceof Class) ? - (Class) this.responseType : null; - final List allSupportedMediaTypes = getMessageConverters().stream() - .filter(converter -> canReadResponse(responseClass, converter)) + List allSupportedMediaTypes = getMessageConverters().stream() + .filter(converter -> canReadResponse(this.responseType, converter)) .flatMap(this::getSupportedMediaTypes) .distinct() .sorted(MediaType.SPECIFICITY_COMPARATOR) @@ -812,15 +810,14 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } } - private boolean canReadResponse(@Nullable Class responseClass, HttpMessageConverter converter) { + private boolean canReadResponse(Type responseType, HttpMessageConverter converter) { + Class responseClass = (responseType instanceof Class ? (Class) responseType : null); if (responseClass != null) { return converter.canRead(responseClass, null); } else if (converter instanceof GenericHttpMessageConverter) { - GenericHttpMessageConverter genericConverter = - (GenericHttpMessageConverter) converter; - return genericConverter - .canRead(this.responseType, null, null); + GenericHttpMessageConverter genericConverter = (GenericHttpMessageConverter) converter; + return genericConverter.canRead(responseType, null, null); } return false; }