Backport support for custom HTTP status in a backwards compatible way. (#1087)

This commit is contained in:
Olga Maciaszek-Sharma
2022-03-29 16:47:35 +02:00
committed by GitHub
parent 395386414d
commit c72f6d0795
7 changed files with 133 additions and 17 deletions

View File

@@ -96,7 +96,8 @@ public class BlockingLoadBalancerClient implements LoadBalancerClient {
.forEach(lifecycle -> lifecycle.onStartRequest(lbRequest, new DefaultResponse(serviceInstance)));
try {
T response = request.apply(serviceInstance);
Object clientResponse = getClientResponse(response);
LoadBalancerProperties properties = loadBalancerClientFactory.getProperties(serviceId);
Object clientResponse = getClientResponse(response, properties.isUseRawStatusCodeInResponseData());
supportedLifecycleProcessors
.forEach(lifecycle -> lifecycle.onComplete(new CompletionContext<>(CompletionContext.Status.SUCCESS,
lbRequest, defaultResponse, clientResponse)));
@@ -115,13 +116,16 @@ public class BlockingLoadBalancerClient implements LoadBalancerClient {
return null;
}
private <T> Object getClientResponse(T response) {
private <T> Object getClientResponse(T response, boolean useRawStatusCodes) {
ClientHttpResponse clientHttpResponse = null;
if (response instanceof ClientHttpResponse) {
clientHttpResponse = (ClientHttpResponse) response;
}
if (clientHttpResponse != null) {
try {
if (useRawStatusCodes) {
return new ResponseData(null, clientHttpResponse);
}
return new ResponseData(clientHttpResponse, null);
}
catch (IOException ignored) {