Skip to content

Commit ec79f14

Browse files
committed
Drop AbstractJettyServletWebServerFactoryTests
Drop `AbstractJettyServletWebServerFactoryTests` and merge the existing code into `JettyServletWebServerFactoryTests`.
1 parent cf9156e commit ec79f14

File tree

2 files changed

+86
-123
lines changed

2 files changed

+86
-123
lines changed

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/AbstractJettyServletWebServerFactoryTests.java

Lines changed: 0 additions & 122 deletions
This file was deleted.

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactoryTests.java

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@
1818

1919
import java.lang.reflect.Method;
2020
import java.net.InetAddress;
21+
import java.nio.charset.Charset;
2122
import java.time.Duration;
2223
import java.util.Arrays;
2324
import java.util.Collection;
2425
import java.util.Collections;
2526
import java.util.EventListener;
27+
import java.util.Locale;
28+
import java.util.Map;
2629
import java.util.concurrent.ExecutionException;
2730
import java.util.concurrent.Future;
2831
import java.util.concurrent.atomic.AtomicReference;
@@ -38,6 +41,7 @@
3841
import org.apache.http.client.HttpClient;
3942
import org.apache.http.conn.HttpHostConnectException;
4043
import org.apache.http.impl.client.HttpClients;
44+
import org.apache.jasper.servlet.JspServlet;
4145
import org.awaitility.Awaitility;
4246
import org.eclipse.jetty.server.Connector;
4347
import org.eclipse.jetty.server.Handler;
@@ -48,6 +52,7 @@
4852
import org.eclipse.jetty.server.handler.HandlerCollection;
4953
import org.eclipse.jetty.server.handler.HandlerWrapper;
5054
import org.eclipse.jetty.servlet.ErrorPageErrorHandler;
55+
import org.eclipse.jetty.servlet.ServletHolder;
5156
import org.eclipse.jetty.util.ssl.SslContextFactory;
5257
import org.eclipse.jetty.util.thread.QueuedThreadPool;
5358
import org.eclipse.jetty.util.thread.ThreadPool;
@@ -57,11 +62,15 @@
5762
import org.junit.jupiter.api.Test;
5863
import org.mockito.InOrder;
5964

65+
import org.springframework.boot.testsupport.system.CapturedOutput;
66+
import org.springframework.boot.web.server.Compression;
6067
import org.springframework.boot.web.server.GracefulShutdownResult;
68+
import org.springframework.boot.web.server.PortInUseException;
6169
import org.springframework.boot.web.server.Shutdown;
6270
import org.springframework.boot.web.server.Ssl;
6371
import org.springframework.boot.web.server.WebServerException;
6472
import org.springframework.boot.web.servlet.server.AbstractServletWebServerFactory;
73+
import org.springframework.boot.web.servlet.server.AbstractServletWebServerFactoryTests;
6574
import org.springframework.util.ReflectionUtils;
6675

6776
import static org.assertj.core.api.Assertions.assertThat;
@@ -78,7 +87,69 @@
7887
* @author Andy Wilkinson
7988
* @author Henri Kerola
8089
*/
81-
class JettyServletWebServerFactoryTests extends AbstractJettyServletWebServerFactoryTests {
90+
class JettyServletWebServerFactoryTests extends AbstractServletWebServerFactoryTests {
91+
92+
@Override
93+
protected JettyServletWebServerFactory getFactory() {
94+
return new JettyServletWebServerFactory(0);
95+
}
96+
97+
@Override
98+
protected void addConnector(int port, AbstractServletWebServerFactory factory) {
99+
((JettyServletWebServerFactory) factory).addServerCustomizers((server) -> {
100+
ServerConnector connector = new ServerConnector(server);
101+
connector.setPort(port);
102+
server.addConnector(connector);
103+
});
104+
}
105+
106+
@Override
107+
protected JspServlet getJspServlet() throws Exception {
108+
WebAppContext context = findWebAppContext((JettyWebServer) this.webServer);
109+
ServletHolder holder = context.getServletHandler().getServlet("jsp");
110+
if (holder == null) {
111+
return null;
112+
}
113+
holder.start();
114+
holder.initialize();
115+
return (JspServlet) holder.getServlet();
116+
}
117+
118+
@Override
119+
protected Map<String, String> getActualMimeMappings() {
120+
WebAppContext context = findWebAppContext((JettyWebServer) this.webServer);
121+
return context.getMimeTypes().getMimeMap();
122+
}
123+
124+
@Override
125+
protected Charset getCharset(Locale locale) {
126+
WebAppContext context = findWebAppContext((JettyWebServer) this.webServer);
127+
String charsetName = context.getLocaleEncoding(locale);
128+
return (charsetName != null) ? Charset.forName(charsetName) : null;
129+
}
130+
131+
@Override
132+
protected void handleExceptionCausedByBlockedPortOnPrimaryConnector(RuntimeException ex, int blockedPort) {
133+
assertThat(ex).isInstanceOf(PortInUseException.class);
134+
assertThat(((PortInUseException) ex).getPort()).isEqualTo(blockedPort);
135+
}
136+
137+
@Override
138+
protected void handleExceptionCausedByBlockedPortOnSecondaryConnector(RuntimeException ex, int blockedPort) {
139+
handleExceptionCausedByBlockedPortOnPrimaryConnector(ex, blockedPort);
140+
}
141+
142+
@Test
143+
void contextPathIsLoggedOnStartupWhenCompressionIsEnabled(CapturedOutput output) {
144+
AbstractServletWebServerFactory factory = getFactory();
145+
factory.setContextPath("/custom");
146+
Compression compression = new Compression();
147+
compression.setEnabled(true);
148+
factory.setCompression(compression);
149+
this.webServer = factory.getWebServer(exampleServletRegistration());
150+
this.webServer.start();
151+
assertThat(output).containsOnlyOnce("with context path '/custom'");
152+
}
82153

83154
@Test
84155
protected void correctVersionOfJettyUsed() {
@@ -438,6 +509,20 @@ public void configure(WebAppContext context) throws Exception {
438509
assertThat(context.getErrorHandler()).isInstanceOf(CustomErrorHandler.class);
439510
}
440511

512+
private WebAppContext findWebAppContext(JettyWebServer webServer) {
513+
return findWebAppContext(webServer.getServer().getHandler());
514+
}
515+
516+
private WebAppContext findWebAppContext(Handler handler) {
517+
if (handler instanceof WebAppContext) {
518+
return (WebAppContext) handler;
519+
}
520+
if (handler instanceof HandlerWrapper) {
521+
return findWebAppContext(((HandlerWrapper) handler).getHandler());
522+
}
523+
throw new IllegalStateException("No WebAppContext found");
524+
}
525+
441526
private static class CustomErrorHandler extends ErrorPageErrorHandler {
442527

443528
}

0 commit comments

Comments
 (0)