From e5ae8162046ca79fbc325002675915ebe6ca69bf Mon Sep 17 00:00:00 2001 From: Olga Maciaszek-Sharma Date: Mon, 28 Feb 2022 16:21:31 +0100 Subject: [PATCH] Use raw status codes in ResponseData. (#1073) --- .../cloud/client/loadbalancer/ResponseData.java | 13 ++++++------- .../cloud/loadbalancer/stats/LoadBalancerTags.java | 2 +- .../MicrometerStatsLoadBalancerLifecycleTests.java | 4 ++-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/ResponseData.java b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/ResponseData.java index 740685e4..7be8cccb 100644 --- a/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/ResponseData.java +++ b/spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/ResponseData.java @@ -23,7 +23,6 @@ import java.util.Objects; import org.springframework.core.style.ToStringCreator; import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; import org.springframework.http.ResponseCookie; import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.server.reactive.ServerHttpResponse; @@ -40,7 +39,7 @@ import org.springframework.web.reactive.function.client.ClientResponse; */ public class ResponseData { - private final HttpStatus httpStatus; + private final Integer httpStatus; private final HttpHeaders headers; @@ -48,7 +47,7 @@ public class ResponseData { private final RequestData requestData; - public ResponseData(HttpStatus httpStatus, HttpHeaders headers, MultiValueMap cookies, + public ResponseData(Integer httpStatus, HttpHeaders headers, MultiValueMap cookies, RequestData requestData) { this.httpStatus = httpStatus; this.headers = headers; @@ -57,19 +56,19 @@ public class ResponseData { } public ResponseData(ClientResponse response, RequestData requestData) { - this(response.statusCode(), response.headers().asHttpHeaders(), response.cookies(), requestData); + this(response.rawStatusCode(), response.headers().asHttpHeaders(), response.cookies(), requestData); } public ResponseData(ServerHttpResponse response, RequestData requestData) { - this(response.getStatusCode(), response.getHeaders(), response.getCookies(), requestData); + this(response.getRawStatusCode(), response.getHeaders(), response.getCookies(), requestData); } public ResponseData(ClientHttpResponse clientHttpResponse, RequestData requestData) throws IOException { - this(clientHttpResponse.getStatusCode(), clientHttpResponse.getHeaders(), + this(clientHttpResponse.getRawStatusCode(), clientHttpResponse.getHeaders(), buildCookiesFromHeaders(clientHttpResponse.getHeaders()), requestData); } - public HttpStatus getHttpStatus() { + public Integer getHttpStatus() { return httpStatus; } diff --git a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/stats/LoadBalancerTags.java b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/stats/LoadBalancerTags.java index 7679f286..935f5747 100644 --- a/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/stats/LoadBalancerTags.java +++ b/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/stats/LoadBalancerTags.java @@ -67,7 +67,7 @@ final class LoadBalancerTags { // In keeping with the way null HttpStatus is handled in Actuator private static int statusValue(ResponseData responseData) { - return responseData.getHttpStatus() != null ? responseData.getHttpStatus().value() : 200; + return responseData.getHttpStatus() != null ? responseData.getHttpStatus() : 200; } private static String getPath(RequestData requestData) { diff --git a/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/stats/MicrometerStatsLoadBalancerLifecycleTests.java b/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/stats/MicrometerStatsLoadBalancerLifecycleTests.java index 49d8714c..9a85f36b 100644 --- a/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/stats/MicrometerStatsLoadBalancerLifecycleTests.java +++ b/spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/stats/MicrometerStatsLoadBalancerLifecycleTests.java @@ -62,7 +62,7 @@ class MicrometerStatsLoadBalancerLifecycleTests { Request lbRequest = new DefaultRequest<>(new RequestDataContext(requestData)); Response lbResponse = new DefaultResponse( new DefaultServiceInstance("test-1", "test", "test.org", 8080, false, new HashMap<>())); - ResponseData responseData = new ResponseData(HttpStatus.OK, new HttpHeaders(), + ResponseData responseData = new ResponseData(HttpStatus.OK.value(), new HttpHeaders(), new MultiValueMapAdapter<>(new HashMap<>()), requestData); statsLifecycle.onStartRequest(lbRequest, lbResponse); assertThat(meterRegistry.get("loadbalancer.requests.active").gauge().value()).isEqualTo(1); @@ -121,7 +121,7 @@ class MicrometerStatsLoadBalancerLifecycleTests { Request lbRequest = new DefaultRequest<>(new StatsTestContext()); Response lbResponse = new DefaultResponse( new DefaultServiceInstance("test-1", "test", "test.org", 8080, false, new HashMap<>())); - ResponseData responseData = new ResponseData(HttpStatus.OK, new HttpHeaders(), + ResponseData responseData = new ResponseData(HttpStatus.OK.value(), new HttpHeaders(), new MultiValueMapAdapter<>(new HashMap<>()), null); statsLifecycle.onStartRequest(lbRequest, lbResponse); assertThat(meterRegistry.get("loadbalancer.requests.active").gauge().value()).isEqualTo(1);