From d672c1c928dc29b4b66a6365b0952fec0af03648 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 22 Jul 2020 09:21:24 +0200 Subject: [PATCH] Fixed broken compilation --- ...ingCloudLoadBalancerAutoConfiguration.java | 75 +++++++++++++------ 1 file changed, 53 insertions(+), 22 deletions(-) diff --git a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/loadbalancer/SpringCloudLoadBalancerAutoConfiguration.java b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/loadbalancer/SpringCloudLoadBalancerAutoConfiguration.java index b065f54f74..a9ce40d0a8 100644 --- a/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/loadbalancer/SpringCloudLoadBalancerAutoConfiguration.java +++ b/spring-cloud-contract-stub-runner/src/main/java/org/springframework/cloud/contract/stubrunner/spring/cloud/loadbalancer/SpringCloudLoadBalancerAutoConfiguration.java @@ -31,8 +31,12 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.loadbalancer.CompletionContext; import org.springframework.cloud.client.loadbalancer.DefaultResponse; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; +import org.springframework.cloud.client.loadbalancer.LoadBalancerLifecycle; +import org.springframework.cloud.client.loadbalancer.Request; +import org.springframework.cloud.client.loadbalancer.Response; import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer; import org.springframework.cloud.contract.stubrunner.RunningStubs; import org.springframework.cloud.contract.stubrunner.StubConfiguration; @@ -79,36 +83,15 @@ public class SpringCloudLoadBalancerAutoConfiguration { class StubRunnerLoadBalancerClientFactory extends LoadBalancerClientFactory implements Closeable { - private StubFinder stubFinder; - - private StubMapperProperties stubMapperProperties; - private final BeanFactory beanFactory; StubRunnerLoadBalancerClientFactory(BeanFactory beanFactory) { this.beanFactory = beanFactory; } - private StubFinder stubFinder() { - if (this.stubFinder == null) { - this.stubFinder = this.beanFactory.getBean(StubFinder.class); - } - return this.stubFinder; - } - - private StubMapperProperties stubMapperProperties() { - if (this.stubMapperProperties == null) { - this.stubMapperProperties = this.beanFactory - .getBean(StubMapperProperties.class); - } - return this.stubMapperProperties; - } - @Override public ReactiveLoadBalancer getInstance(String serviceId) { - return (ReactorServiceInstanceLoadBalancer) request -> Mono - .just(new DefaultResponse(new StubbedServiceInstance(stubFinder(), - stubMapperProperties(), serviceId))); + return new ContractReactorServiceInstanceLoadBalancer(this.beanFactory, serviceId); } @Override @@ -214,3 +197,51 @@ class StubbedServiceInstance implements ServiceInstance { } } + +class ContractReactorServiceInstanceLoadBalancer implements ReactorServiceInstanceLoadBalancer, LoadBalancerLifecycle { + + private final BeanFactory beanFactory; + + private final String serviceId; + + private StubFinder stubFinder; + + private StubMapperProperties stubMapperProperties; + + ContractReactorServiceInstanceLoadBalancer(BeanFactory beanFactory, String serviceId) { + this.beanFactory = beanFactory; + this.serviceId = serviceId; + } + + @Override + public void onStart(Request request) { + + } + + @Override + public void onComplete(CompletionContext completionContext) { + + } + + @Override + public Mono> choose(Request request) { + return Mono + .just(new DefaultResponse(new StubbedServiceInstance(stubFinder(), + stubMapperProperties(), this.serviceId))); + } + + private StubFinder stubFinder() { + if (this.stubFinder == null) { + this.stubFinder = this.beanFactory.getBean(StubFinder.class); + } + return this.stubFinder; + } + + private StubMapperProperties stubMapperProperties() { + if (this.stubMapperProperties == null) { + this.stubMapperProperties = this.beanFactory + .getBean(StubMapperProperties.class); + } + return this.stubMapperProperties; + } +} \ No newline at end of file