package com.uaihebert.uaimockserver.factory.undertow;
import com.uaihebert.uaimockserver.model.UaiWebSocketCallback;
import com.uaihebert.uaimockserver.server.UaiMockServerHandler;
import com.uaihebert.uaimockserver.servlet.UAiAngularMapServlet;
import com.uaihebert.uaimockserver.servlet.UaiCssMapServlet;
import com.uaihebert.uaimockserver.servlet.UaiCssServlet;
import com.uaihebert.uaimockserver.servlet.UaiJavascriptServlet;
import com.uaihebert.uaimockserver.servlet.UaiIndexServlet;
import com.uaihebert.uaimockserver.servlet.UaiPageServlet;
import com.uaihebert.uaimockserver.servlet.UaiRootConfigurationsServlet;
import com.uaihebert.uaimockserver.servlet.UaiRouteCloneServlet;
import com.uaihebert.uaimockserver.servlet.UaiRouteServlet;
import com.uaihebert.uaimockserver.util.HttpServerUtil;
import io.undertow.Handlers;
import io.undertow.server.HttpHandler;
import io.undertow.server.handlers.PathHandler;
import io.undertow.servlet.Servlets;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.DeploymentManager;
import javax.servlet.ServletException;
import static io.undertow.servlet.Servlets.servlet;
public final class PathHandlerFactory {
private static final String SERVLET_CONTEXT_PATH = "/uaiGui/";
private static final String WEB_SOCKET_CONTEXT_PATH = "/uaiGui-ws";
private PathHandlerFactory() {
}
public static PathHandler create() throws ServletException {
return Handlers.path(Handlers.redirect(SERVLET_CONTEXT_PATH))
.addPrefixPath(SERVLET_CONTEXT_PATH, createHtmlManager())
.addPrefixPath(WEB_SOCKET_CONTEXT_PATH, Handlers.websocket(new UaiWebSocketCallback()))
.addPrefixPath("/", new UaiMockServerHandler());
}
private static HttpHandler createHtmlManager() throws ServletException {
final DeploymentInfo deploymentInfo = Servlets.deployment()
.setClassLoader(HttpServerUtil.class.getClassLoader())
.setContextPath(SERVLET_CONTEXT_PATH)
.setDeploymentName("uaiMockServer.war")
.addServlets(
servlet("UaiIndexServlet", UaiIndexServlet.class).addMapping("/index"),
servlet("UaiPageServlet", UaiPageServlet.class).addMapping("/page"),
servlet("JavascriptServlet", UaiJavascriptServlet.class).addMapping("/javascript"),
servlet("CssServlet", UaiCssServlet.class).addMapping("/css"),
servlet("CssMapServlet", UaiCssMapServlet.class).addMapping("/bootstrap.css.map"),
servlet("AngularMapServlet", UAiAngularMapServlet.class).addMapping("/angular.js.map"),
servlet("UaiRouteServlet", UaiRouteServlet.class).addMapping("/uaiRoute"),
servlet("UaiRouteCloneServlet", UaiRouteCloneServlet.class).addMapping("/uaiRoute/clone"),
servlet("UaiRootConfigurationsServlet", UaiRootConfigurationsServlet.class).addMapping("/rootConfigurations")
);
final DeploymentManager manager = Servlets.defaultContainer().addDeployment(deploymentInfo);
manager.deploy();
return manager.start();
}
}