From c0903c5a224a09eeb06c83e8b71519f353c26134 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 26 Nov 2014 11:00:55 -0700 Subject: [PATCH] add pkg protected resetRoutes so new mappings can be created via post to /routes --- .../cloud/netflix/zuul/RouteLocator.java | 13 ++++++++++--- .../cloud/netflix/zuul/ZuulHandlerMapping.java | 2 +- .../src/test/resources/application.yml | 6 ------ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RouteLocator.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RouteLocator.java index be4103fc..9443f22f 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RouteLocator.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/RouteLocator.java @@ -45,7 +45,7 @@ public class RouteLocator implements ApplicationListener public void onApplicationEvent(EnvironmentChangeEvent event) { for (String key : event.getKeys()) { if (key.startsWith(properties.getMapping())) { - routes.set(locateRoutes()); + resetRoutes(); return; } } @@ -53,13 +53,20 @@ public class RouteLocator implements ApplicationListener public Map getRoutes() { if (routes.get() == null) { - routes.set(locateRoutes()); + return resetRoutes(); } return routes.get(); } - protected LinkedHashMap locateRoutes() { + //access so ZuulHandlerMapping actuator can reset it's mappings + /*package*/ Map resetRoutes() { + LinkedHashMap newValue = locateRoutes(); + routes.set(newValue); + return newValue; + } + + protected LinkedHashMap locateRoutes() { LinkedHashMap routesMap = new LinkedHashMap<>(); // Add routes for discovery services by default diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulHandlerMapping.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulHandlerMapping.java index 56b3b298..14388cd7 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulHandlerMapping.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/ZuulHandlerMapping.java @@ -74,7 +74,7 @@ public class ZuulHandlerMapping extends AbstractUrlHandlerMapping implements @ResponseBody @ManagedOperation public Map reset() { - Map routes = routeLocator.getRoutes(); + Map routes = routeLocator.resetRoutes(); registerHandlers(routes); return routes; } diff --git a/spring-cloud-netflix-sidecar/src/test/resources/application.yml b/spring-cloud-netflix-sidecar/src/test/resources/application.yml index 7bba61ae..1c1e6956 100644 --- a/spring-cloud-netflix-sidecar/src/test/resources/application.yml +++ b/spring-cloud-netflix-sidecar/src/test/resources/application.yml @@ -20,9 +20,3 @@ endpoints: health: sensitive: false -zuul: - proxy: - route: - stores: /stores - customers: /customers -