DefaultResponseErrorHandler updates
Deprecate handleError(response), and ensure it continues to be invoked if overridden. See gh-34231
This commit is contained in:
committed by
Brian Clozel
parent
cdddf09c20
commit
a72855b2b3
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.web.client;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
@@ -24,6 +25,7 @@ import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
@@ -80,7 +82,8 @@ class DefaultResponseErrorHandlerHttpStatusTests {
|
||||
given(this.response.getStatusCode()).willReturn(httpStatus);
|
||||
given(this.response.getHeaders()).willReturn(headers);
|
||||
|
||||
assertThatExceptionOfType(expectedExceptionClass).isThrownBy(() -> this.handler.handleError(this.response));
|
||||
assertThatExceptionOfType(expectedExceptionClass)
|
||||
.isThrownBy(() -> this.handler.handleError(URI.create("/"), HttpMethod.GET, this.response));
|
||||
}
|
||||
|
||||
static Stream<Arguments> errorCodes() {
|
||||
|
||||
@@ -75,8 +75,8 @@ class DefaultResponseErrorHandlerTests {
|
||||
given(response.getBody()).willReturn(new ByteArrayInputStream("Hello World".getBytes(UTF_8)));
|
||||
|
||||
assertThatExceptionOfType(HttpClientErrorException.class)
|
||||
.isThrownBy(() -> handler.handleError(response))
|
||||
.withMessage("404 Not Found: \"Hello World\"")
|
||||
.isThrownBy(() -> handler.handleError(URI.create("/"), HttpMethod.GET, response))
|
||||
.withMessage("404 Not Found on GET request for \"/\": \"Hello World\"")
|
||||
.satisfies(ex -> assertThat(ex.getResponseHeaders()).isEqualTo(headers));
|
||||
}
|
||||
|
||||
@@ -127,7 +127,8 @@ class DefaultResponseErrorHandlerTests {
|
||||
given(response.getHeaders()).willReturn(headers);
|
||||
given(response.getBody()).willThrow(new IOException());
|
||||
|
||||
assertThatExceptionOfType(HttpClientErrorException.class).isThrownBy(() -> handler.handleError(response));
|
||||
assertThatExceptionOfType(HttpClientErrorException.class)
|
||||
.isThrownBy(() -> handler.handleError(URI.create("/"), HttpMethod.GET, response));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -140,7 +141,7 @@ class DefaultResponseErrorHandlerTests {
|
||||
given(response.getHeaders()).willReturn(headers);
|
||||
|
||||
assertThatExceptionOfType(HttpClientErrorException.class).isThrownBy(() ->
|
||||
handler.handleError(response));
|
||||
handler.handleError(URI.create("/"), HttpMethod.GET, response));
|
||||
}
|
||||
|
||||
@Test // SPR-16108
|
||||
@@ -165,7 +166,7 @@ class DefaultResponseErrorHandlerTests {
|
||||
given(response.getHeaders()).willReturn(headers);
|
||||
|
||||
assertThatExceptionOfType(UnknownHttpStatusCodeException.class).isThrownBy(() ->
|
||||
handler.handleError(response));
|
||||
handler.handleError(URI.create("/"), HttpMethod.GET, response));
|
||||
}
|
||||
|
||||
@Test // SPR-17461
|
||||
@@ -196,7 +197,7 @@ class DefaultResponseErrorHandlerTests {
|
||||
given(response.getHeaders()).willReturn(headers);
|
||||
given(response.getBody()).willReturn(body);
|
||||
|
||||
Throwable throwable = catchThrowable(() -> handler.handleError(response));
|
||||
Throwable throwable = catchThrowable(() -> handler.handleError(URI.create("/"), HttpMethod.GET, response));
|
||||
|
||||
// validate exception
|
||||
assertThat(throwable).isInstanceOf(HttpClientErrorException.class);
|
||||
@@ -236,7 +237,7 @@ class DefaultResponseErrorHandlerTests {
|
||||
given(response.getHeaders()).willReturn(headers);
|
||||
given(response.getBody()).willReturn(body);
|
||||
|
||||
Throwable throwable = catchThrowable(() -> handler.handleError(response));
|
||||
Throwable throwable = catchThrowable(() -> handler.handleError(URI.create("/"), HttpMethod.GET, response));
|
||||
|
||||
// validate exception
|
||||
assertThat(throwable).isInstanceOf(HttpServerErrorException.class);
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package org.springframework.web.client;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -26,6 +27,7 @@ import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
@@ -98,7 +100,7 @@ class ExtractingResponseErrorHandlerTests {
|
||||
given(this.response.getBody()).willReturn(new ByteArrayInputStream(body));
|
||||
|
||||
assertThatExceptionOfType(MyRestClientException.class)
|
||||
.isThrownBy(() -> this.errorHandler.handleError(this.response))
|
||||
.isThrownBy(() -> this.errorHandler.handleError(URI.create("/"), HttpMethod.GET, this.response))
|
||||
.satisfies(ex -> assertThat(ex.getFoo()).isEqualTo("bar"));
|
||||
}
|
||||
|
||||
@@ -114,7 +116,7 @@ class ExtractingResponseErrorHandlerTests {
|
||||
given(this.response.getBody()).willReturn(new ByteArrayInputStream(body));
|
||||
|
||||
assertThatExceptionOfType(MyRestClientException.class)
|
||||
.isThrownBy(() -> this.errorHandler.handleError(this.response))
|
||||
.isThrownBy(() -> this.errorHandler.handleError(URI.create("/"), HttpMethod.GET, this.response))
|
||||
.satisfies(ex -> assertThat(ex.getFoo()).isEqualTo("bar"));
|
||||
}
|
||||
|
||||
@@ -130,7 +132,7 @@ class ExtractingResponseErrorHandlerTests {
|
||||
given(this.response.getBody()).willReturn(new ByteArrayInputStream(body));
|
||||
|
||||
assertThatExceptionOfType(HttpClientErrorException.class)
|
||||
.isThrownBy(() -> this.errorHandler.handleError(this.response))
|
||||
.isThrownBy(() -> this.errorHandler.handleError(URI.create("/"), HttpMethod.GET, this.response))
|
||||
.satisfies(ex -> {
|
||||
assertThat(ex.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
|
||||
assertThat(ex.getResponseBodyAsByteArray()).isEqualTo(body);
|
||||
@@ -150,7 +152,7 @@ class ExtractingResponseErrorHandlerTests {
|
||||
responseHeaders.setContentLength(body.length);
|
||||
given(this.response.getBody()).willReturn(new ByteArrayInputStream(body));
|
||||
|
||||
this.errorHandler.handleError(this.response);
|
||||
this.errorHandler.handleError(URI.create("/"), HttpMethod.GET, this.response);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -345,12 +345,12 @@ class RestClientObservationTests {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasError(ClientHttpResponse response) throws IOException {
|
||||
public boolean hasError(ClientHttpResponse response) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleError(ClientHttpResponse response) throws IOException {
|
||||
public void handleError(URI uri, HttpMethod httpMethod, ClientHttpResponse response) {
|
||||
assertThat(this.observationRegistry.getCurrentObservationScope()).isNotNull();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,12 +242,12 @@ class RestTemplateObservationTests {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasError(ClientHttpResponse response) throws IOException {
|
||||
public boolean hasError(ClientHttpResponse response) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleError(ClientHttpResponse response) throws IOException {
|
||||
public void handleError(URI uri, HttpMethod httpMethod, ClientHttpResponse response) {
|
||||
currentObservation = this.observationRegistry.getCurrentObservation();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user