Browse Source

Polishing and minor refactoring

Closes gh-31202
pull/31542/head
rstoyanchev 1 year ago
parent
commit
f16122d533
  1. 8
      spring-web/src/main/java/org/springframework/http/HttpStatusCode.java
  2. 12
      spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClient.java
  3. 28
      spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java

8
spring-web/src/main/java/org/springframework/http/HttpStatusCode.java

@ -88,14 +88,6 @@ public sealed interface HttpStatusCode extends Serializable permits DefaultHttpS @@ -88,14 +88,6 @@ public sealed interface HttpStatusCode extends Serializable permits DefaultHttpS
return value() == other.value();
}
/**
* Checks whether this status code is a well-known HTTP status code or not
* @return {@code true} if the status code corresponds to a standard HTTP status code, {@code false} otherwise
*/
default boolean isWellKnown() {
return HttpStatus.resolve(this.value()) != null;
}
/**
* Return an {@code HttpStatusCode} object for the given integer value.
* @param code the status code as integer

12
spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClient.java

@ -515,12 +515,9 @@ final class DefaultWebClient implements WebClient { @@ -515,12 +515,9 @@ final class DefaultWebClient implements WebClient {
private static class DefaultResponseSpec implements ResponseSpec {
private static final Predicate<HttpStatusCode> STATUS_CODE_ERROR = HttpStatusCode::isError;
private static final Predicate<HttpStatusCode> STATUS_CODE_UNKNOWN = status -> !status.isWellKnown();
private static final StatusHandler DEFAULT_ERROR_STATUS_HANDLER =
new StatusHandler(STATUS_CODE_ERROR, ClientResponse::createException);
private static final StatusHandler DEFAULT_UNKNOWN_STATUS_HANDLER =
new StatusHandler(STATUS_CODE_UNKNOWN, ClientResponse::createException);
private static final StatusHandler DEFAULT_STATUS_HANDLER =
new StatusHandler(code -> code.value() >= 400, ClientResponse::createException);
private final HttpMethod httpMethod;
@ -539,8 +536,7 @@ final class DefaultWebClient implements WebClient { @@ -539,8 +536,7 @@ final class DefaultWebClient implements WebClient {
this.uri = uri;
this.responseMono = responseMono;
this.statusHandlers.addAll(defaultStatusHandlers);
this.statusHandlers.add(DEFAULT_ERROR_STATUS_HANDLER);
this.statusHandlers.add(DEFAULT_UNKNOWN_STATUS_HANDLER);
this.statusHandlers.add(DEFAULT_STATUS_HANDLER);
this.defaultStatusHandlerCount = this.statusHandlers.size();
}

28
spring-webflux/src/test/java/org/springframework/web/reactive/function/client/WebClientIntegrationTests.java

@ -644,14 +644,14 @@ class WebClientIntegrationTests { @@ -644,14 +644,14 @@ class WebClientIntegrationTests {
int errorStatus = 555;
assertThat(HttpStatus.resolve(errorStatus)).isNull();
String errorMessage = "Something went wrong";
prepareResponse(response -> response.setResponseCode(errorStatus)
.setHeader("Content-Type", "text/plain").setBody(errorMessage));
prepareResponse(response ->
response.setResponseCode(errorStatus)
.setHeader("Content-Type", "text/plain")
.setBody(errorMessage));
Mono<String> result = this.webClient.get()
.uri("/unknownPage")
.retrieve()
.bodyToMono(String.class);
Mono<String> result = this.webClient.get().uri("/unknownPage").retrieve().bodyToMono(String.class);
StepVerifier.create(result)
.expectErrorSatisfies(throwable -> {
@ -672,20 +672,20 @@ class WebClientIntegrationTests { @@ -672,20 +672,20 @@ class WebClientIntegrationTests {
});
}
@ParameterizedWebClientTest
void retrieve929CustomUnknownStatus(ClientHttpConnector connector) {
@ParameterizedWebClientTest // gh-31202
void retrieve929UnknownStatusCode(ClientHttpConnector connector) {
startServer(connector);
int errorStatus = 929;
assertThat(HttpStatus.resolve(errorStatus)).isNull();
String errorMessage = "Something went wrong";
prepareResponse(response -> response.setResponseCode(errorStatus)
.setHeader("Content-Type", "text/plain").setBody(errorMessage));
prepareResponse(response ->
response.setResponseCode(errorStatus)
.setHeader("Content-Type", "text/plain")
.setBody(errorMessage));
Mono<String> result = this.webClient.get()
.uri("/unknownPage")
.retrieve()
.bodyToMono(String.class);
Mono<String> result = this.webClient.get().uri("/unknownPage").retrieve().bodyToMono(String.class);
StepVerifier.create(result)
.expectErrorSatisfies(throwable -> {

Loading…
Cancel
Save