Ensure ZuulProperties.servletPath is applied to routes
Fixes gh-271, fixes gh-272
This commit is contained in:
@@ -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 {
|
||||
}
|
||||
|
||||
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();
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user