From b7e8a8f0efc56c195f16c555cc5bcaf673c4d76f Mon Sep 17 00:00:00 2001 From: spencergibb Date: Wed, 4 May 2022 14:17:41 -0400 Subject: [PATCH] Updates to use new HttpStatusCode references/methods --- .../filter/factory/RetryGatewayFilterFactory.java | 12 ++++++++---- .../factory/SetStatusGatewayFilterFactory.java | 4 ++-- .../SpringCloudCircuitBreakerFilterFactory.java | 5 +++-- .../tagsprovider/GatewayHttpTagsProvider.java | 10 +++++++--- .../actuate/GatewayControllerEndpointTests.java | 3 ++- .../gateway/cors/SimpleUrlHandlerCorsTests.java | 5 +++-- .../ReactiveLoadBalancerClientFilterTests.java | 2 +- .../HttpStatusInResponseHeadersFilterTests.java | 3 ++- .../cloud/gateway/test/TestUtils.java | 6 +++--- .../cloud/gateway/webflux/ProxyExchange.java | 4 ++-- 10 files changed, 33 insertions(+), 21 deletions(-) diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java index 039430ce..55896fc7 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java @@ -44,6 +44,7 @@ import org.springframework.cloud.gateway.support.TimeoutException; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus.Series; +import org.springframework.http.HttpStatusCode; import org.springframework.util.Assert; import org.springframework.web.server.ServerWebExchange; @@ -84,7 +85,7 @@ public class RetryGatewayFilterFactory extends AbstractGatewayFilterFactory { // check not really needed, since it is guarded in setStatusCode, // but it's a good example - HttpStatus statusCode = exchange.getResponse().getStatusCode(); + HttpStatusCode statusCode = exchange.getResponse().getStatusCode(); boolean isStatusCodeUpdated = setResponseStatus(exchange, statusHolder); if (isStatusCodeUpdated && originalStatusHeaderName != null) { exchange.getResponse().getHeaders().set(originalStatusHeaderName, diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SpringCloudCircuitBreakerFilterFactory.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SpringCloudCircuitBreakerFilterFactory.java index 406223a3..ede25254 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SpringCloudCircuitBreakerFilterFactory.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/factory/SpringCloudCircuitBreakerFilterFactory.java @@ -32,6 +32,7 @@ import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.support.HasRouteId; import org.springframework.cloud.gateway.support.HttpStatusHolder; import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.util.StringUtils; import org.springframework.web.client.HttpStatusCodeException; @@ -97,7 +98,7 @@ public abstract class SpringCloudCircuitBreakerFilterFactory public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { return cb.run(chain.filter(exchange).doOnSuccess(v -> { if (statuses.contains(exchange.getResponse().getStatusCode())) { - HttpStatus status = exchange.getResponse().getStatusCode(); + HttpStatusCode status = exchange.getResponse().getStatusCode(); throw new CircuitBreakerStatusCodeException(status); } }), t -> { @@ -221,7 +222,7 @@ public abstract class SpringCloudCircuitBreakerFilterFactory public class CircuitBreakerStatusCodeException extends HttpStatusCodeException { - public CircuitBreakerStatusCodeException(HttpStatus statusCode) { + public CircuitBreakerStatusCodeException(HttpStatusCode statusCode) { super(statusCode); } diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/tagsprovider/GatewayHttpTagsProvider.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/tagsprovider/GatewayHttpTagsProvider.java index 20f2e57b..789e3bd7 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/tagsprovider/GatewayHttpTagsProvider.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/support/tagsprovider/GatewayHttpTagsProvider.java @@ -19,6 +19,7 @@ package org.springframework.cloud.gateway.support.tagsprovider; import io.micrometer.core.instrument.Tags; import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.http.server.reactive.AbstractServerHttpResponse; import org.springframework.web.server.ServerWebExchange; @@ -52,11 +53,14 @@ public class GatewayHttpTagsProvider implements GatewayTagsProvider { } } else { - HttpStatus statusCode = exchange.getResponse().getStatusCode(); + HttpStatusCode statusCode = exchange.getResponse().getStatusCode(); if (statusCode != null) { httpStatusCodeStr = String.valueOf(statusCode.value()); - outcome = statusCode.series().name(); - status = statusCode.name(); + if (statusCode instanceof HttpStatus) { + HttpStatus httpStatus = (HttpStatus) statusCode; + outcome = httpStatus.series().name(); + status = httpStatus.name(); + } } } diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/actuate/GatewayControllerEndpointTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/actuate/GatewayControllerEndpointTests.java index c85b525c..f974bffb 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/actuate/GatewayControllerEndpointTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/actuate/GatewayControllerEndpointTests.java @@ -46,6 +46,7 @@ import org.springframework.cloud.gateway.test.PermitAllSecurityConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner; @@ -136,7 +137,7 @@ public class GatewayControllerEndpointTests { testClient.delete().uri("http://localhost:" + port + "/actuator/gateway/routes/test-route-to-be-delete") .exchange().expectStatus().isOk().expectBody(ResponseEntity.class).consumeWith(result -> { - HttpStatus httpStatus = result.getStatus(); + HttpStatusCode httpStatus = result.getStatus(); Assert.assertEquals(HttpStatus.OK, httpStatus); }); } diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/SimpleUrlHandlerCorsTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/SimpleUrlHandlerCorsTests.java index 784d6bae..f87da623 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/SimpleUrlHandlerCorsTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/cors/SimpleUrlHandlerCorsTests.java @@ -31,6 +31,7 @@ import org.springframework.context.annotation.Import; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.http.ResponseEntity; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; @@ -62,8 +63,8 @@ public class SimpleUrlHandlerCorsTests extends BaseWebClientTests { @Test public void testCorsRequestNotHandledByGW() { ResponseEntity responseEntity = webClient.get().uri("/abc/123/function").header("Origin", "domain.com") - .header(HttpHeaders.HOST, "www.path.org").retrieve().onStatus(HttpStatus::isError, t -> Mono.empty()) - .toEntity(String.class).block(); + .header(HttpHeaders.HOST, "www.path.org").retrieve() + .onStatus(HttpStatusCode::isError, t -> Mono.empty()).toEntity(String.class).block(); HttpHeaders asHttpHeaders = responseEntity.getHeaders(); assertThat(responseEntity.getBody()).isNotNull(); assertThat(asHttpHeaders.getAccessControlAllowOrigin()) diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilterTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilterTests.java index 334ca6fd..de8fcba0 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilterTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilterTests.java @@ -274,7 +274,7 @@ class ReactiveLoadBalancerClientFilterTests { filter.filter(exchange, chain).block(); } catch (NotFoundException exception) { - assertThat(exception.getStatus()).isEqualTo(HttpStatus.NOT_FOUND); + assertThat(exception.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND); } } diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/headers/HttpStatusInResponseHeadersFilterTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/headers/HttpStatusInResponseHeadersFilterTests.java index 5338b1f9..3bb08aee 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/headers/HttpStatusInResponseHeadersFilterTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/filter/headers/HttpStatusInResponseHeadersFilterTests.java @@ -26,6 +26,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.test.annotation.DirtiesContext; import org.springframework.web.server.ServerWebExchange; @@ -54,7 +55,7 @@ public class HttpStatusInResponseHeadersFilterTests extends BaseWebClientTests { return new HttpHeadersFilter() { @Override public HttpHeaders filter(HttpHeaders input, ServerWebExchange exchange) { - HttpStatus statusCode = exchange.getResponse().getStatusCode(); + HttpStatusCode statusCode = exchange.getResponse().getStatusCode(); assertThat(statusCode).isEqualTo(HttpStatus.OK); return input; } diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/TestUtils.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/TestUtils.java index 74fa473b..9c453218 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/TestUtils.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/TestUtils.java @@ -18,7 +18,7 @@ package org.springframework.cloud.gateway.test; import java.util.Map; -import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.web.reactive.function.client.ClientResponse; import static org.assertj.core.api.Assertions.assertThat; @@ -34,8 +34,8 @@ public class TestUtils { return (Map) response.get(key); } - public static void assertStatus(ClientResponse response, HttpStatus status) { - HttpStatus statusCode = response.statusCode(); + public static void assertStatus(ClientResponse response, HttpStatusCode status) { + HttpStatusCode statusCode = response.statusCode(); assertThat(statusCode).isEqualTo(status); } diff --git a/spring-cloud-gateway-webflux/src/main/java/org/springframework/cloud/gateway/webflux/ProxyExchange.java b/spring-cloud-gateway-webflux/src/main/java/org/springframework/cloud/gateway/webflux/ProxyExchange.java index 788d53d5..62cb7f07 100644 --- a/spring-cloud-gateway-webflux/src/main/java/org/springframework/cloud/gateway/webflux/ProxyExchange.java +++ b/spring-cloud-gateway-webflux/src/main/java/org/springframework/cloud/gateway/webflux/ProxyExchange.java @@ -33,7 +33,7 @@ import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatusCode; import org.springframework.http.RequestEntity; import org.springframework.http.RequestEntity.BodyBuilder; import org.springframework.http.ResponseEntity; @@ -378,7 +378,7 @@ public class ProxyExchange { result = builder.headers(headers -> addHeaders(headers, exchange.getRequest().getHeaders())).retrieve(); } } - return result.onStatus(HttpStatus::isError, t -> Mono.empty()) + return result.onStatus(HttpStatusCode::isError, t -> Mono.empty()) .toEntity(ParameterizedTypeReference.forType(type)); }