From 0c0277f8b34e63e71b4ff9c022d2586d65e061f2 Mon Sep 17 00:00:00 2001 From: Ryan Baxter Date: Fri, 2 Oct 2020 15:16:36 -0400 Subject: [PATCH] Fixes feign compilation errors --- .../TraceFeignBlockingLoadBalancerClient.java | 5 +++-- .../web/client/feign/TraceFeignObjectWrapper.java | 15 +++++++++++++-- .../feign/TracingFeignObjectWrapperTests.java | 5 +++-- ...nuallyCreatedLoadBalancerFeignClientTests.java | 3 ++- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignBlockingLoadBalancerClient.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignBlockingLoadBalancerClient.java index f6bc1fcf1..44ddc6585 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignBlockingLoadBalancerClient.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignBlockingLoadBalancerClient.java @@ -29,6 +29,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.BeanFactory; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; +import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerProperties; import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; /** @@ -51,8 +52,8 @@ class TraceFeignBlockingLoadBalancerClient extends FeignBlockingLoadBalancerClie TracingFeignClient tracingFeignClient; TraceFeignBlockingLoadBalancerClient(Client delegate, LoadBalancerClient loadBalancerClient, - BeanFactory beanFactory) { - super(delegate, loadBalancerClient); + BeanFactory beanFactory, LoadBalancerProperties loadBalancerProperties) { + super(delegate, loadBalancerClient, loadBalancerProperties); this.beanFactory = beanFactory; } diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignObjectWrapper.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignObjectWrapper.java index 3f270f6ea..ffdab5dc9 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignObjectWrapper.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TraceFeignObjectWrapper.java @@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFactory; import org.springframework.aop.support.AopUtils; import org.springframework.beans.factory.BeanFactory; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; +import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerProperties; import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; import org.springframework.cloud.util.ProxyUtils; import org.springframework.util.ClassUtils; @@ -57,6 +58,8 @@ final class TraceFeignObjectWrapper { private Object loadBalancerClient; + private Object loadBalancerProperties; + TraceFeignObjectWrapper(BeanFactory beanFactory) { this.beanFactory = beanFactory; } @@ -77,7 +80,8 @@ final class TraceFeignObjectWrapper { FeignBlockingLoadBalancerClient client = ProxyUtils.getTargetObject(bean); return new TraceFeignBlockingLoadBalancerClient( (Client) new TraceFeignObjectWrapper(this.beanFactory).wrap(client.getDelegate()), - (LoadBalancerClient) loadBalancerClient(), this.beanFactory); + (LoadBalancerClient) loadBalancerClient(), this.beanFactory, + (LoadBalancerProperties) loadBalancerProperties()); } else { FeignBlockingLoadBalancerClient client = ProxyUtils.getTargetObject(bean); @@ -90,7 +94,7 @@ final class TraceFeignObjectWrapper { log.warn(EXCEPTION_WARNING, e); } return new TraceFeignBlockingLoadBalancerClient(client, (LoadBalancerClient) loadBalancerClient(), - this.beanFactory); + this.beanFactory, (LoadBalancerProperties) loadBalancerProperties()); } } @@ -101,4 +105,11 @@ final class TraceFeignObjectWrapper { return loadBalancerClient; } + private Object loadBalancerProperties() { + if (loadBalancerProperties == null) { + loadBalancerProperties = beanFactory.getBean(LoadBalancerProperties.class); + } + return loadBalancerProperties; + } + } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignObjectWrapperTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignObjectWrapperTests.java index d10a0eed2..202353ac6 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignObjectWrapperTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/instrument/web/client/feign/TracingFeignObjectWrapperTests.java @@ -25,6 +25,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.beans.factory.BeanFactory; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; +import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerProperties; import org.springframework.cloud.loadbalancer.blocking.client.BlockingLoadBalancerClient; import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; @@ -64,7 +65,7 @@ public class TracingFeignObjectWrapperTests { when(beanFactory.getBean(LoadBalancerClient.class)).thenReturn(loadBalancerClient); Object wrapped = traceFeignObjectWrapper - .wrap(new FeignBlockingLoadBalancerClient(delegate, loadBalancerClient)); + .wrap(new FeignBlockingLoadBalancerClient(delegate, loadBalancerClient, new LoadBalancerProperties())); assertThat(wrapped).isInstanceOf(TraceFeignBlockingLoadBalancerClient.class); } @@ -86,7 +87,7 @@ public class TracingFeignObjectWrapperTests { static class TestFeignBlockingLoadBalancerClient extends FeignBlockingLoadBalancerClient { TestFeignBlockingLoadBalancerClient(Client delegate, BlockingLoadBalancerClient loadBalancerClient) { - super(delegate, loadBalancerClient); + super(delegate, loadBalancerClient, new LoadBalancerProperties()); } } diff --git a/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue1125/ManuallyCreatedLoadBalancerFeignClientTests.java b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue1125/ManuallyCreatedLoadBalancerFeignClientTests.java index 36b259844..5a2b34221 100644 --- a/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue1125/ManuallyCreatedLoadBalancerFeignClientTests.java +++ b/tests/spring-cloud-sleuth-instrumentation-feign-tests/src/test/java/org/springframework/cloud/sleuth/instrument/feign/issues/issue1125/ManuallyCreatedLoadBalancerFeignClientTests.java @@ -36,6 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; +import org.springframework.cloud.client.loadbalancer.reactive.LoadBalancerProperties; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.loadbalancer.FeignBlockingLoadBalancerClient; @@ -125,7 +126,7 @@ class Application { class MyBlockingClient extends FeignBlockingLoadBalancerClient { MyBlockingClient(Client delegate, LoadBalancerClient loadBalancerClient) { - super(delegate, loadBalancerClient); + super(delegate, loadBalancerClient, new LoadBalancerProperties()); } boolean wasCalled;