diff --git a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc index 6277ce8d65..642773ffaa 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/asciidoc/spring-boot-features.adoc @@ -7606,7 +7606,9 @@ include::{test-examples}/test/system/OutputCaptureTests.java[tag=test] ==== TestRestTemplate `TestRestTemplate` is a convenience alternative to Spring's `RestTemplate` that is useful in integration tests. You can get a vanilla template or one that sends Basic HTTP authentication (with a username and password). -In either case, the template behaves in a test-friendly way by not throwing exceptions on server-side errors. +In either case, the template is fault tolerant. +This means that it behaves in a test-friendly way by not throwing exceptions on 4xx and 5xx errors. +Instead, such errors can be detected via the returned `ResponseEntity` and its status code. TIP: Spring Framework 5.0 provides a new `WebTestClient` that works for <> and both <>. It provides a fluent API for assertions, unlike `TestRestTemplate`. diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java index 435e22a46a..56dcf3a96f 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java +++ b/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/TestRestTemplate.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2020 the original author or authors. + * Copyright 2012-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,16 +49,19 @@ import org.springframework.util.Assert; import org.springframework.web.client.DefaultResponseErrorHandler; import org.springframework.web.client.RequestCallback; import org.springframework.web.client.ResponseExtractor; -import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import org.springframework.web.util.DefaultUriBuilderFactory; import org.springframework.web.util.UriTemplateHandler; /** * Convenient alternative of {@link RestTemplate} that is suitable for integration tests. - * They are fault tolerant, and optionally can carry Basic authentication headers. If - * Apache Http Client 4.3.2 or better is available (recommended) it will be used as the - * client, and by default configured to ignore cookies and redirects. + * {@code TestRestTemplate} is fault tolerant. This means that 4xx and 5xx do not result + * in an exception being thrown and can instead be detected via the {@link ResponseEntity + * response entity} and its {@link ResponseEntity#getStatusCode() status code}. + *

+ * A {@code TestRestTemplate} can optionally carry Basic authentication headers. If Apache + * Http Client 4.3.2 or better is available (recommended) it will be used as the client, + * and by default configured to ignore cookies and redirects. *

