Merge branch '1.5.x'
This commit is contained in:
commit
aa19cad770
|
@ -39,6 +39,7 @@ import org.apache.http.protocol.HttpContext;
|
|||
import org.apache.http.ssl.SSLContextBuilder;
|
||||
|
||||
import org.springframework.boot.web.client.RestTemplateBuilder;
|
||||
import org.springframework.boot.web.client.RootUriTemplateHandler;
|
||||
import org.springframework.core.ParameterizedTypeReference;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
|
@ -217,7 +218,7 @@ public class TestRestTemplate {
|
|||
* @see RestTemplate#getForObject(java.net.URI, java.lang.Class)
|
||||
*/
|
||||
public <T> T getForObject(URI url, Class<T> responseType) throws RestClientException {
|
||||
return this.restTemplate.getForObject(url.toString(), responseType);
|
||||
return this.restTemplate.getForObject(applyRootUriIfNecessary(url), responseType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -269,7 +270,7 @@ public class TestRestTemplate {
|
|||
*/
|
||||
public <T> ResponseEntity<T> getForEntity(URI url, Class<T> responseType)
|
||||
throws RestClientException {
|
||||
return this.restTemplate.getForEntity(url.toString(), responseType);
|
||||
return this.restTemplate.getForEntity(applyRootUriIfNecessary(url), responseType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -310,7 +311,7 @@ public class TestRestTemplate {
|
|||
* @see RestTemplate#headForHeaders(java.net.URI)
|
||||
*/
|
||||
public HttpHeaders headForHeaders(URI url) throws RestClientException {
|
||||
return this.restTemplate.headForHeaders(url.toString());
|
||||
return this.restTemplate.headForHeaders(applyRootUriIfNecessary(url));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -374,7 +375,7 @@ public class TestRestTemplate {
|
|||
* @see RestTemplate#postForLocation(java.net.URI, java.lang.Object)
|
||||
*/
|
||||
public URI postForLocation(URI url, Object request) throws RestClientException {
|
||||
return this.restTemplate.postForLocation(url.toString(), request);
|
||||
return this.restTemplate.postForLocation(applyRootUriIfNecessary(url), request);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -442,7 +443,8 @@ public class TestRestTemplate {
|
|||
*/
|
||||
public <T> T postForObject(URI url, Object request, Class<T> responseType)
|
||||
throws RestClientException {
|
||||
return this.restTemplate.postForObject(url.toString(), request, responseType);
|
||||
return this.restTemplate.postForObject(applyRootUriIfNecessary(url), request,
|
||||
responseType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -511,7 +513,8 @@ public class TestRestTemplate {
|
|||
*/
|
||||
public <T> ResponseEntity<T> postForEntity(URI url, Object request,
|
||||
Class<T> responseType) throws RestClientException {
|
||||
return this.restTemplate.postForEntity(url.toString(), request, responseType);
|
||||
return this.restTemplate.postForEntity(applyRootUriIfNecessary(url), request,
|
||||
responseType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -564,7 +567,7 @@ public class TestRestTemplate {
|
|||
* @see RestTemplate#put(java.net.URI, java.lang.Object)
|
||||
*/
|
||||
public void put(URI url, Object request) throws RestClientException {
|
||||
this.restTemplate.put(url.toString(), request);
|
||||
this.restTemplate.put(applyRootUriIfNecessary(url), request);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -630,7 +633,8 @@ public class TestRestTemplate {
|
|||
*/
|
||||
public <T> T patchForObject(URI url, Object request, Class<T> responseType)
|
||||
throws RestClientException {
|
||||
return this.restTemplate.patchForObject(url.toString(), request, responseType);
|
||||
return this.restTemplate.patchForObject(applyRootUriIfNecessary(url), request,
|
||||
responseType);
|
||||
|
||||
}
|
||||
|
||||
|
@ -668,7 +672,7 @@ public class TestRestTemplate {
|
|||
* @see RestTemplate#delete(java.net.URI)
|
||||
*/
|
||||
public void delete(URI url) throws RestClientException {
|
||||
this.restTemplate.delete(url.toString());
|
||||
this.restTemplate.delete(applyRootUriIfNecessary(url));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -709,7 +713,7 @@ public class TestRestTemplate {
|
|||
* @see RestTemplate#optionsForAllow(java.net.URI)
|
||||
*/
|
||||
public Set<HttpMethod> optionsForAllow(URI url) throws RestClientException {
|
||||
return this.restTemplate.optionsForAllow(url.toString());
|
||||
return this.restTemplate.optionsForAllow(applyRootUriIfNecessary(url));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -777,8 +781,8 @@ public class TestRestTemplate {
|
|||
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method,
|
||||
HttpEntity<?> requestEntity, Class<T> responseType)
|
||||
throws RestClientException {
|
||||
return this.restTemplate.exchange(url.toString(), method, requestEntity,
|
||||
responseType);
|
||||
return this.restTemplate.exchange(applyRootUriIfNecessary(url), method,
|
||||
requestEntity, responseType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -860,8 +864,8 @@ public class TestRestTemplate {
|
|||
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method,
|
||||
HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType)
|
||||
throws RestClientException {
|
||||
return this.restTemplate.exchange(url.toString(), method, requestEntity,
|
||||
responseType);
|
||||
return this.restTemplate.exchange(applyRootUriIfNecessary(url), method,
|
||||
requestEntity, responseType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -882,7 +886,7 @@ public class TestRestTemplate {
|
|||
public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity,
|
||||
Class<T> responseType) throws RestClientException {
|
||||
return this.restTemplate.exchange(
|
||||
createRequestEntityWithExpandedUri(requestEntity), responseType);
|
||||
createRequestEntityWithRootAppliedUri(requestEntity), responseType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -905,7 +909,7 @@ public class TestRestTemplate {
|
|||
public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity,
|
||||
ParameterizedTypeReference<T> responseType) throws RestClientException {
|
||||
return this.restTemplate.exchange(
|
||||
createRequestEntityWithExpandedUri(requestEntity), responseType);
|
||||
createRequestEntityWithRootAppliedUri(requestEntity), responseType);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -972,8 +976,8 @@ public class TestRestTemplate {
|
|||
*/
|
||||
public <T> T execute(URI url, HttpMethod method, RequestCallback requestCallback,
|
||||
ResponseExtractor<T> responseExtractor) throws RestClientException {
|
||||
return this.restTemplate.execute(url.toString(), method, requestCallback,
|
||||
responseExtractor);
|
||||
return this.restTemplate.execute(applyRootUriIfNecessary(url), method,
|
||||
requestCallback, responseExtractor);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1008,12 +1012,21 @@ public class TestRestTemplate {
|
|||
}
|
||||
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
private RequestEntity<?> createRequestEntityWithExpandedUri(
|
||||
private RequestEntity<?> createRequestEntityWithRootAppliedUri(
|
||||
RequestEntity<?> requestEntity) {
|
||||
URI expandedUri = this.restTemplate.getUriTemplateHandler()
|
||||
.expand(requestEntity.getUrl().toString());
|
||||
return new RequestEntity(requestEntity.getBody(), requestEntity.getHeaders(),
|
||||
requestEntity.getMethod(), expandedUri, requestEntity.getType());
|
||||
requestEntity.getMethod(),
|
||||
applyRootUriIfNecessary(requestEntity.getUrl()), requestEntity.getType());
|
||||
}
|
||||
|
||||
private URI applyRootUriIfNecessary(URI uri) {
|
||||
UriTemplateHandler uriTemplateHandler = this.restTemplate.getUriTemplateHandler();
|
||||
if ((uriTemplateHandler instanceof RootUriTemplateHandler)
|
||||
&& uri.toString().startsWith("/")) {
|
||||
return URI.create(((RootUriTemplateHandler) uriTemplateHandler).getRootUri()
|
||||
+ uri.toString());
|
||||
}
|
||||
return uri;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -38,6 +38,7 @@ import org.springframework.http.client.ClientHttpRequestInterceptor;
|
|||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
||||
import org.springframework.http.client.InterceptingClientHttpRequestFactory;
|
||||
import org.springframework.http.client.support.BasicAuthorizationInterceptor;
|
||||
import org.springframework.mock.env.MockEnvironment;
|
||||
import org.springframework.mock.http.client.MockClientHttpRequest;
|
||||
import org.springframework.mock.http.client.MockClientHttpResponse;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
@ -47,7 +48,6 @@ import org.springframework.web.client.ResponseErrorHandler;
|
|||
import org.springframework.web.client.RestOperations;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.util.DefaultUriTemplateHandler;
|
||||
import org.springframework.web.util.UriTemplateHandler;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
|
@ -427,18 +427,18 @@ public class TestRestTemplateTests {
|
|||
ClientHttpRequestFactory requestFactory = mock(ClientHttpRequestFactory.class);
|
||||
MockClientHttpRequest request = new MockClientHttpRequest();
|
||||
request.setResponse(new MockClientHttpResponse(new byte[0], HttpStatus.OK));
|
||||
URI relativeUri = URI.create("a/b/c.txt");
|
||||
URI absoluteUri = URI.create("http://localhost:8080/" + relativeUri.toString());
|
||||
URI absoluteUri = URI
|
||||
.create("http://localhost:8080/a/b/c.txt?param=%7Bsomething%7D");
|
||||
given(requestFactory.createRequest(eq(absoluteUri), (HttpMethod) any()))
|
||||
.willReturn(request);
|
||||
RestTemplate delegate = new RestTemplate();
|
||||
TestRestTemplate template = new TestRestTemplate(delegate);
|
||||
delegate.setRequestFactory(requestFactory);
|
||||
UriTemplateHandler uriTemplateHandler = mock(UriTemplateHandler.class);
|
||||
given(uriTemplateHandler.expand(relativeUri.toString(), new Object[0]))
|
||||
.willReturn(absoluteUri);
|
||||
LocalHostUriTemplateHandler uriTemplateHandler = new LocalHostUriTemplateHandler(
|
||||
new MockEnvironment());
|
||||
template.setUriTemplateHandler(uriTemplateHandler);
|
||||
callback.doWithTestRestTemplate(template, relativeUri);
|
||||
callback.doWithTestRestTemplate(template,
|
||||
URI.create("/a/b/c.txt?param=%7Bsomething%7D"));
|
||||
verify(requestFactory).createRequest(eq(absoluteUri), (HttpMethod) any());
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue