diff --git a/pom.xml b/pom.xml index ceb7fcb6..cafae230 100644 --- a/pom.xml +++ b/pom.xml @@ -30,8 +30,8 @@ spring-cloud-consul-config spring-cloud-consul-discovery spring-cloud-consul-bus - spring-cloud-consul-sidecar spring-cloud-consul-sample + spring-cloud-consul-tests @@ -107,6 +107,11 @@ spring-cloud-config-client 1.0.0.BUILD-SNAPSHOT + + org.springframework.cloud + spring-cloud-starter-zuul + 1.0.0.BUILD-SNAPSHOT + org.springframework.cloud spring-cloud-netflix-sidecar diff --git a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.java b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.java index feca80f1..dd67fb91 100644 --- a/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.java +++ b/spring-cloud-consul-discovery/src/main/java/org/springframework/cloud/consul/discovery/ConsulRibbonClientConfiguration.java @@ -93,13 +93,14 @@ public class ConsulRibbonClientConfiguration implements BeanPostProcessor { } private void wrapServerList(DynamicServerListLoadBalancer balancer) { - @SuppressWarnings("unchecked") - DynamicServerListLoadBalancer dynamic = (DynamicServerListLoadBalancer) balancer; - ServerList list = dynamic.getServerListImpl(); - if (list instanceof ConsulServerList) { - ConsulServerList csl = (ConsulServerList) list; - csl.setClient(client); - } + // TODO: fix this set client hack + @SuppressWarnings("unchecked") + DynamicServerListLoadBalancer dynamic = (DynamicServerListLoadBalancer) balancer; + ServerList list = dynamic.getServerListImpl(); + if (list instanceof ConsulServerList) { + ConsulServerList csl = (ConsulServerList) list; + csl.setClient(client); + } } protected void setProp(String serviceId, String suffix, String value) { diff --git a/spring-cloud-consul-sidecar/src/main/java/org/springframework/cloud/consul/sidecar/ConsulSidecarConfiguration.java b/spring-cloud-consul-sidecar/src/main/java/org/springframework/cloud/consul/sidecar/ConsulSidecarConfiguration.java deleted file mode 100644 index 4107dad2..00000000 --- a/spring-cloud-consul-sidecar/src/main/java/org/springframework/cloud/consul/sidecar/ConsulSidecarConfiguration.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.springframework.cloud.consul.sidecar; - -import org.springframework.context.annotation.Configuration; - -/** - * @author Spencer Gibb - */ -@Configuration -public class ConsulSidecarConfiguration { -} diff --git a/spring-cloud-consul-sidecar/src/main/java/org/springframework/cloud/consul/sidecar/EnableSidecar.java b/spring-cloud-consul-sidecar/src/main/java/org/springframework/cloud/consul/sidecar/EnableSidecar.java deleted file mode 100644 index 3ec902df..00000000 --- a/spring-cloud-consul-sidecar/src/main/java/org/springframework/cloud/consul/sidecar/EnableSidecar.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.springframework.cloud.consul.sidecar; - -import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; -import org.springframework.cloud.netflix.sidecar.SidecarConfiguration; -import org.springframework.cloud.netflix.zuul.EnableZuulProxy; -import org.springframework.context.annotation.Import; - -import java.lang.annotation.*; - -/** - * @author Spencer Gibb - */ -@EnableCircuitBreaker -@EnableDiscoveryClient -@EnableZuulProxy -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Import({SidecarConfiguration.class, ConsulSidecarConfiguration.class}) -public @interface EnableSidecar { - -} diff --git a/spring-cloud-consul-sidecar/pom.xml b/spring-cloud-consul-tests/pom.xml similarity index 85% rename from spring-cloud-consul-sidecar/pom.xml rename to spring-cloud-consul-tests/pom.xml index 4c076453..61dbdcc3 100644 --- a/spring-cloud-consul-sidecar/pom.xml +++ b/spring-cloud-consul-tests/pom.xml @@ -4,10 +4,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - spring-cloud-consul-sidecar + spring-cloud-consul-tests jar - Spring Cloud Consul Sidecar - Spring Cloud Consul Sidecar + Spring Cloud Consul Tests + Spring Cloud Consul Tests org.springframework.cloud @@ -33,6 +33,10 @@ org.springframework.cloud spring-cloud-consul-discovery + + org.springframework.cloud + spring-cloud-starter-zuul + org.springframework.cloud spring-cloud-netflix-sidecar diff --git a/spring-cloud-consul-sidecar/run-server.sh b/spring-cloud-consul-tests/run-server.sh similarity index 100% rename from spring-cloud-consul-sidecar/run-server.sh rename to spring-cloud-consul-tests/run-server.sh diff --git a/spring-cloud-consul-sidecar/src/test/java/org/springframework/cloud/consul/sidecar/SidecarApplicationTests.java b/spring-cloud-consul-tests/src/test/java/org/springframework/cloud/consul/sidecar/SidecarApplicationTests.java similarity index 82% rename from spring-cloud-consul-sidecar/src/test/java/org/springframework/cloud/consul/sidecar/SidecarApplicationTests.java rename to spring-cloud-consul-tests/src/test/java/org/springframework/cloud/consul/sidecar/SidecarApplicationTests.java index b586b01f..f66eb31a 100644 --- a/spring-cloud-consul-sidecar/src/test/java/org/springframework/cloud/consul/sidecar/SidecarApplicationTests.java +++ b/spring-cloud-consul-tests/src/test/java/org/springframework/cloud/consul/sidecar/SidecarApplicationTests.java @@ -23,11 +23,17 @@ import org.springframework.boot.actuate.metrics.repository.InMemoryMetricReposit import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.test.IntegrationTest; import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.sidecar.*; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.bind.annotation.RestController; +import java.lang.annotation.*; + @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = SidecarApplicationTests.SidecarApplication.class) @IntegrationTest("server.port=0") @@ -39,7 +45,10 @@ public class SidecarApplicationTests { @SpringBootApplication - @org.springframework.cloud.netflix.sidecar.EnableSidecar + @EnableCircuitBreaker + @EnableDiscoveryClient + @EnableZuulProxy + @Import(SidecarConfiguration.class) @RestController public static class SidecarApplication { diff --git a/spring-cloud-consul-tests/src/test/java/org/springframework/cloud/consul/sidecar/ZuulApplicationTests.java b/spring-cloud-consul-tests/src/test/java/org/springframework/cloud/consul/sidecar/ZuulApplicationTests.java new file mode 100644 index 00000000..a45a2252 --- /dev/null +++ b/spring-cloud-consul-tests/src/test/java/org/springframework/cloud/consul/sidecar/ZuulApplicationTests.java @@ -0,0 +1,58 @@ +/* + * Copyright 2013-2015 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.consul.sidecar; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.actuate.metrics.repository.InMemoryMetricRepository; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.IntegrationTest; +import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; +import org.springframework.context.annotation.Bean; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringApplicationConfiguration(classes = ZuulApplicationTests.ZuulApplication.class) +@IntegrationTest("server.port=0") +public class ZuulApplicationTests { + + @Test + public void contextLoads() { + } + + + @SpringBootApplication + @EnableCircuitBreaker + @EnableDiscoveryClient + @EnableZuulProxy + public static class ZuulApplication { + + @Bean + public InMemoryMetricRepository inMemoryMetricRepository() { + return new InMemoryMetricRepository(); + } + + public static void main(String[] args) { + SpringApplication.run(ZuulApplication.class, args); + } + + } +} diff --git a/spring-cloud-consul-sidecar/src/test/resources/application.yml b/spring-cloud-consul-tests/src/test/resources/application.yml similarity index 100% rename from spring-cloud-consul-sidecar/src/test/resources/application.yml rename to spring-cloud-consul-tests/src/test/resources/application.yml diff --git a/spring-cloud-consul-sidecar/src/test/resources/bootstrap.yml b/spring-cloud-consul-tests/src/test/resources/bootstrap.yml similarity index 100% rename from spring-cloud-consul-sidecar/src/test/resources/bootstrap.yml rename to spring-cloud-consul-tests/src/test/resources/bootstrap.yml diff --git a/spring-cloud-consul-sidecar/src/test/resources/health.json b/spring-cloud-consul-tests/src/test/resources/health.json similarity index 100% rename from spring-cloud-consul-sidecar/src/test/resources/health.json rename to spring-cloud-consul-tests/src/test/resources/health.json