1 package com.github.searls.jasmine.server;
2
3 import org.eclipse.jetty.server.Connector;
4 import org.eclipse.jetty.server.Server;
5
6 public class ServerManager {
7
8 private static final int ANY_PORT = 0;
9
10 private final Server server;
11 private final Connector connector;
12 private final ResourceHandlerConfigurator configurator;
13
14 public ServerManager(Server server,
15 Connector connector,
16 ResourceHandlerConfigurator configurator) {
17 this.server = server;
18 this.connector = connector;
19 this.configurator = configurator;
20 }
21
22 public int start() throws Exception {
23 return this.startServer(ANY_PORT);
24 }
25
26 public void start(int port) throws Exception {
27 this.startServer(port);
28 }
29
30 private int startServer(int port) throws Exception {
31 connector.setPort(port);
32
33 this.server.setHandler(this.configurator.createHandler());
34 this.server.addConnector(connector);
35
36 this.server.start();
37
38 return connector.getLocalPort();
39 }
40
41 public void stop() throws Exception {
42 this.server.stop();
43 }
44
45 public void join() throws Exception {
46 this.server.join();
47 }
48 }