1
2
3
4
5
6
7
8
9
10 package ch.qos.logback.access.jetty;
11
12 import org.mortbay.jetty.Connector;
13 import org.mortbay.jetty.Handler;
14 import org.mortbay.jetty.Server;
15 import org.mortbay.jetty.handler.ContextHandler;
16 import org.mortbay.jetty.handler.RequestLogHandler;
17 import org.mortbay.jetty.nio.SelectChannelConnector;
18
19 abstract public class JettyFixtureBase {
20 protected RequestLogImpl requestLogImpl;
21
22 private final int port;
23 Server server;
24 String url;
25
26 public JettyFixtureBase(RequestLogImpl impl, int port) {
27 requestLogImpl = impl;
28 this.port = port;
29 url = "http://localhost:" + port + "/";
30 }
31
32 public String getName() {
33 return "Jetty Test Setup";
34 }
35
36 public String getUrl() {
37 return url;
38 }
39
40 public void start() throws Exception {
41 server = new Server();
42 Connector connector = new SelectChannelConnector();
43 connector.setPort(port);
44 server.setConnectors(new Connector[] { connector });
45
46 ContextHandler context = new ContextHandler();
47 context.setContextPath("/");
48 context.setResourceBase(".");
49 context.setClassLoader(Thread.currentThread().getContextClassLoader());
50 server.addHandler(context);
51
52 RequestLogHandler requestLogHandler = new RequestLogHandler();
53 buildContext();
54 requestLogHandler.setRequestLog(requestLogImpl);
55 server.addHandler(requestLogHandler);
56
57 Handler handler = getHandler();
58 context.addHandler(handler);
59
60 server.start();
61 }
62
63 public void stop() throws Exception {
64
65 server.stop();
66 server = null;
67 requestLogImpl = null;
68 }
69
70 abstract protected void buildContext();
71 abstract protected Handler getHandler();
72 }