diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocator.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocator.java index 06fd3d2e..1516e75c 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocator.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocator.java @@ -156,9 +156,12 @@ public class ProxyRouteLocator implements RouteLocator { if (staticServices.containsKey(serviceId) && staticServices.get(serviceId).getUrl() == null) { // Explicitly configured with no URL, cannot be ignored - // all static routes are already in routesMap, just update + // all static routes are already in routesMap + // Update location using serviceId if location is null ZuulRoute staticRoute = staticServices.get(serviceId); - staticRoute.updateRoute(key, serviceId); + if (!StringUtils.hasText(staticRoute.getLocation())) { + staticRoute.setLocation(serviceId); + } } if (!PatternMatchUtils.simpleMatch(ignored, serviceId) && !routesMap.containsKey(key)) { diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ZuulProperties.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ZuulProperties.java index 022be907..3f9e7ea6 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ZuulProperties.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ZuulProperties.java @@ -102,10 +102,6 @@ public class ZuulProperties { } public ZuulRoute(String path, String location) { - updateRoute(path, location); - } - - public void updateRoute(String path, String location) { this.id = extractId(path); this.path = path; setLocation(location); diff --git a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocatorTests.java b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocatorTests.java index 233fecf0..50b8f04f 100644 --- a/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocatorTests.java +++ b/spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocatorTests.java @@ -276,6 +276,25 @@ public class ProxyRouteLocatorTests { assertEquals("retryable is wrong", Boolean.TRUE, actual.getRetryable()); } + @Test + public void testIgnoredRouteNonServiceIdPathRemains() { + //This is how you setup a route defined like zuul.proxy.route.foo=/** + ZuulRoute route = new ZuulRoute("/**", "foo"); + route.setId("foo"); + + this.properties.getRoutes().put("foo", route); + ProxyRouteLocator routeLocator = new ProxyRouteLocator("/", this.discovery, + this.properties); + this.properties.setIgnoredServices(Collections.singletonList("*")); + given(this.discovery.getServices()).willReturn(Collections.singletonList("foo")); + LinkedHashMap routes = routeLocator.locateRoutes(); + ZuulRoute actual = routes.get("/**"); + assertNotNull("routes ignored foo", actual); + assertEquals("id is wrong", "foo", actual.getId()); + assertEquals("location is wrong", "foo", actual.getServiceId()); + assertEquals("path is wrong", "/**", actual.getPath()); + } + @Test public void testIgnoredRouteIncludedIfConfiguredAndNotDiscovered() { this.properties.getRoutes()