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 18b41589a6..8f6e87efe1 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 @@ -653,23 +653,19 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat public ResponseEntity exchange(RequestEntity requestEntity, Class responseType) throws RestClientException { - Assert.notNull(requestEntity, "RequestEntity must not be null"); - RequestCallback requestCallback = httpEntityCallback(requestEntity, responseType); ResponseExtractor> responseExtractor = responseEntityExtractor(responseType); - return nonNull(execute(requestEntity.getUrl(), requestEntity.getMethod(), requestCallback, responseExtractor)); + return nonNull(doExecute(requestEntity.getUrl(), requestEntity.getMethod(), requestCallback, responseExtractor)); } @Override public ResponseEntity exchange(RequestEntity requestEntity, ParameterizedTypeReference responseType) throws RestClientException { - Assert.notNull(requestEntity, "RequestEntity must not be null"); - Type type = responseType.getType(); RequestCallback requestCallback = httpEntityCallback(requestEntity, type); ResponseExtractor> responseExtractor = responseEntityExtractor(type); - return nonNull(execute(requestEntity.getUrl(), requestEntity.getMethod(), requestCallback, responseExtractor)); + return nonNull(doExecute(requestEntity.getUrl(), requestEntity.getMethod(), requestCallback, responseExtractor)); } @@ -696,7 +692,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat @Override @Nullable - public T execute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, + public T execute(URI url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor responseExtractor) throws RestClientException { return doExecute(url, method, requestCallback, responseExtractor); @@ -716,8 +712,8 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat protected T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor responseExtractor) throws RestClientException { - Assert.notNull(url, "'url' must not be null"); - Assert.notNull(method, "'method' must not be null"); + Assert.notNull(url, "URI is required"); + Assert.notNull(method, "HttpMethod is required"); ClientHttpResponse response = null; try { ClientHttpRequest request = createRequest(url, method); @@ -726,12 +722,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat } response = request.execute(); handleResponse(url, method, response); - if (responseExtractor != null) { - return responseExtractor.extractData(response); - } - else { - return null; - } + return (responseExtractor != null ? responseExtractor.extractData(response) : null); } catch (IOException ex) { String resource = url.toString(); @@ -829,7 +820,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat @Nullable private final Type responseType; - private AcceptHeaderRequestCallback(@Nullable Type responseType) { + public AcceptHeaderRequestCallback(@Nullable Type responseType) { this.responseType = responseType; } @@ -886,11 +877,11 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat private final HttpEntity requestEntity; - private HttpEntityRequestCallback(@Nullable Object requestBody) { + public HttpEntityRequestCallback(@Nullable Object requestBody) { this(requestBody, null); } - private HttpEntityRequestCallback(@Nullable Object requestBody, @Nullable Type responseType) { + public HttpEntityRequestCallback(@Nullable Object requestBody, @Nullable Type responseType) { super(responseType); if (requestBody instanceof HttpEntity) { this.requestEntity = (HttpEntity) requestBody; @@ -1013,7 +1004,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat private static class HeadersExtractor implements ResponseExtractor { @Override - public HttpHeaders extractData(ClientHttpResponse response) throws IOException { + public HttpHeaders extractData(ClientHttpResponse response) { return response.getHeaders(); } }