package org.jboss.as.test.integration.web.extension;
import javax.servlet.ServletContext;
import io.undertow.io.IoCallback;
import io.undertow.server.HandlerWrapper;
import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import io.undertow.servlet.ServletExtension;
import io.undertow.servlet.api.DeploymentInfo;
/**
* @author Stuart Douglas
*/
public class SimpleUndertowExtension implements ServletExtension {
static final String THIS_IS_NOT_A_SERVLET = "This is not a servlet";
@Override
public void handleDeployment(final DeploymentInfo deploymentInfo, final ServletContext servletContext) {
deploymentInfo.addInitialHandlerChainWrapper(new HandlerWrapper() {
@Override
public HttpHandler wrap(final HttpHandler handler) {
return new HttpHandler() {
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
if(Thread.currentThread() != exchange.getIoThread()) {
exchange.setStatusCode(500);
exchange.getResponseSender().send("Response was dispatched, not running in IO thread", IoCallback.END_EXCHANGE);
}
exchange.getResponseSender().send(THIS_IS_NOT_A_SERVLET, IoCallback.END_EXCHANGE);
}
};
}
});
}
}