package org.jboss.resteasy.wadl;
import io.undertow.servlet.api.DeploymentInfo;
import io.undertow.servlet.api.ServletInfo;
import org.jboss.resteasy.plugins.server.servlet.HttpServlet30Dispatcher;
import org.jboss.resteasy.plugins.server.undertow.UndertowJaxrsServer;
import org.jboss.resteasy.spi.ResteasyDeployment;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import static io.undertow.servlet.Servlets.servlet;
/**
* Created by weli on 7/26/16.
*/
public class WadlUndertowConnector {
public UndertowJaxrsServer deployToServer(UndertowJaxrsServer server, Class<? extends Application> application) {
ApplicationPath appPath = application.getAnnotation(ApplicationPath.class);
String path = "/";
if (appPath != null) path = appPath.value();
return deployToServer(server, application, path);
}
public UndertowJaxrsServer deployToServer(UndertowJaxrsServer server, Class<? extends Application> application, String contextPath) {
ResteasyDeployment deployment = new ResteasyDeployment();
deployment.setApplicationClass(application.getName());
DeploymentInfo di = server.undertowDeployment(deployment);
ServletInfo resteasyWadlServlet = servlet("ResteasyWadlServlet", ResteasyWadlServlet.class)
.setAsyncSupported(false)
.setLoadOnStartup(1)
.addMapping("/application.xml");
di.addServlet(resteasyWadlServlet);
di.setClassLoader(application.getClassLoader());
di.setContextPath(contextPath);
di.setDeploymentName("Resteasy" + contextPath);
return server.deploy(di);
}
}