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 7be8cccb..34aa98e1 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,6 +23,7 @@ import java.util.Objects; import org.springframework.core.style.ToStringCreator; import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatusCode; import org.springframework.http.ResponseCookie; import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.server.reactive.ServerHttpResponse; @@ -39,7 +40,7 @@ import org.springframework.web.reactive.function.client.ClientResponse; */ public class ResponseData { - private final Integer httpStatus; + private final HttpStatusCode httpStatus; private final HttpHeaders headers; @@ -47,7 +48,7 @@ public class ResponseData { private final RequestData requestData; - public ResponseData(Integer httpStatus, HttpHeaders headers, MultiValueMap cookies, + public ResponseData(HttpStatusCode httpStatus, HttpHeaders headers, MultiValueMap cookies, RequestData requestData) { this.httpStatus = httpStatus; this.headers = headers; @@ -56,19 +57,19 @@ public class ResponseData { } public ResponseData(ClientResponse response, RequestData requestData) { - this(response.rawStatusCode(), response.headers().asHttpHeaders(), response.cookies(), requestData); + this(response.statusCode(), response.headers().asHttpHeaders(), response.cookies(), requestData); } public ResponseData(ServerHttpResponse response, RequestData requestData) { - this(response.getRawStatusCode(), response.getHeaders(), response.getCookies(), requestData); + this(response.getStatusCode(), response.getHeaders(), response.getCookies(), requestData); } public ResponseData(ClientHttpResponse clientHttpResponse, RequestData requestData) throws IOException { - this(clientHttpResponse.getRawStatusCode(), clientHttpResponse.getHeaders(), + this(clientHttpResponse.getStatusCode(), clientHttpResponse.getHeaders(), buildCookiesFromHeaders(clientHttpResponse.getHeaders()), requestData); } - public Integer getHttpStatus() { + public HttpStatusCode getHttpStatus() { return httpStatus; } @@ -120,10 +121,9 @@ public class ResponseData { if (this == o) { return true; } - if (!(o instanceof ResponseData)) { + if (!(o instanceof ResponseData that)) { return false; } - ResponseData that = (ResponseData) o; return httpStatus == that.httpStatus && Objects.equals(headers, that.headers) && Objects.equals(cookies, that.cookies) && Objects.equals(requestData, that.requestData); } 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 935f5747..d21672ce 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 @@ -44,8 +44,7 @@ final class LoadBalancerTags { ServiceInstance serviceInstance = completionContext.getLoadBalancerResponse().getServer(); Tags tags = Tags.of(buildServiceInstanceTags(serviceInstance)); Object clientResponse = completionContext.getClientResponse(); - if (clientResponse instanceof ResponseData) { - ResponseData responseData = (ResponseData) clientResponse; + if (clientResponse instanceof ResponseData responseData) { RequestData requestData = responseData.getRequestData(); if (requestData != null) { tags = tags.and(valueOrUnknown("method", requestData.getHttpMethod()), @@ -67,7 +66,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() : 200; + return responseData.getHttpStatus() != null ? responseData.getHttpStatus().value() : 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 9a85f36b..49d8714c 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.value(), new HttpHeaders(), + ResponseData responseData = new ResponseData(HttpStatus.OK, 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.value(), new HttpHeaders(), + ResponseData responseData = new ResponseData(HttpStatus.OK, new HttpHeaders(), new MultiValueMapAdapter<>(new HashMap<>()), null); statsLifecycle.onStartRequest(lbRequest, lbResponse); assertThat(meterRegistry.get("loadbalancer.requests.active").gauge().value()).isEqualTo(1);