From 64d3f05e70b661877400999bb8cf043da830d1f6 Mon Sep 17 00:00:00 2001 From: Olga Maciaszek-Sharma Date: Mon, 30 Nov 2020 19:12:14 +0100 Subject: [PATCH] Allow overriding creating requests. Fixes gh-423. --- .../loadbalancer/FeignBlockingLoadBalancerClient.java | 9 ++++++--- .../RetryableFeignBlockingLoadBalancerClient.java | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java index c7a59512..3b6932ee 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/FeignBlockingLoadBalancerClient.java @@ -72,12 +72,15 @@ public class FeignBlockingLoadBalancerClient implements Client { } String reconstructedUrl = loadBalancerClient.reconstructURI(instance, originalUri) .toString(); - Request newRequest = Request.create(request.httpMethod(), reconstructedUrl, - request.headers(), request.body(), request.charset(), - request.requestTemplate()); + Request newRequest = buildRequest(request, reconstructedUrl); return delegate.execute(newRequest, options); } + protected Request buildRequest(Request request, String reconstructedUrl) { + return Request.create(request.httpMethod(), reconstructedUrl, request.headers(), + request.body(), request.charset(), request.requestTemplate()); + } + // Visible for Sleuth instrumentation public Client getDelegate() { return delegate; diff --git a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java index 07319c31..d6bb1bf4 100644 --- a/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java +++ b/spring-cloud-openfeign-core/src/main/java/org/springframework/cloud/openfeign/loadbalancer/RetryableFeignBlockingLoadBalancerClient.java @@ -95,9 +95,7 @@ public class RetryableFeignBlockingLoadBalancerClient implements Client { } String reconstructedUrl = loadBalancerClient .reconstructURI(serviceInstance, originalUri).toString(); - feignRequest = Request.create(request.httpMethod(), reconstructedUrl, - request.headers(), request.body(), request.charset(), - request.requestTemplate()); + feignRequest = buildRequest(request, reconstructedUrl); } } if (feignRequest == null) { @@ -127,6 +125,11 @@ public class RetryableFeignBlockingLoadBalancerClient implements Client { }); } + protected Request buildRequest(Request request, String reconstructedUrl) { + return Request.create(request.httpMethod(), reconstructedUrl, request.headers(), + request.body(), request.charset(), request.requestTemplate()); + } + private RetryTemplate buildRetryTemplate(String serviceId, Request request, LoadBalancedRetryPolicy retryPolicy) { RetryTemplate retryTemplate = new RetryTemplate();