Newer
Older
Rick Herrick
committed
package org.nrg.xnat.initialization;
import org.apache.axis.transport.http.AdminServlet;
import org.apache.axis.transport.http.AxisHTTPSessionListener;
import org.apache.axis.transport.http.AxisServlet;
import org.apache.commons.lang3.StringUtils;
import org.apache.turbine.Turbine;
Rick Herrick
committed
import org.nrg.dcm.DicomSCPManager;
import org.nrg.xdat.servlet.XDATAjaxServlet;
import org.nrg.xdat.servlet.XDATServlet;
import org.nrg.xnat.restlet.servlet.XNATRestletServlet;
import org.nrg.xnat.restlet.util.UpdateExpirationCookie;
import org.nrg.xnat.security.XnatSessionEventPublisher;
Rick Herrick
committed
import org.springframework.web.filter.DelegatingFilterProxy;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
Rick Herrick
committed
import javax.servlet.*;
Rick Herrick
committed
import java.util.*;
public class XnatWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
public void onStartup(final ServletContext context) throws ServletException {
context.setInitParameter("org.restlet.component", "org.nrg.xnat.restlet.XNATComponent");
// If the context path is not empty (meaning this isn't the root application), then we'll get true: Restlet will
// autowire its calls. If the context path is empty (meaning that this is the root application), autowire will
// be false.
context.setInitParameter("org.restlet.autoWire", Boolean.toString(StringUtils.isNotEmpty(context.getContextPath())));
// Initialize the Spring stuff.
super.onStartup(context);
// Now initialize everything else.
Rick Herrick
committed
context.addFilter("springSecurityFilterChain", DelegatingFilterProxy.class).addMappingForUrlPatterns(null, false, "/*");
context.addFilter("updateExpirationCookie", UpdateExpirationCookie.class);
context.addListener(XnatSessionEventPublisher.class);
context.addListener(AxisHTTPSessionListener.class);
Rick Herrick
committed
Turbine.setTurbineServletConfig(new XnatTurbineConfig(context));
_context = context;
addServlet(XDATServlet.class, 1, "/xdat/*");
addServlet(Turbine.class, 2, "/app/*");
addServlet(XNATRestletServlet.class, 2, "/REST/*", "/data/*");
addServlet(XDATAjaxServlet.class, 3, "/ajax/*", "/servlet/XDATAjaxServlet", "/servlet/AjaxServlet");
addServlet(AxisServlet.class, 4, "/servlet/AxisServlet", "*.jws", "/services/*");
addServlet(AdminServlet.class, 5, "/servlet/AdminServlet");
}
@Override
protected String[] getServletMappings() {
return new String[] { "/admin/*", "/xapi/*" };
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[0];
}
private void addServlet(final Class<? extends Servlet> clazz, final int loadOnStartup, final String... mappings) {
final String name = StringUtils.uncapitalize(clazz.getSimpleName());
final ServletRegistration.Dynamic registration = _context.addServlet(name, clazz);
registration.setLoadOnStartup(loadOnStartup);
registration.addMapping(mappings);
}
Rick Herrick
committed
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
private static class XnatTurbineConfig implements ServletConfig {
public XnatTurbineConfig(final ServletContext context) {
_context = context;
}
@Override
public String getServletName() {
return "Turbine";
}
@Override
public ServletContext getServletContext() {
return _context;
}
@Override
public String getInitParameter(final String s) {
if (s.equals("properties")) {
return "WEB-INF/conf/TurbineResources.properties";
}
return null;
}
@Override
public Enumeration<String> getInitParameterNames() {
final List<String> parameters = new ArrayList<>();
parameters.add("properties");
return Collections.enumeration(parameters);
}
private ServletContext _context;
}
private ServletContext _context;
}