@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);
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(
- urlPattern -> handler.addServlet(servletHolder, urlPattern)
+ urlPattern -> handler.addServlet(servletHolder, ensureAbsolutePath(urlPattern))
);
});
}
contextHandlerCollection.removeHandler(handler);
}
+
+ private static String ensureAbsolutePath(final String path) {
+ return path.startsWith("/") ? path : "/" + path;
+ }
}