Browse Source

Ensure ZuulProperties.servletPath is applied to routes

Fixes gh-271, fixes gh-272
pull/6/head
unknown 10 years ago committed by Dave Syer
parent
commit
76d0c018ee
  1. 13
      spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocator.java
  2. 2
      spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulServletProxyApplicationTests.java

13
spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/zuul/filters/ProxyRouteLocator.java

@ -56,7 +56,13 @@ public class ProxyRouteLocator implements RouteLocator {
public ProxyRouteLocator(String servletPath, DiscoveryClient discovery, public ProxyRouteLocator(String servletPath, DiscoveryClient discovery,
ZuulProperties properties) { ZuulProperties properties) {
this.servletPath = servletPath; if (StringUtils.hasText(servletPath)) { // a servletPath is passed explicitly
this.servletPath = servletPath;
} else {
//set Zuul servlet path
this.servletPath = properties.getServletPath() != null? properties.getServletPath() : "";
}
this.discovery = discovery; this.discovery = discovery;
this.properties = properties; this.properties = properties;
} }
@ -89,17 +95,22 @@ public class ProxyRouteLocator implements RouteLocator {
} }
public ProxyRouteSpec getMatchingRoute(String path) { public ProxyRouteSpec getMatchingRoute(String path) {
log.info("Finding route for path: " + path);
String location = null; String location = null;
String targetPath = null; String targetPath = null;
String id = null; String id = null;
String prefix = this.properties.getPrefix(); String prefix = this.properties.getPrefix();
log.debug("servletPath=" + this.servletPath);
if (StringUtils.hasText(this.servletPath) && !this.servletPath.equals("/") if (StringUtils.hasText(this.servletPath) && !this.servletPath.equals("/")
&& path.startsWith(this.servletPath)) { && path.startsWith(this.servletPath)) {
path = path.substring(this.servletPath.length()); path = path.substring(this.servletPath.length());
} }
log.debug("path=" + path);
Boolean retryable = this.properties.getRetryable(); Boolean retryable = this.properties.getRetryable();
for (Entry<String, ZuulRoute> entry : this.routes.get().entrySet()) { for (Entry<String, ZuulRoute> entry : this.routes.get().entrySet()) {
String pattern = entry.getKey(); String pattern = entry.getKey();
log.debug("Matching pattern:" + pattern);
if (this.pathMatcher.match(pattern, path)) { if (this.pathMatcher.match(pattern, path)) {
ZuulRoute route = entry.getValue(); ZuulRoute route = entry.getValue();
id = route.getId(); id = route.getId();

2
spring-cloud-netflix-core/src/test/java/org/springframework/cloud/netflix/zuul/FormZuulServletProxyApplicationTests.java

@ -65,7 +65,7 @@ import static org.junit.Assert.assertEquals;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = FormZuulServletProxyApplication.class) @SpringApplicationConfiguration(classes = FormZuulServletProxyApplication.class)
@WebAppConfiguration @WebAppConfiguration
@IntegrationTest({ "server.port:0", "zuul.routes.simple:/zuul/simple/**" }) @IntegrationTest({ "server.port:0", "zuul.routes.simple:/simple/**" })
@DirtiesContext @DirtiesContext
public class FormZuulServletProxyApplicationTests { public class FormZuulServletProxyApplicationTests {

Loading…
Cancel
Save