The contract in web-api does not spell out the requirement for patterns
to conform to servlet spec. Jetty implementation needs to ensure they
start with a '/' just like the OSGi implementation does.
JIRA: AAA-232
Change-Id: I34879163596872e4e497a13c3b60111a317feadd
Signed-off-by: OleksandrZharov <Oleksandr.Zharov@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
@Override
public synchronized Registration registerWebContext(final WebContext webContext) throws ServletException {
@Override
public synchronized Registration registerWebContext(final WebContext webContext) throws ServletException {
- String contextPathWithSlashPrefix = webContext.contextPath().startsWith("/")
- ? webContext.contextPath() : "/" + webContext.contextPath();
+ String contextPathWithSlashPrefix = ensureAbsolutePath(webContext.contextPath());
ServletContextHandler handler = new ServletContextHandler(contextHandlerCollection, contextPathWithSlashPrefix,
webContext.supportsSessions() ? ServletContextHandler.SESSIONS : ServletContextHandler.NO_SESSIONS);
ServletContextHandler handler = new ServletContextHandler(contextHandlerCollection, contextPathWithSlashPrefix,
webContext.supportsSessions() ? ServletContextHandler.SESSIONS : ServletContextHandler.NO_SESSIONS);
FilterHolder filterHolder = new FilterHolder(filter.filter());
filterHolder.setInitParameters(filter.initParams());
filter.urlPatterns().forEach(
FilterHolder filterHolder = new FilterHolder(filter.filter());
filterHolder.setInitParameters(filter.initParams());
filter.urlPatterns().forEach(
- urlPattern -> handler.addFilter(filterHolder, urlPattern, EnumSet.allOf(DispatcherType.class))
+ urlPattern -> handler.addFilter(filterHolder, ensureAbsolutePath(urlPattern),
+ EnumSet.allOf(DispatcherType.class))
// AKA <load-on-startup> 1
servletHolder.setInitOrder(1);
servlet.urlPatterns().forEach(
// AKA <load-on-startup> 1
servletHolder.setInitOrder(1);
servlet.urlPatterns().forEach(
- urlPattern -> handler.addServlet(servletHolder, urlPattern)
+ urlPattern -> handler.addServlet(servletHolder, ensureAbsolutePath(urlPattern))
}
contextHandlerCollection.removeHandler(handler);
}
}
contextHandlerCollection.removeHandler(handler);
}
+
+ private static String ensureAbsolutePath(final String path) {
+ return path.startsWith("/") ? path : "/" + path;
+ }