From 5aa97ffdce479b53f4761b277b18a21895bdc1a8 Mon Sep 17 00:00:00 2001 From: Olga Maciaszek-Sharma Date: Tue, 29 Mar 2022 17:03:03 +0200 Subject: [PATCH] Adjust to changes in commons. --- .../filter/ReactiveLoadBalancerClientFilter.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilter.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilter.java index 3de22769..5b0740f2 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilter.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/ReactiveLoadBalancerClientFilter.java @@ -115,6 +115,7 @@ public class ReactiveLoadBalancerClientFilter implements GlobalFilter, Ordered { RequestDataContext.class, ResponseData.class, ServiceInstance.class); DefaultRequest lbRequest = new DefaultRequest<>( new RequestDataContext(new RequestData(exchange.getRequest()), getHint(serviceId))); + LoadBalancerProperties loadBalancerProperties = clientFactory.getProperties(serviceId); return choose(lbRequest, serviceId, supportedLifecycleProcessors).doOnNext(response -> { if (!response.hasServer()) { @@ -153,8 +154,15 @@ public class ReactiveLoadBalancerClientFilter implements GlobalFilter, Ordered { .doOnSuccess(aVoid -> supportedLifecycleProcessors.forEach(lifecycle -> lifecycle .onComplete(new CompletionContext( CompletionContext.Status.SUCCESS, lbRequest, - exchange.getAttribute(GATEWAY_LOADBALANCER_RESPONSE_ATTR), - new ResponseData(exchange.getResponse(), new RequestData(exchange.getRequest())))))); + exchange.getAttribute(GATEWAY_LOADBALANCER_RESPONSE_ATTR), buildResponseData(exchange, + loadBalancerProperties.isUseRawStatusCodeInResponseData()))))); + } + + private ResponseData buildResponseData(ServerWebExchange exchange, boolean useRawStatusCodes) { + if (useRawStatusCodes) { + return new ResponseData(new RequestData(exchange.getRequest()), exchange.getResponse()); + } + return new ResponseData(exchange.getResponse(), new RequestData(exchange.getRequest())); } protected URI reconstructURI(ServiceInstance serviceInstance, URI original) {