package org.jboss.pitbull.servlet.internal;
import org.jboss.pitbull.Connection;
import org.jboss.pitbull.RequestHeader;
import org.jboss.pitbull.server.handlers.stream.StreamRequestHandler;
import org.jboss.pitbull.server.handlers.stream.StreamedResponse;
import org.jboss.pitbull.internal.logging.Logger;
import org.jboss.pitbull.servlet.DeploymentServletContext;
import org.jboss.pitbull.servlet.DeploymentServletRegistration;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.InputStream;
/**
* @author <a href="mailto:bill@burkecentral.com">Bill Burke</a>
* @version $Revision: 1 $
*/
public class ServletRequestHandler implements StreamRequestHandler
{
protected DeploymentServletRegistration servlet;
protected DeploymentServletContext context;
protected static final Logger log = Logger.getLogger(ServletRequestHandler.class);
public ServletRequestHandler(DeploymentServletRegistration servlet, DeploymentServletContext context)
{
this.servlet = servlet;
this.context = context;
}
@Override
public void execute(Connection connection, RequestHeader requestHeader, InputStream input, StreamedResponse writer) throws IOException
{
HttpServletRequestImpl request = new HttpServletRequestImpl();
request.setConnection(connection);
request.setHeaderBlob(requestHeader);
request.setIs(input);
request.setContext(context);
HttpServletResponseImpl response = new HttpServletResponseImpl(writer);
try
{
HttpServlet instance = (HttpServlet) servlet.startRequest();
try
{
instance.service(request, response);
}
finally
{
servlet.endRequest();
}
}
catch (IOException e)
{
throw e;
}
catch (RuntimeException e)
{
throw e;
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
}