diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ProxyRouteLocator.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ProxyRouteLocator.java index cc037d79..dbb490f5 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ProxyRouteLocator.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ProxyRouteLocator.java @@ -33,7 +33,7 @@ public class ProxyRouteLocator implements RouteLocator { private AtomicReference> routes = new AtomicReference<>(); - private Map staticRoutes = new LinkedHashMap(); + private Map staticRoutes = new LinkedHashMap<>(); public ProxyRouteLocator(DiscoveryClient discovery, ZuulProperties properties) { this.discovery = discovery; @@ -61,7 +61,7 @@ public class ProxyRouteLocator implements RouteLocator { routes.set(locateRoutes()); } - Map values = new LinkedHashMap(); + Map values = new LinkedHashMap<>(); for (String key : routes.get().keySet()) { String url = key; diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyApplicationTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyApplicationTests.java index 1d40673f..bea894f7 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyApplicationTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/SampleZuulProxyApplicationTests.java @@ -14,6 +14,7 @@ import org.springframework.boot.test.IntegrationTest; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.boot.test.TestRestTemplate; import org.springframework.cloud.netflix.ribbon.RibbonClient; +import org.springframework.cloud.netflix.ribbon.RibbonClients; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpEntity; @@ -38,6 +39,7 @@ import com.netflix.zuul.ZuulFilter; @WebAppConfiguration @IntegrationTest({ "server.port: 0", "zuul.routes.other: /test/**=http://localhost:7777/local", + "zuul.routes.another: /another/twolevel/**", "zuul.routes.simple: /simple/**" }) @DirtiesContext public class SampleZuulProxyApplicationTests { @@ -65,7 +67,7 @@ public class SampleZuulProxyApplicationTests { public void getOnSelfViaRibbonRoutingFilter() { ResponseEntity result = new TestRestTemplate().exchange( "http://localhost:" + port + "/simple/local/1", HttpMethod.GET, - new HttpEntity((Void) null), String.class); + new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Gotten!", result.getBody()); } @@ -76,7 +78,7 @@ public class SampleZuulProxyApplicationTests { endpoint.reset(); ResponseEntity result = new TestRestTemplate().exchange( "http://localhost:" + port + "/self/1", HttpMethod.DELETE, - new HttpEntity((Void) null), String.class); + new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.OK, result.getStatusCode()); assertEquals("Deleted!", result.getBody()); } @@ -85,10 +87,18 @@ public class SampleZuulProxyApplicationTests { public void testNotFound() { ResponseEntity result = new TestRestTemplate().exchange( "http://localhost:" + port + "/myinvalidpath", HttpMethod.GET, - new HttpEntity((Void) null), String.class); + new HttpEntity<>((Void) null), String.class); assertEquals(HttpStatus.NOT_FOUND, result.getStatusCode()); } + @Test + public void getSecondLevel() { + ResponseEntity result = new TestRestTemplate().exchange( + "http://localhost:" + port + "/another/twolevel/local/1", HttpMethod.GET, + new HttpEntity<>((Void) null), String.class); + assertEquals(HttpStatus.OK, result.getStatusCode()); + assertEquals("Gotten!", result.getBody()); + } } //Don't use @SpringBootApplication because we don't want to component scan @@ -96,7 +106,10 @@ public class SampleZuulProxyApplicationTests { @EnableAutoConfiguration @RestController @EnableZuulProxy -@RibbonClient(name = "simple", configuration = SimpleRibbonClientConfiguration.class) +@RibbonClients({ + @RibbonClient(name = "simple", configuration = SimpleRibbonClientConfiguration.class), + @RibbonClient(name = "another", configuration = AnotherRibbonClientConfiguration.class) +}) class SampleZuulProxyApplication { @RequestMapping("/testing123") @@ -166,3 +179,13 @@ class SimpleRibbonClientConfiguration { return balancer; } } +@Configuration +class AnotherRibbonClientConfiguration { + @Bean + public ILoadBalancer ribbonLoadBalancer(EurekaInstanceConfig instance) { + BaseLoadBalancer balancer = new BaseLoadBalancer(); + balancer.setServersList(Arrays.asList(new Server("localhost", instance + .getNonSecurePort()))); + return balancer; + } +}