Skip to content

Allow Type reference instead of Class reference in RestTemplate's convenience methods. #35301

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -297,31 +297,31 @@ public void setObservationConvention(ClientRequestObservationConvention observat
// GET

@Override
public <T> @Nullable T getForObject(String url, Class<T> responseType, @Nullable Object... uriVariables) throws RestClientException {
public <T> @Nullable T getForObject(String url, Type responseType, @Nullable Object... uriVariables) throws RestClientException {
RequestCallback requestCallback = acceptHeaderRequestCallback(responseType);
HttpMessageConverterExtractor<T> responseExtractor =
new HttpMessageConverterExtractor<>(responseType, getMessageConverters(), logger);
return execute(url, HttpMethod.GET, requestCallback, responseExtractor, uriVariables);
}

@Override
public <T> @Nullable T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException {
public <T> @Nullable T getForObject(String url, Type responseType, Map<String, ?> uriVariables) throws RestClientException {
RequestCallback requestCallback = acceptHeaderRequestCallback(responseType);
HttpMessageConverterExtractor<T> responseExtractor =
new HttpMessageConverterExtractor<>(responseType, getMessageConverters(), logger);
return execute(url, HttpMethod.GET, requestCallback, responseExtractor, uriVariables);
}

@Override
public <T> @Nullable T getForObject(URI url, Class<T> responseType) throws RestClientException {
public <T> @Nullable T getForObject(URI url, Type responseType) throws RestClientException {
RequestCallback requestCallback = acceptHeaderRequestCallback(responseType);
HttpMessageConverterExtractor<T> responseExtractor =
new HttpMessageConverterExtractor<>(responseType, getMessageConverters(), logger);
return execute(url, HttpMethod.GET, requestCallback, responseExtractor);
}

@Override
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, @Nullable Object... uriVariables)
public <T> ResponseEntity<T> getForEntity(String url, Type responseType, @Nullable Object... uriVariables)
throws RestClientException {

RequestCallback requestCallback = acceptHeaderRequestCallback(responseType);
Expand All @@ -330,7 +330,7 @@ public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, @Nu
}

@Override
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ? extends @Nullable Object> uriVariables)
public <T> ResponseEntity<T> getForEntity(String url, Type responseType, Map<String, ? extends @Nullable Object> uriVariables)
throws RestClientException {

RequestCallback requestCallback = acceptHeaderRequestCallback(responseType);
Expand All @@ -339,7 +339,7 @@ public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map
}

@Override
public <T> ResponseEntity<T> getForEntity(URI url, Class<T> responseType) throws RestClientException {
public <T> ResponseEntity<T> getForEntity(URI url, Type responseType) throws RestClientException {
RequestCallback requestCallback = acceptHeaderRequestCallback(responseType);
ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType);
return nonNull(execute(url, HttpMethod.GET, requestCallback, responseExtractor));
Expand Down Expand Up @@ -392,7 +392,7 @@ public HttpHeaders headForHeaders(URI url) throws RestClientException {
}

@Override
public <T> @Nullable T postForObject(String url, @Nullable Object request, Class<T> responseType,
public <T> @Nullable T postForObject(String url, @Nullable Object request, Type responseType,
@Nullable Object... uriVariables) throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
Expand All @@ -402,7 +402,7 @@ public HttpHeaders headForHeaders(URI url) throws RestClientException {
}

@Override
public <T> @Nullable T postForObject(String url, @Nullable Object request, Class<T> responseType,
public <T> @Nullable T postForObject(String url, @Nullable Object request, Type responseType,
Map<String, ? extends @Nullable Object> uriVariables) throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
Expand All @@ -412,7 +412,7 @@ public HttpHeaders headForHeaders(URI url) throws RestClientException {
}

@Override
public <T> @Nullable T postForObject(URI url, @Nullable Object request, Class<T> responseType)
public <T> @Nullable T postForObject(URI url, @Nullable Object request, Type responseType)
throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
Expand All @@ -423,7 +423,7 @@ public HttpHeaders headForHeaders(URI url) throws RestClientException {

@Override
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request,
Class<T> responseType, @Nullable Object... uriVariables) throws RestClientException {
Type responseType, @Nullable Object... uriVariables) throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType);
Expand All @@ -432,15 +432,15 @@ public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request,

@Override
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request,
Class<T> responseType, Map<String, ? extends @Nullable Object> uriVariables) throws RestClientException {
Type responseType, Map<String, ? extends @Nullable Object> uriVariables) throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
ResponseExtractor<ResponseEntity<T>> responseExtractor = responseEntityExtractor(responseType);
return nonNull(execute(url, HttpMethod.POST, requestCallback, responseExtractor, uriVariables));
}

@Override
public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType)
public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Type responseType)
throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
Expand Down Expand Up @@ -477,7 +477,7 @@ public void put(URI url, @Nullable Object request) throws RestClientException {
// PATCH

@Override
public <T> @Nullable T patchForObject(String url, @Nullable Object request, Class<T> responseType,
public <T> @Nullable T patchForObject(String url, @Nullable Object request, Type responseType,
@Nullable Object... uriVariables) throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
Expand All @@ -487,7 +487,7 @@ public void put(URI url, @Nullable Object request) throws RestClientException {
}

@Override
public <T> @Nullable T patchForObject(String url, @Nullable Object request, Class<T> responseType,
public <T> @Nullable T patchForObject(String url, @Nullable Object request, Type responseType,
Map<String, ? extends @Nullable Object> uriVariables) throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
Expand All @@ -497,7 +497,7 @@ public void put(URI url, @Nullable Object request) throws RestClientException {
}

@Override
public <T> @Nullable T patchForObject(URI url, @Nullable Object request, Class<T> responseType)
public <T> @Nullable T patchForObject(URI url, @Nullable Object request, Type responseType)
throws RestClientException {

RequestCallback requestCallback = httpEntityCallback(request, responseType);
Expand Down Expand Up @@ -813,7 +813,7 @@ protected void handleResponse(URI url, HttpMethod method, ClientHttpResponse res
* header based on the given response type, cross-checked against the
* configured message converters.
*/
public <T> RequestCallback acceptHeaderRequestCallback(Class<T> responseType) {
public <T> RequestCallback acceptHeaderRequestCallback(Type responseType) {
return new AcceptHeaderRequestCallback(responseType);
}

Expand Down