package org.aksw.sparqlify.admin.web.main;
import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import org.glassfish.jersey.servlet.ServletContainer;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.request.RequestContextListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import org.tuckey.web.filters.urlrewrite.UrlRewriteFilter;
public class WebAppInitializer
implements WebApplicationInitializer
{
@Override
public void onStartup(ServletContext servletContext)
throws ServletException
{
//if(true) throw new RuntimeException("yay");
// Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(AppConfig.class);
//System.out.println("CONTEXTPATH " + servletContext.getContextPath());
// Manage the lifecycle of the root application context
servletContext.addListener(new ContextLoaderListener(rootContext));
servletContext.addListener(new RequestContextListener());
{
FilterRegistration.Dynamic fr = servletContext.addFilter("CorsFilter", new CorsFilter());
fr.addMappingForUrlPatterns(null, true, "/*");
fr.setAsyncSupported(true);
}
{
FilterRegistration.Dynamic fr = servletContext.addFilter("UrlRewriteFilter", new UrlRewriteFilter());
fr.setInitParameter("dispatcher", "REQUEST");
fr.setInitParameter("dispatcher", "FORWARD");
fr.addMappingForUrlPatterns(null, true, "/*");
fr.setAsyncSupported(true);
}
// Create the dispatcher servlet's Spring application context
AnnotationConfigWebApplicationContext dispatcherContext = new AnnotationConfigWebApplicationContext();
dispatcherContext.register(WebMvcConfig.class);
ServletRegistration.Dynamic adminServlet = servletContext.addServlet("sparqlify-admin-api", new ServletContainer());
// com.sun.jersey.config.property.packages
adminServlet.setInitParameter("jersey.config.server.provider.packages", "org.aksw.sparqlify.admin.web.api");
adminServlet.addMapping("/manager/*");
adminServlet.setAsyncSupported(true);
adminServlet.setLoadOnStartup(1);
ServletRegistration.Dynamic endpointServlet = servletContext.addServlet("sparqlify-endpoints", new ServletContainer());
endpointServlet.setInitParameter("jersey.config.server.provider.packages", "org.aksw.sparqlify.admin.web.endpoint");
endpointServlet.setLoadOnStartup(1);
endpointServlet.setAsyncSupported(true);
endpointServlet.addMapping("/services/*");
// Register and map the dispatcher servlet
ServletRegistration.Dynamic dispatcherServlet = servletContext.addServlet("sparqlify-dispatcher", new DispatcherServlet(dispatcherContext));
//dispatcherServlet.set
// dispatcherServlet.addMapping("");
dispatcherServlet.addMapping("*.do");
//dispatcherServlet.addMapping("/**");
dispatcherServlet.setLoadOnStartup(1);
}
}
//public class WebAppInitializer
// extends AbstractAnnotationConfigDispatcherServletInitializer
//{
//
// @Override
// protected Class<?>[] getRootConfigClasses() {
// return new Class<?>[] { AppConfig.class };
// }
//
// @Override
// protected Class<?>[] getServletConfigClasses() {
// return new Class<?>[] { WebMvcConfig.class };
// }
//
// @Override
// protected String[] getServletMappings() {
// return new String[] { "/" };
// }
// @Override
// protected Filter[] getServletFilters() {
//
// CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
// characterEncodingFilter.setEncoding("UTF-8");
//
// return new Filter[] { characterEncodingFilter, new SiteMeshFilter()};
// }
//public class WebAppInitializer
// implements WebApplicationInitializer
//{
// private static final Logger logger = LoggerFactory.getLogger(WebAppInitializer.class);
//
// @Override
// public void onStartup(ServletContext servletContext) {
// // Create the root appcontext
// AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
// rootContext.register(WebAppConfig.class);
// // since we registered RootConfig instead of passing it to the constructor
// rootContext.refresh();
//
// // Manage the lifecycle of the root appcontext
// servletContext.addListener(new ContextLoaderListener(rootContext));
// servletContext.setInitParameter("defaultHtmlEscape", "true");
//
// // now the config for the Dispatcher servlet
// AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
// mvcContext.register(WebMvcConfig.class);
//
// // The main Spring MVC servlet.
// ServletRegistration.Dynamic appServlet = servletContext.addServlet(
// "appServlet", new DispatcherServlet(mvcContext));
// appServlet.setLoadOnStartup(1);
// Set<String> mappingConflicts = appServlet.addMapping("/");
//
// if (!mappingConflicts.isEmpty()) {
// for (String s : mappingConflicts) {
// logger.error("Mapping conflict: " + s);
// }
// throw new IllegalStateException(
// "'appServlet' cannot be mapped to '/' under Tomcat versions <= 7.0.14");
// }
//
// WebApplicationContext appContext = null;
//
// ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
// "dispatcher", new DispatcherServlet(appContext));
// dispatcher.setLoadOnStartup(1);
// dispatcher.addMapping("/");
//
//
//// FilterRegistration.Dynamic fr = servletContext.addFilter(
//// "encodingFilter", new CharacterEncodingFilter());
//// fr.setInitParameter("encoding", "UTF-8");
//// fr.setInitParameter("forceEncoding", "true");
//// fr.addMappingForUrlPatterns(null, true, "/*");
// }
//}
//Set<String> mappingConflicts = appServlet.addMapping("/");
//
//if (!mappingConflicts.isEmpty()) {
// throw new IllegalStateException("'appServlet' cannot be mapped to '/' under Tomcat versions <= 7.0.14");
//}