* Note: To prevent injection problems this class intentionally does not extend * {@link RestTemplate}. If you need access to the underlying {@link RestTemplate} use @@ -175,10 +178,9 @@ public class TestRestTemplate { * @param urlVariables the variables to expand the template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error on client-side HTTP error * @see RestTemplate#getForObject(String, Class, Object...) */ - public T getForObject(String url, Class responseType, Object... urlVariables) throws RestClientException { + public T getForObject(String url, Class responseType, Object... urlVariables) { return this.restTemplate.getForObject(url, responseType, urlVariables); } @@ -192,11 +194,9 @@ public class TestRestTemplate { * @param urlVariables the map containing variables for the URI template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see RestTemplate#getForObject(String, Class, Object...) */ - public T getForObject(String url, Class responseType, Map urlVariables) - throws RestClientException { + public T getForObject(String url, Class responseType, Map urlVariables) { return this.restTemplate.getForObject(url, responseType, urlVariables); } @@ -207,10 +207,9 @@ public class TestRestTemplate { * @param responseType the type of the return value * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see RestTemplate#getForObject(java.net.URI, java.lang.Class) */ - public T getForObject(URI url, Class responseType) throws RestClientException { + public T getForObject(URI url, Class responseType) { return this.restTemplate.getForObject(applyRootUriIfNecessary(url), responseType); } @@ -224,12 +223,10 @@ public class TestRestTemplate { * @param urlVariables the variables to expand the template * @param the type of the return value * @return the entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#getForEntity(java.lang.String, java.lang.Class, * java.lang.Object[]) */ - public ResponseEntity getForEntity(String url, Class responseType, Object... urlVariables) - throws RestClientException { + public ResponseEntity getForEntity(String url, Class responseType, Object... urlVariables) { return this.restTemplate.getForEntity(url, responseType, urlVariables); } @@ -243,11 +240,9 @@ public class TestRestTemplate { * @param urlVariables the map containing variables for the URI template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see RestTemplate#getForEntity(java.lang.String, java.lang.Class, java.util.Map) */ - public ResponseEntity getForEntity(String url, Class responseType, Map urlVariables) - throws RestClientException { + public ResponseEntity getForEntity(String url, Class responseType, Map urlVariables) { return this.restTemplate.getForEntity(url, responseType, urlVariables); } @@ -258,10 +253,9 @@ public class TestRestTemplate { * @param responseType the type of the return value * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see RestTemplate#getForEntity(java.net.URI, java.lang.Class) */ - public ResponseEntity getForEntity(URI url, Class responseType) throws RestClientException { + public ResponseEntity getForEntity(URI url, Class responseType) { return this.restTemplate.getForEntity(applyRootUriIfNecessary(url), responseType); } @@ -272,10 +266,9 @@ public class TestRestTemplate { * @param url the URL * @param urlVariables the variables to expand the template * @return all HTTP headers of that resource - * @throws RestClientException on client-side HTTP error * @see RestTemplate#headForHeaders(java.lang.String, java.lang.Object[]) */ - public HttpHeaders headForHeaders(String url, Object... urlVariables) throws RestClientException { + public HttpHeaders headForHeaders(String url, Object... urlVariables) { return this.restTemplate.headForHeaders(url, urlVariables); } @@ -286,10 +279,9 @@ public class TestRestTemplate { * @param url the URL * @param urlVariables the map containing variables for the URI template * @return all HTTP headers of that resource - * @throws RestClientException on client-side HTTP error * @see RestTemplate#headForHeaders(java.lang.String, java.util.Map) */ - public HttpHeaders headForHeaders(String url, Map urlVariables) throws RestClientException { + public HttpHeaders headForHeaders(String url, Map urlVariables) { return this.restTemplate.headForHeaders(url, urlVariables); } @@ -297,10 +289,9 @@ public class TestRestTemplate { * Retrieve all headers of the resource specified by the URL. * @param url the URL * @return all HTTP headers of that resource - * @throws RestClientException on client-side HTTP error * @see RestTemplate#headForHeaders(java.net.URI) */ - public HttpHeaders headForHeaders(URI url) throws RestClientException { + public HttpHeaders headForHeaders(URI url) { return this.restTemplate.headForHeaders(applyRootUriIfNecessary(url)); } @@ -317,12 +308,11 @@ public class TestRestTemplate { * @param request the Object to be POSTed, may be {@code null} * @param urlVariables the variables to expand the template * @return the value for the {@code Location} header - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForLocation(java.lang.String, java.lang.Object, * java.lang.Object[]) */ - public URI postForLocation(String url, Object request, Object... urlVariables) throws RestClientException { + public URI postForLocation(String url, Object request, Object... urlVariables) { return this.restTemplate.postForLocation(url, request, urlVariables); } @@ -339,12 +329,11 @@ public class TestRestTemplate { * @param request the Object to be POSTed, may be {@code null} * @param urlVariables the variables to expand the template * @return the value for the {@code Location} header - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForLocation(java.lang.String, java.lang.Object, * java.util.Map) */ - public URI postForLocation(String url, Object request, Map urlVariables) throws RestClientException { + public URI postForLocation(String url, Object request, Map urlVariables) { return this.restTemplate.postForLocation(url, request, urlVariables); } @@ -358,11 +347,10 @@ public class TestRestTemplate { * @param url the URL * @param request the Object to be POSTed, may be {@code null} * @return the value for the {@code Location} header - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForLocation(java.net.URI, java.lang.Object) */ - public URI postForLocation(URI url, Object request) throws RestClientException { + public URI postForLocation(URI url, Object request) { return this.restTemplate.postForLocation(applyRootUriIfNecessary(url), request); } @@ -380,13 +368,11 @@ public class TestRestTemplate { * @param urlVariables the variables to expand the template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForObject(java.lang.String, java.lang.Object, * java.lang.Class, java.lang.Object[]) */ - public T postForObject(String url, Object request, Class responseType, Object... urlVariables) - throws RestClientException { + public T postForObject(String url, Object request, Class responseType, Object... urlVariables) { return this.restTemplate.postForObject(url, request, responseType, urlVariables); } @@ -404,13 +390,11 @@ public class TestRestTemplate { * @param urlVariables the variables to expand the template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForObject(java.lang.String, java.lang.Object, * java.lang.Class, java.util.Map) */ - public T postForObject(String url, Object request, Class responseType, Map urlVariables) - throws RestClientException { + public T postForObject(String url, Object request, Class responseType, Map urlVariables) { return this.restTemplate.postForObject(url, request, responseType, urlVariables); } @@ -425,11 +409,10 @@ public class TestRestTemplate { * @param responseType the type of the return value * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForObject(java.net.URI, java.lang.Object, java.lang.Class) */ - public T postForObject(URI url, Object request, Class responseType) throws RestClientException { + public T postForObject(URI url, Object request, Class responseType) { return this.restTemplate.postForObject(applyRootUriIfNecessary(url), request, responseType); } @@ -447,13 +430,12 @@ public class TestRestTemplate { * @param urlVariables the variables to expand the template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForEntity(java.lang.String, java.lang.Object, * java.lang.Class, java.lang.Object[]) */ public ResponseEntity postForEntity(String url, Object request, Class responseType, - Object... urlVariables) throws RestClientException { + Object... urlVariables) { return this.restTemplate.postForEntity(url, request, responseType, urlVariables); } @@ -471,13 +453,12 @@ public class TestRestTemplate { * @param urlVariables the variables to expand the template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForEntity(java.lang.String, java.lang.Object, * java.lang.Class, java.util.Map) */ public ResponseEntity postForEntity(String url, Object request, Class responseType, - Map urlVariables) throws RestClientException { + Map urlVariables) { return this.restTemplate.postForEntity(url, request, responseType, urlVariables); } @@ -492,12 +473,10 @@ public class TestRestTemplate { * @param responseType the response type to return * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#postForEntity(java.net.URI, java.lang.Object, java.lang.Class) */ - public ResponseEntity postForEntity(URI url, Object request, Class responseType) - throws RestClientException { + public ResponseEntity postForEntity(URI url, Object request, Class responseType) { return this.restTemplate.postForEntity(applyRootUriIfNecessary(url), request, responseType); } @@ -508,14 +487,16 @@ public class TestRestTemplate { *

* The {@code request} parameter can be a {@link HttpEntity} in order to add * additional HTTP headers to the request. + *

+ * If you need to assert the request result consider using the + * {@link TestRestTemplate#exchange exchange} method. * @param url the URL * @param request the Object to be PUT, may be {@code null} * @param urlVariables the variables to expand the template - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#put(java.lang.String, java.lang.Object, java.lang.Object[]) */ - public void put(String url, Object request, Object... urlVariables) throws RestClientException { + public void put(String url, Object request, Object... urlVariables) { this.restTemplate.put(url, request, urlVariables); } @@ -526,14 +507,16 @@ public class TestRestTemplate { *

* The {@code request} parameter can be a {@link HttpEntity} in order to add * additional HTTP headers to the request. + *

+ * If you need to assert the request result consider using the + * {@link TestRestTemplate#exchange exchange} method. * @param url the URL * @param request the Object to be PUT, may be {@code null} * @param urlVariables the variables to expand the template - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#put(java.lang.String, java.lang.Object, java.util.Map) */ - public void put(String url, Object request, Map urlVariables) throws RestClientException { + public void put(String url, Object request, Map urlVariables) { this.restTemplate.put(url, request, urlVariables); } @@ -542,13 +525,15 @@ public class TestRestTemplate { *

* The {@code request} parameter can be a {@link HttpEntity} in order to add * additional HTTP headers to the request. + *

+ * If you need to assert the request result consider using the + * {@link TestRestTemplate#exchange exchange} method. * @param url the URL * @param request the Object to be PUT, may be {@code null} - * @throws RestClientException on client-side HTTP error * @see HttpEntity * @see RestTemplate#put(java.net.URI, java.lang.Object) */ - public void put(URI url, Object request) throws RestClientException { + public void put(URI url, Object request) { this.restTemplate.put(applyRootUriIfNecessary(url), request); } @@ -566,12 +551,10 @@ public class TestRestTemplate { * @param uriVariables the variables to expand the template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @since 1.4.4 * @see HttpEntity */ - public T patchForObject(String url, Object request, Class responseType, Object... uriVariables) - throws RestClientException { + public T patchForObject(String url, Object request, Class responseType, Object... uriVariables) { return this.restTemplate.patchForObject(url, request, responseType, uriVariables); } @@ -589,12 +572,10 @@ public class TestRestTemplate { * @param uriVariables the variables to expand the template * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @since 1.4.4 * @see HttpEntity */ - public T patchForObject(String url, Object request, Class responseType, Map uriVariables) - throws RestClientException { + public T patchForObject(String url, Object request, Class responseType, Map uriVariables) { return this.restTemplate.patchForObject(url, request, responseType, uriVariables); } @@ -609,11 +590,10 @@ public class TestRestTemplate { * @param responseType the type of the return value * @param the type of the return value * @return the converted object - * @throws RestClientException on client-side HTTP error * @since 1.4.4 * @see HttpEntity */ - public T patchForObject(URI url, Object request, Class responseType) throws RestClientException { + public T patchForObject(URI url, Object request, Class responseType) { return this.restTemplate.patchForObject(applyRootUriIfNecessary(url), request, responseType); } @@ -621,12 +601,14 @@ public class TestRestTemplate { * Delete the resources at the specified URI. *

* URI Template variables are expanded using the given URI variables, if any. + *

+ * If you need to assert the request result consider using the + * {@link TestRestTemplate#exchange exchange} method. * @param url the URL * @param urlVariables the variables to expand in the template - * @throws RestClientException on client-side HTTP error * @see RestTemplate#delete(java.lang.String, java.lang.Object[]) */ - public void delete(String url, Object... urlVariables) throws RestClientException { + public void delete(String url, Object... urlVariables) { this.restTemplate.delete(url, urlVariables); } @@ -634,22 +616,26 @@ public class TestRestTemplate { * Delete the resources at the specified URI. *

* URI Template variables are expanded using the given map. + *

+ * If you need to assert the request result consider using the + * {@link TestRestTemplate#exchange exchange} method. * @param url the URL * @param urlVariables the variables to expand the template - * @throws RestClientException on client-side HTTP error * @see RestTemplate#delete(java.lang.String, java.util.Map) */ - public void delete(String url, Map urlVariables) throws RestClientException { + public void delete(String url, Map urlVariables) { this.restTemplate.delete(url, urlVariables); } /** * Delete the resources at the specified URL. + *

+ * If you need to assert the request result consider using the + * {@link TestRestTemplate#exchange exchange} method. * @param url the URL - * @throws RestClientException on client-side HTTP error * @see RestTemplate#delete(java.net.URI) */ - public void delete(URI url) throws RestClientException { + public void delete(URI url) { this.restTemplate.delete(applyRootUriIfNecessary(url)); } @@ -660,10 +646,9 @@ public class TestRestTemplate { * @param url the URL * @param urlVariables the variables to expand in the template * @return the value of the allow header - * @throws RestClientException on client-side HTTP error * @see RestTemplate#optionsForAllow(java.lang.String, java.lang.Object[]) */ - public Set optionsForAllow(String url, Object... urlVariables) throws RestClientException { + public Set optionsForAllow(String url, Object... urlVariables) { return this.restTemplate.optionsForAllow(url, urlVariables); } @@ -674,10 +659,9 @@ public class TestRestTemplate { * @param url the URL * @param urlVariables the variables to expand in the template * @return the value of the allow header - * @throws RestClientException on client-side HTTP error * @see RestTemplate#optionsForAllow(java.lang.String, java.util.Map) */ - public Set optionsForAllow(String url, Map urlVariables) throws RestClientException { + public Set optionsForAllow(String url, Map urlVariables) { return this.restTemplate.optionsForAllow(url, urlVariables); } @@ -685,10 +669,9 @@ public class TestRestTemplate { * Return the value of the Allow header for the given URL. * @param url the URL * @return the value of the allow header - * @throws RestClientException on client-side HTTP error * @see RestTemplate#optionsForAllow(java.net.URI) */ - public Set optionsForAllow(URI url) throws RestClientException { + public Set optionsForAllow(URI url) { return this.restTemplate.optionsForAllow(applyRootUriIfNecessary(url)); } @@ -705,12 +688,11 @@ public class TestRestTemplate { * @param urlVariables the variables to expand in the template * @param the type of the return value * @return the response as entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#exchange(java.lang.String, org.springframework.http.HttpMethod, * org.springframework.http.HttpEntity, java.lang.Class, java.lang.Object[]) */ public ResponseEntity exchange(String url, HttpMethod method, HttpEntity requestEntity, - Class responseType, Object... urlVariables) throws RestClientException { + Class responseType, Object... urlVariables) { return this.restTemplate.exchange(url, method, requestEntity, responseType, urlVariables); } @@ -727,12 +709,11 @@ public class TestRestTemplate { * @param urlVariables the variables to expand in the template * @param the type of the return value * @return the response as entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#exchange(java.lang.String, org.springframework.http.HttpMethod, * org.springframework.http.HttpEntity, java.lang.Class, java.util.Map) */ public ResponseEntity exchange(String url, HttpMethod method, HttpEntity requestEntity, - Class responseType, Map urlVariables) throws RestClientException { + Class responseType, Map urlVariables) { return this.restTemplate.exchange(url, method, requestEntity, responseType, urlVariables); } @@ -746,12 +727,11 @@ public class TestRestTemplate { * @param responseType the type of the return value * @param the type of the return value * @return the response as entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#exchange(java.net.URI, org.springframework.http.HttpMethod, * org.springframework.http.HttpEntity, java.lang.Class) */ public ResponseEntity exchange(URI url, HttpMethod method, HttpEntity requestEntity, - Class responseType) throws RestClientException { + Class responseType) { return this.restTemplate.exchange(applyRootUriIfNecessary(url), method, requestEntity, responseType); } @@ -771,13 +751,12 @@ public class TestRestTemplate { * @param urlVariables the variables to expand in the template * @param the type of the return value * @return the response as entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#exchange(java.lang.String, org.springframework.http.HttpMethod, * org.springframework.http.HttpEntity, * org.springframework.core.ParameterizedTypeReference, java.lang.Object[]) */ public ResponseEntity exchange(String url, HttpMethod method, HttpEntity requestEntity, - ParameterizedTypeReference responseType, Object... urlVariables) throws RestClientException { + ParameterizedTypeReference responseType, Object... urlVariables) { return this.restTemplate.exchange(url, method, requestEntity, responseType, urlVariables); } @@ -797,13 +776,12 @@ public class TestRestTemplate { * @param urlVariables the variables to expand in the template * @param the type of the return value * @return the response as entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#exchange(java.lang.String, org.springframework.http.HttpMethod, * org.springframework.http.HttpEntity, * org.springframework.core.ParameterizedTypeReference, java.util.Map) */ public ResponseEntity exchange(String url, HttpMethod method, HttpEntity requestEntity, - ParameterizedTypeReference responseType, Map urlVariables) throws RestClientException { + ParameterizedTypeReference responseType, Map urlVariables) { return this.restTemplate.exchange(url, method, requestEntity, responseType, urlVariables); } @@ -822,13 +800,12 @@ public class TestRestTemplate { * @param responseType the type of the return value * @param the type of the return value * @return the response as entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#exchange(java.net.URI, org.springframework.http.HttpMethod, * org.springframework.http.HttpEntity, * org.springframework.core.ParameterizedTypeReference) */ public ResponseEntity exchange(URI url, HttpMethod method, HttpEntity requestEntity, - ParameterizedTypeReference responseType) throws RestClientException { + ParameterizedTypeReference responseType) { return this.restTemplate.exchange(applyRootUriIfNecessary(url), method, requestEntity, responseType); } @@ -844,11 +821,9 @@ public class TestRestTemplate { * @param responseType the type of the return value * @param the type of the return value * @return the response as entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#exchange(org.springframework.http.RequestEntity, java.lang.Class) */ - public ResponseEntity exchange(RequestEntity requestEntity, Class responseType) - throws RestClientException { + public ResponseEntity exchange(RequestEntity requestEntity, Class responseType) { return this.restTemplate.exchange(createRequestEntityWithRootAppliedUri(requestEntity), responseType); } @@ -865,12 +840,10 @@ public class TestRestTemplate { * @param responseType the type of the return value * @param the type of the return value * @return the response as entity - * @throws RestClientException on client-side HTTP error * @see RestTemplate#exchange(org.springframework.http.RequestEntity, * org.springframework.core.ParameterizedTypeReference) */ - public ResponseEntity exchange(RequestEntity requestEntity, ParameterizedTypeReference responseType) - throws RestClientException { + public ResponseEntity exchange(RequestEntity requestEntity, ParameterizedTypeReference responseType) { return this.restTemplate.exchange(createRequestEntityWithRootAppliedUri(requestEntity), responseType); } @@ -886,13 +859,12 @@ public class TestRestTemplate { * @param urlVariables the variables to expand in the template * @param the type of the return value * @return an arbitrary object, as returned by the {@link ResponseExtractor} - * @throws RestClientException on client-side HTTP error * @see RestTemplate#execute(java.lang.String, org.springframework.http.HttpMethod, * org.springframework.web.client.RequestCallback, * org.springframework.web.client.ResponseExtractor, java.lang.Object[]) */ public T execute(String url, HttpMethod method, RequestCallback requestCallback, - ResponseExtractor responseExtractor, Object... urlVariables) throws RestClientException { + ResponseExtractor responseExtractor, Object... urlVariables) { return this.restTemplate.execute(url, method, requestCallback, responseExtractor, urlVariables); } @@ -908,13 +880,12 @@ public class TestRestTemplate { * @param urlVariables the variables to expand in the template * @param the type of the return value * @return an arbitrary object, as returned by the {@link ResponseExtractor} - * @throws RestClientException on client-side HTTP error * @see RestTemplate#execute(java.lang.String, org.springframework.http.HttpMethod, * org.springframework.web.client.RequestCallback, * org.springframework.web.client.ResponseExtractor, java.util.Map) */ public T execute(String url, HttpMethod method, RequestCallback requestCallback, - ResponseExtractor responseExtractor, Map urlVariables) throws RestClientException { + ResponseExtractor responseExtractor, Map urlVariables) { return this.restTemplate.execute(url, method, requestCallback, responseExtractor, urlVariables); } @@ -927,13 +898,12 @@ public class TestRestTemplate { * @param responseExtractor object that extracts the return value from the response * @param the type of the return value * @return an arbitrary object, as returned by the {@link ResponseExtractor} - * @throws RestClientException on client-side HTTP error * @see RestTemplate#execute(java.net.URI, org.springframework.http.HttpMethod, * org.springframework.web.client.RequestCallback, * org.springframework.web.client.ResponseExtractor) */ public T execute(URI url, HttpMethod method, RequestCallback requestCallback, - ResponseExtractor responseExtractor) throws RestClientException { + ResponseExtractor responseExtractor) { return this.restTemplate.execute(applyRootUriIfNecessary(url), method, requestCallback, responseExtractor); }