UndertowServer.java
    
    
    
    
    
        Home
            /
social                    /
core                    /
src                    /
main                    /
test                    /
java                    /
org                    /
keycloak                    /
social                    /
utils                    /
                    UndertowServer.java
    
    
            
            package org.keycloak.social.utils;
import io.undertow.Undertow;
import io.undertow.server.handlers.PathHandler;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.DeploymentManager;
import io.undertow.servlet.api.ServletContainer;
import javax.servlet.ServletException;
/**
 * @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
 */
public class UndertowServer {
    private PathHandler root;
    private ServletContainer container;
    private Undertow server;
    private String hostname;
    private int port;
    public UndertowServer(String hostname, int port) {
        this.hostname = hostname;
        this.port = port;
        root = new PathHandler();
        container = ServletContainer.Factory.newInstance();
    }
    public void start() {
        Undertow.Builder builder = Undertow.builder().addListener(port, hostname);
        server = builder.setHandler(root).build();
        server.start();
    }
    public void stop() {
        if (server != null) {
            server.stop();
            server = null;
        }
    }
    public void deploy(DeploymentInfo deploymentInfo) {
        DeploymentManager manager = container.addDeployment(deploymentInfo);
        manager.deploy();
        try {
            root.addPath(deploymentInfo.getContextPath(), manager.start());
        } catch (ServletException e) {
            throw new RuntimeException(e);
        }
    }
    public void undeploy(String deploymentName) {
        DeploymentManager deployment = container.getDeployment(deploymentName);
        try {
            deployment.stop();
        } catch (ServletException e) {
            throw new RuntimeException(e);
        }
    }
}