package com.constellio.app.modules.es.connectors.http.utils;
import java.io.File;
import java.util.EnumSet;
import javax.servlet.DispatcherType;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import com.constellio.sdk.tests.AbstractConstellioTest;
public class WebsitesUtils {
public static Server startWebsiteInState1() {
return startWebsite("animalsStateV1");
}
public static Server startWebsiteInState2() {
return startWebsite("animalsStateV2");
}
public static Server startWebsiteInState3WithDuplicates() {
return startWebsite("animalsStateV3_WithDuplicates");
}
public static Server startWebsiteInState4WithDuplicatesModified() {
return startWebsite("animalsStateV4_WithDuplicatesModified");
}
public static Server startWebsiteInState1Ntlm() {
String name = "animalsStateV1";
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.addFilter(NtlmAuthenticationFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
DefaultServlet defaultServlet = new DefaultServlet();
ServletHolder servletHolder = new ServletHolder("default", defaultServlet);
String ressourcePath = getFile(name).getAbsolutePath();
servletHolder.setInitParameter("resourceBase", ressourcePath);
context.addServlet(servletHolder, "/*");
Server server = startWebsite(name, context);
return server;
}
public static Server startWebsiteInState5() {
return startWebsite("animalsStateV5");
}
public static Server startWebsite(String name, Handler... handlers) {
File file = getFile(name);
return startWebsite(file, handlers);
}
public static Server startWebsite(File file, Handler... handlers) {
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(4242);
server.addConnector(connector);
ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setDirectoriesListed(true);
resourceHandler.setWelcomeFiles(new String[] { "index.html" });
resourceHandler.setResourceBase(file.getAbsolutePath());
HandlerList serverHandlers = new HandlerList();
for (Handler paramHandler : handlers) {
serverHandlers.addHandler(paramHandler);
}
serverHandlers.addHandler(resourceHandler);
server.setHandler(serverHandlers);
try {
server.start();
} catch (Exception e) {
throw new RuntimeException(e);
}
return server;
}
private static File getFile(String name) {
File resourcesDir = AbstractConstellioTest.getResourcesDir();
String pathInResourcesDir = WebsitesUtils.class.getName().replace(".", File.separator) + File.separator + name;
return new File(resourcesDir, pathInResourcesDir);
}
}