|
|
|
@ -81,10 +81,6 @@ public class ApplicationManager {
|
|
|
|
|
|
|
|
|
|
ApplicationHandlers handlers = provider().handlersFor(context);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
extensions = provider().extensionsFor(context);
|
|
|
|
|
extensions.validate();
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
List<ApplicationLifecycleHandler> lifecycleHandlers = handlers.lifecycleHandlers();
|
|
|
|
|
List<RequestHandler> requestHandlers = handlers.requestHandlers();
|
|
|
|
@ -99,7 +95,7 @@ public class ApplicationManager {
|
|
|
|
|
registerExtension(extensions);
|
|
|
|
|
|
|
|
|
|
// then intercept them all
|
|
|
|
|
registerHandlers(requestHandlers);
|
|
|
|
|
registerHandlersAsFilter(requestHandlers);
|
|
|
|
|
|
|
|
|
|
// start lifecycle management
|
|
|
|
|
start(lifecycleHandlers);
|
|
|
|
@ -171,29 +167,18 @@ public class ApplicationManager {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void registerHandlers(List<RequestHandler> rqHandlers) {
|
|
|
|
|
private void registerHandlersAsFilter(List<RequestHandler> rqHandlers) {
|
|
|
|
|
|
|
|
|
|
ServletContext app = context.application();
|
|
|
|
|
|
|
|
|
|
// attach filters based on request pipeline to each servlet
|
|
|
|
|
Collection<? extends ServletRegistration> servlets = app.getServletRegistrations().values();
|
|
|
|
|
|
|
|
|
|
for (ServletRegistration servlet : servlets) {
|
|
|
|
|
|
|
|
|
|
String name = servlet.getName();
|
|
|
|
|
|
|
|
|
|
if (name.equals("default") || name.equals("jsp")) // skip page-resolving servlets
|
|
|
|
|
continue;
|
|
|
|
|
String appName = app.getContextPath().replace("/", "");
|
|
|
|
|
|
|
|
|
|
RequestManager requestFilter = new RequestManager(context, appName, rqHandlers);
|
|
|
|
|
|
|
|
|
|
for (String mapping : servlet.getMappings()) {
|
|
|
|
|
FilterRegistration.Dynamic filter = app.addFilter(appName + "-filter", requestFilter);
|
|
|
|
|
|
|
|
|
|
RequestManager requestFilter = new RequestManager(context, name, rqHandlers);
|
|
|
|
|
filter.addMappingForUrlPatterns(null, false, "/*");
|
|
|
|
|
|
|
|
|
|
FilterRegistration.Dynamic filter = app.addFilter(name + "-filter-"+mapping.replaceAll("/", ""), requestFilter);
|
|
|
|
|
|
|
|
|
|
filter.addMappingForUrlPatterns(null, false, mapping);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void registerExtension(List<ApplicationExtension> extensions) {
|
|
|
|
|