Skip to content

Commit 75aa2dd

Browse files
committed
Inject server HTTP handler as a constructor arg.
1 parent 953ef02 commit 75aa2dd

File tree

10 files changed

+30
-61
lines changed

10 files changed

+30
-61
lines changed

java/server/src/org/openqa/selenium/grid/commands/Hub.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,7 @@ public Executable configure(String... args) {
121121
handler.addHandler(distributor);
122122
Router router = new Router(clientFactory, sessions, distributor);
123123

124-
Server<?> server = new JettyServer(serverOptions);
125-
server.setHandler(router);
124+
Server<?> server = new JettyServer(serverOptions, router);
126125
server.start();
127126

128127
BuildInfo info = new BuildInfo();

java/server/src/org/openqa/selenium/grid/commands/Standalone.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@ public Executable configure(String... args) {
158158
combinedHandler.addHandler(node);
159159
distributor.add(node);
160160

161-
Server<?> server = new JettyServer(new BaseServerOptions(config));
162-
server.setHandler(router);
161+
Server<?> server = new JettyServer(new BaseServerOptions(config), router);
163162
server.start();
164163

165164
BuildInfo info = new BuildInfo();

java/server/src/org/openqa/selenium/grid/distributor/httpd/DistributorServer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,7 @@ public Executable configure(String... args) {
116116

117117
BaseServerOptions serverOptions = new BaseServerOptions(config);
118118

119-
Server<?> server = new JettyServer(serverOptions);
120-
server.setHandler(distributor);
119+
Server<?> server = new JettyServer(serverOptions, distributor);
121120
server.start();
122121

123122
BuildInfo info = new BuildInfo();

java/server/src/org/openqa/selenium/grid/node/httpd/NodeServer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,7 @@ public Executable configure(String... args) {
124124

125125
LocalNode node = builder.build();
126126

127-
Server<?> server = new JettyServer(serverOptions);
128-
server.setHandler(node);
127+
Server<?> server = new JettyServer(serverOptions, node);
129128
server.start();
130129

131130
BuildInfo info = new BuildInfo();

java/server/src/org/openqa/selenium/grid/router/httpd/RouterServer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,7 @@ public Executable configure(String... args) {
111111

112112
Router router = new Router(clientFactory, sessions, distributor);
113113

114-
Server<?> server = new JettyServer(serverOptions);
115-
server.setHandler(router);
114+
Server<?> server = new JettyServer(serverOptions, router);
116115
server.start();
117116

118117
BuildInfo info = new BuildInfo();

java/server/src/org/openqa/selenium/grid/server/Server.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,12 @@
1818
package org.openqa.selenium.grid.server;
1919

2020
import org.openqa.selenium.grid.component.HasLifecycle;
21-
import org.openqa.selenium.remote.http.HttpHandler;
2221

23-
import javax.servlet.Servlet;
2422
import java.net.URL;
2523

2624
public interface Server<T extends Server> extends HasLifecycle<T> {
2725

2826
boolean isStarted();
2927

30-
T setHandler(HttpHandler handler);
31-
3228
URL getUrl();
3329
}

java/server/src/org/openqa/selenium/grid/sessionmap/httpd/SessionMapServer.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ public Executable configure(String... args) {
101101

102102
BaseServerOptions serverOptions = new BaseServerOptions(config);
103103

104-
Server<?> server = new JettyServer(serverOptions);
105-
server.setHandler(sessions);
104+
Server<?> server = new JettyServer(serverOptions, sessions);
106105
server.start();
107106

108107
BuildInfo info = new BuildInfo();

java/server/src/org/openqa/selenium/jetty/server/JettyServer.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ public class JettyServer implements Server<JettyServer> {
5959
private final org.eclipse.jetty.server.Server server;
6060
private final ServletContextHandler servletContextHandler;
6161
private final URL url;
62-
private HttpHandler handler;
62+
private final HttpHandler handler;
6363

64-
public JettyServer(BaseServerOptions options) {
64+
public JettyServer(BaseServerOptions options, HttpHandler handler) {
65+
this.handler = Objects.requireNonNull(handler, "Handler to use must be set.");
6566
int port = options.getPort() == 0 ? PortProber.findFreePort() : options.getPort();
6667

6768
String host = options.getHostname().orElseGet(() -> {
@@ -131,15 +132,6 @@ public JettyServer(BaseServerOptions options) {
131132
server.setConnectors(new Connector[]{http});
132133
}
133134

134-
@Override
135-
public JettyServer setHandler(HttpHandler handler) {
136-
if (server.isRunning()) {
137-
throw new IllegalStateException("You may not add a handler to a running server");
138-
}
139-
this.handler = Objects.requireNonNull(handler, "Handler to use must be set.");
140-
return this;
141-
}
142-
143135
@Override
144136
public boolean isStarted() {
145137
return server.isStarted();

java/server/test/org/openqa/selenium/grid/router/EndToEndTest.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,7 @@ private static Object[] createInMemory() throws URISyntaxException, MalformedURL
146146

147147
Router router = new Router(clientFactory, sessions, distributor);
148148

149-
Server<?> server = createServer();
150-
server.setHandler(router);
149+
Server<?> server = createServer(router);
151150
server.start();
152151

153152
return new Object[] { server, clientFactory };
@@ -164,8 +163,7 @@ private static Object[] createRemotes() throws URISyntaxException {
164163

165164
HttpClient.Factory clientFactory = HttpClient.Factory.createDefault();
166165

167-
Server<?> sessionServer = createServer();
168-
sessionServer.setHandler(localSessions);
166+
Server<?> sessionServer = createServer(localSessions);
169167
sessionServer.start();
170168

171169
HttpClient client = HttpClient.Factory.createDefault().createClient(sessionServer.getUrl());
@@ -175,8 +173,7 @@ private static Object[] createRemotes() throws URISyntaxException {
175173
bus,
176174
clientFactory,
177175
sessions);
178-
Server<?> distributorServer = createServer();
179-
distributorServer.setHandler(localDistributor);
176+
Server<?> distributorServer = createServer(localDistributor);
180177
distributorServer.start();
181178

182179
Distributor distributor = new RemoteDistributor(
@@ -190,24 +187,24 @@ private static Object[] createRemotes() throws URISyntaxException {
190187
.build();
191188
Server<?> nodeServer = new JettyServer(
192189
new BaseServerOptions(
193-
new MapConfig(ImmutableMap.of("server", ImmutableMap.of("port", port)))));
194-
nodeServer.setHandler(localNode);
190+
new MapConfig(ImmutableMap.of("server", ImmutableMap.of("port", port)))),
191+
localNode);
195192
nodeServer.start();
196193

197194
distributor.add(localNode);
198195

199196
Router router = new Router(clientFactory, sessions, distributor);
200-
Server<?> routerServer = createServer();
201-
routerServer.setHandler(router);
197+
Server<?> routerServer = createServer(router);
202198
routerServer.start();
203199

204200
return new Object[] { routerServer, clientFactory };
205201
}
206202

207-
private static Server<?> createServer() {
203+
private static Server<?> createServer(HttpHandler handler) {
208204
int port = PortProber.findFreePort();
209205
return new JettyServer(new BaseServerOptions(
210-
new MapConfig(ImmutableMap.of("server", ImmutableMap.of("port", port)))));
206+
new MapConfig(ImmutableMap.of("server", ImmutableMap.of("port", port)))),
207+
handler);
211208
}
212209

213210
private static SessionFactory createFactory(URI serverUri) {

java/server/test/org/openqa/selenium/grid/server/JettyServerTest.java

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,11 @@
2929
import org.openqa.selenium.remote.http.HttpRequest;
3030
import org.openqa.selenium.remote.http.HttpResponse;
3131

32-
import java.io.IOException;
3332
import java.net.URL;
3433

3534
import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR;
3635
import static java.net.HttpURLConnection.HTTP_OK;
3736
import static org.assertj.core.api.Assertions.assertThat;
38-
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
3937
import static org.assertj.core.api.Assertions.fail;
4038
import static org.junit.Assert.assertEquals;
4139
import static org.openqa.selenium.json.Json.MAP_TYPE;
@@ -49,8 +47,8 @@ public class JettyServerTest {
4947
private BaseServerOptions emptyOptions = new BaseServerOptions(new MapConfig(ImmutableMap.of()));
5048

5149
@Test
52-
public void baseServerStartsAndDoesNothing() throws IOException {
53-
Server<?> server = new JettyServer(emptyOptions).setHandler(req -> new HttpResponse()).start();
50+
public void baseServerStartsAndDoesNothing() {
51+
Server<?> server = new JettyServer(emptyOptions, req -> new HttpResponse()).start();
5452

5553
URL url = server.getUrl();
5654
HttpClient client = HttpClient.Factory.createDefault().createClient(url);
@@ -64,9 +62,10 @@ public void baseServerStartsAndDoesNothing() throws IOException {
6462
}
6563

6664
@Test
67-
public void shouldAllowAHandlerToBeRegistered() throws IOException {
68-
Server<?> server = new JettyServer(emptyOptions);
69-
server.setHandler(get("/cheese").to(() -> req -> new HttpResponse().setContent(utf8String("cheddar"))));
65+
public void shouldAllowAHandlerToBeRegistered() {
66+
Server<?> server = new JettyServer(
67+
emptyOptions,
68+
get("/cheese").to(() -> req -> new HttpResponse().setContent(utf8String("cheddar"))));
7069

7170
server.start();
7271
URL url = server.getUrl();
@@ -77,21 +76,12 @@ public void shouldAllowAHandlerToBeRegistered() throws IOException {
7776
}
7877

7978
@Test
80-
public void addHandlersOnceServerIsStartedIsAnError() {
81-
Server<?> server = new JettyServer(emptyOptions);
82-
server.setHandler(req -> new HttpResponse());
83-
server.start();
84-
85-
assertThatExceptionOfType(IllegalStateException.class).isThrownBy(
86-
() -> server.setHandler(get("/foo").to(() -> req -> new HttpResponse())));
87-
}
88-
89-
@Test
90-
public void exceptionsThrownByHandlersAreConvertedToAProperPayload() throws IOException {
91-
Server<?> server = new JettyServer(emptyOptions);
92-
server.setHandler(req -> {
93-
throw new UnableToSetCookieException("Yowza");
94-
});
79+
public void exceptionsThrownByHandlersAreConvertedToAProperPayload() {
80+
Server<?> server = new JettyServer(
81+
emptyOptions,
82+
req -> {
83+
throw new UnableToSetCookieException("Yowza");
84+
});
9585

9686
server.start();
9787
URL url = server.getUrl();

0 commit comments

Comments
 (0)