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 { @@ -56,7 +56,13 @@ public class ProxyRouteLocator implements RouteLocator {
public ProxyRouteLocator(String servletPath, DiscoveryClient discovery,
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.properties = properties;
}
@ -89,17 +95,22 @@ public class ProxyRouteLocator implements RouteLocator { @@ -89,17 +95,22 @@ public class ProxyRouteLocator implements RouteLocator {
}
public ProxyRouteSpec getMatchingRoute(String path) {
log.info("Finding route for path: " + path);
String location = null;
String targetPath = null;
String id = null;
String prefix = this.properties.getPrefix();
log.debug("servletPath=" + this.servletPath);
if (StringUtils.hasText(this.servletPath) && !this.servletPath.equals("/")
&& path.startsWith(this.servletPath)) {
path = path.substring(this.servletPath.length());
}
log.debug("path=" + path);
Boolean retryable = this.properties.getRetryable();
for (Entry<String, ZuulRoute> entry : this.routes.get().entrySet()) {
String pattern = entry.getKey();
log.debug("Matching pattern:" + pattern);
if (this.pathMatcher.match(pattern, path)) {
ZuulRoute route = entry.getValue();
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; @@ -65,7 +65,7 @@ import static org.junit.Assert.assertEquals;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = FormZuulServletProxyApplication.class)
@WebAppConfiguration
@IntegrationTest({ "server.port:0", "zuul.routes.simple:/zuul/simple/**" })
@IntegrationTest({ "server.port:0", "zuul.routes.simple:/simple/**" })
@DirtiesContext
public class FormZuulServletProxyApplicationTests {

Loading…
Cancel
Save