From d0465d7d9bf53dcd9a9fc7aae1225446fccfdec1 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Thu, 28 Apr 2016 10:08:14 +0200 Subject: [PATCH] Migrated DependencyConfig to Java --- pom.xml | 6 + spring-cloud-zookeeper-discovery/pom.xml | 5 + .../dependency/DependencyConfig.groovy | 104 ----------------- .../dependency/DependencyConfig.java | 106 ++++++++++++++++++ .../discovery/test/TestRibbonClient.java | 8 +- 5 files changed, 121 insertions(+), 108 deletions(-) delete mode 100644 spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/dependency/DependencyConfig.groovy create mode 100644 spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/dependency/DependencyConfig.java diff --git a/pom.xml b/pom.xml index b120ddfa..5aee93d9 100644 --- a/pom.xml +++ b/pom.xml @@ -191,6 +191,12 @@ groovy-all 2.4.4 + + org.assertj + assertj-core + 2.4.0 + test + diff --git a/spring-cloud-zookeeper-discovery/pom.xml b/spring-cloud-zookeeper-discovery/pom.xml index da1dc1e9..e100d595 100644 --- a/spring-cloud-zookeeper-discovery/pom.xml +++ b/spring-cloud-zookeeper-discovery/pom.xml @@ -159,6 +159,11 @@ test 1.53 + + org.assertj + assertj-core + test + diff --git a/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/dependency/DependencyConfig.groovy b/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/dependency/DependencyConfig.groovy deleted file mode 100644 index 9bdc8ca7..00000000 --- a/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/dependency/DependencyConfig.groovy +++ /dev/null @@ -1,104 +0,0 @@ -package org.springframework.cloud.zookeeper.discovery.dependency -import org.springframework.beans.factory.annotation.Autowired -import org.springframework.boot.actuate.autoconfigure.EndpointMBeanExportAutoConfiguration -import org.springframework.boot.autoconfigure.EnableAutoConfiguration -import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent -import org.springframework.cloud.client.discovery.EnableDiscoveryClient -import org.springframework.cloud.client.loadbalancer.LoadBalanced -import org.springframework.cloud.netflix.feign.EnableFeignClients -import org.springframework.cloud.netflix.feign.FeignClient -import org.springframework.cloud.zookeeper.discovery.ZookeeperServiceDiscovery -import org.springframework.cloud.zookeeper.discovery.test.CommonTestConfig -import org.springframework.cloud.zookeeper.discovery.test.TestRibbonClient -import org.springframework.context.ApplicationListener -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration -import org.springframework.context.annotation.Import -import org.springframework.web.bind.annotation.RequestHeader -import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RequestMethod -import org.springframework.web.bind.annotation.RestController -import org.springframework.web.client.RestTemplate - -@Configuration -@EnableAutoConfiguration(exclude = [EndpointMBeanExportAutoConfiguration]) -@Import(CommonTestConfig) -@EnableDiscoveryClient -@EnableFeignClients(basePackageClasses = [AliasUsingFeignClient, IdUsingFeignClient]) -class DependencyConfig { - - @Autowired ZookeeperServiceDiscovery zookeeperServiceDiscovery - - @Bean - TestRibbonClient testRibbonClient(@LoadBalanced RestTemplate restTemplate) { - return new TestRibbonClient(restTemplate) - } - - @Bean - PingController pingController() { - return new PingController(portListener()) - } - - @Bean - PortListener portListener() { - return new PortListener() - } - -} - -class PortListener implements ApplicationListener { - - private int port - - @Override - public void onApplicationEvent(EmbeddedServletContainerInitializedEvent event) { - this.port = event.getEmbeddedServletContainer().getPort() - } - - public int getPort() { - return port - } - -} - -@FeignClient("someAlias") -interface AliasUsingFeignClient { - @RequestMapping(method = RequestMethod.GET, value = "/beans") - String getBeans() - - @RequestMapping(method = RequestMethod.GET, value = "/checkHeaders") - String checkHeaders() -} - -@FeignClient("nameWithoutAlias") -interface IdUsingFeignClient { - @RequestMapping(method = RequestMethod.GET, value = "/beans") - String getBeans() -} - -@RestController -class PingController { - - private final PortListener portListener - - PingController(PortListener portListener) { - this.portListener = portListener - } - - @RequestMapping('/ping') String ping() { - return 'pong' - } - - @RequestMapping('/port') Integer port() { - return portListener.port - } - - @RequestMapping('/checkHeaders') String checkHeaders(@RequestHeader('Content-Type') String contentType, - @RequestHeader('header1') Collection header1, - @RequestHeader('header2') Collection header2) { - assert contentType == 'application/vnd.newsletter.v1+json' - assert header1 == ['value1'] as Set - assert header2 == ['value2'] as Set - return 'ok' - } -} diff --git a/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/dependency/DependencyConfig.java b/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/dependency/DependencyConfig.java new file mode 100644 index 00000000..f2d969e5 --- /dev/null +++ b/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/dependency/DependencyConfig.java @@ -0,0 +1,106 @@ +package org.springframework.cloud.zookeeper.discovery.dependency; + +import java.util.Collection; + +import org.springframework.boot.actuate.autoconfigure.EndpointMBeanExportAutoConfiguration; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.cloud.netflix.feign.EnableFeignClients; +import org.springframework.cloud.netflix.feign.FeignClient; +import org.springframework.cloud.zookeeper.discovery.test.CommonTestConfig; +import org.springframework.cloud.zookeeper.discovery.test.TestRibbonClient; +import org.springframework.context.ApplicationListener; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import static org.assertj.core.api.BDDAssertions.then; + +@Configuration +@EnableAutoConfiguration(exclude = EndpointMBeanExportAutoConfiguration.class) +@Import(CommonTestConfig.class) +@EnableDiscoveryClient +@EnableFeignClients(basePackageClasses = {AliasUsingFeignClient.class, IdUsingFeignClient.class}) +public class DependencyConfig { + + @Bean + TestRibbonClient testRibbonClient(@LoadBalanced RestTemplate restTemplate) { + return new TestRibbonClient(restTemplate); + } + + @Bean + PingController pingController() { + return new PingController(portListener()); + } + + @Bean + PortListener portListener() { + return new PortListener(); + } + +} + +class PortListener implements ApplicationListener { + + private int port; + + @Override + public void onApplicationEvent(EmbeddedServletContainerInitializedEvent event) { + this.port = event.getEmbeddedServletContainer().getPort(); + } + + public int getPort() { + return this.port; + } + +} + +@FeignClient("someAlias") +interface AliasUsingFeignClient { + @RequestMapping(method = RequestMethod.GET, value = "/beans") + String getBeans(); + + @RequestMapping(method = RequestMethod.GET, value = "/checkHeaders") + String checkHeaders(); +} + +@FeignClient("nameWithoutAlias") +interface IdUsingFeignClient { + @RequestMapping(method = RequestMethod.GET, value = "/beans") + String getBeans(); +} + +@RestController +class PingController { + + private final PortListener portListener; + + PingController(PortListener portListener) { + this.portListener = portListener; + } + + @RequestMapping("/ping") String ping() { + return "pong"; + } + + @RequestMapping("/port") Integer port() { + return this.portListener.getPort(); + } + + @RequestMapping("/checkHeaders") String checkHeaders(@RequestHeader("Content-Type") String contentType, + @RequestHeader("header1") + Collection header1, + @RequestHeader("header2") Collection header2) { + then(contentType).isEqualTo("application/vnd.newsletter.v1+json"); + then(header1).containsExactly("value1"); + then(header2).containsExactly("value2"); + return "ok"; + } +} diff --git a/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/test/TestRibbonClient.java b/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/test/TestRibbonClient.java index 7d6bbd75..5ee8aea4 100644 --- a/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/test/TestRibbonClient.java +++ b/spring-cloud-zookeeper-discovery/src/test/groovy/org/springframework/cloud/zookeeper/discovery/test/TestRibbonClient.java @@ -9,22 +9,22 @@ public class TestRibbonClient extends TestServiceRestClient { private final String thisAppName; - TestRibbonClient(RestTemplate restTemplate) { + public TestRibbonClient(RestTemplate restTemplate) { super(restTemplate); this.thisAppName = "someName"; } - TestRibbonClient(RestTemplate restTemplate, String thisAppName) { + public TestRibbonClient(RestTemplate restTemplate, String thisAppName) { super(restTemplate); this.thisAppName = thisAppName; } - String thisHealthCheck() { + public String thisHealthCheck() { return this.restTemplate .getForObject("http://" + this.thisAppName + "/health", String.class); } - Integer thisPort() { + public Integer thisPort() { return this.restTemplate .getForObject("http://" + this.thisAppName + "/port", Integer.class); }