1   package ch.qos.logback.access.sift;
2   
3   import java.io.IOException;
4   import java.io.OutputStream;
5   
6   import javax.servlet.ServletException;
7   import javax.servlet.http.HttpServletRequest;
8   import javax.servlet.http.HttpServletResponse;
9   
10  import org.mortbay.jetty.Handler;
11  import org.mortbay.jetty.HttpConnection;
12  import org.mortbay.jetty.Request;
13  import org.mortbay.jetty.handler.AbstractHandler;
14  import org.mortbay.util.ByteArrayISO8859Writer;
15  
16  import ch.qos.logback.access.jetty.JettyFixtureBase;
17  import ch.qos.logback.access.jetty.RequestLogImpl;
18  
19  public class JettyFixture extends JettyFixtureBase {
20  
21    Handler handler = new BasicHandler();
22  
23    public JettyFixture(RequestLogImpl impl, int port) {
24      super(impl, port);
25    }
26  
27    @Override
28    protected void buildContext() {
29      requestLogImpl.start();
30    }
31  
32    @Override
33    protected Handler getHandler() {
34      return handler;
35    }
36  
37    class BasicHandler extends AbstractHandler {
38      public void handle(String target, HttpServletRequest request,
39          HttpServletResponse response, int dispatch) throws IOException,
40          ServletException {
41  
42        // String requestContent = Util.readToString(request.getInputStream());
43        // System.out.println("request content: " + requestContent);
44  
45        OutputStream out = response.getOutputStream();
46        ByteArrayISO8859Writer writer = new ByteArrayISO8859Writer();
47        writer.write("hello world");
48        writer.flush();
49        response.setContentLength(writer.size());
50        writer.writeTo(out);
51        out.flush();
52  
53        Request base_request = (request instanceof Request) ? (Request) request
54            : HttpConnection.getCurrentConnection().getRequest();
55        base_request.setHandled(true);
56  
57      }
58    }
59  }