Fixes feign compilation errors

This commit is contained in:
Ryan Baxter
2020-10-02 15:16:36 -04:00
parent 2c87d29f6c
commit 0c0277f8b3
4 changed files with 21 additions and 7 deletions

View File

@@ -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;
}

View File

@@ -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;
}
}

View File

@@ -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());
}
}

View File

@@ -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;