From 58105ec9bdb0a4cd3c35fdcb60e54d340e74413d Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Wed, 5 Jun 2024 15:32:25 -0700 Subject: [PATCH] Upgrade Jetty from 10.0.20 to 12.0.10 (EE 8) --- Jenkinsfile | 6 ++--- pom.xml | 26 ++++++++++++++----- .../benchmark/jmh/JmhBenchmarkState.java | 2 +- .../org/jvnet/hudson/test/HudsonTestCase.java | 16 ++++++++---- .../hudson/test/JavaNetReverseProxy.java | 4 +-- .../org/jvnet/hudson/test/JenkinsRule.java | 16 ++++++++---- .../hudson/test/NoListenerConfiguration.java | 2 +- 7 files changed, 49 insertions(+), 23 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 0d5a8f53e..d66ae4f40 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -4,7 +4,7 @@ * allowing one to test against multiple Jenkins versions. */ buildPlugin(useContainerAgent: true, configurations: [ - [ platform: 'linux', jdk: '11' ], - [ platform: 'windows', jdk: '11' ], - [ platform: 'linux', jdk: '17', jenkins: '2.461' ], + [platform: 'linux', jdk: 17], + [platform: 'windows', jdk: 17], + [platform: 'linux', jdk: 21, jenkins: '2.461'], ]) diff --git a/pom.xml b/pom.xml index 09ef7f2f8..0e17d8cd8 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,9 @@ THE SOFTWARE. jenkinsci/${project.artifactId} --patch-module=java.base=${project.build.outputDirectory}/netbeans/harness/modules/ext/org-netbeans-insane-hook.jar --add-exports=java.base/org.netbeans.insane.hook=ALL-UNNAMED + 12.0.10 + + 17 @@ -69,7 +72,14 @@ THE SOFTWARE. org.eclipse.jetty jetty-bom - 10.0.21 + ${jetty.version} + pom + import + + + org.eclipse.jetty.ee8 + jetty-ee8-bom + ${jetty.version} pom import @@ -119,8 +129,8 @@ THE SOFTWARE. - org.eclipse.jetty - jetty-webapp + org.eclipse.jetty.ee8 + jetty-ee8-webapp @@ -130,11 +140,15 @@ THE SOFTWARE. - org.eclipse.jetty.websocket - - websocket-jetty-server + org.eclipse.jetty.ee8.websocket + jetty-ee8-websocket-jetty-server + + + jakarta.annotation + jakarta.annotation-api + org.slf4j slf4j-api diff --git a/src/main/java/jenkins/benchmark/jmh/JmhBenchmarkState.java b/src/main/java/jenkins/benchmark/jmh/JmhBenchmarkState.java index 8e90c078d..8ba0f8173 100644 --- a/src/main/java/jenkins/benchmark/jmh/JmhBenchmarkState.java +++ b/src/main/java/jenkins/benchmark/jmh/JmhBenchmarkState.java @@ -14,8 +14,8 @@ import javax.servlet.ServletContext; import jenkins.model.Jenkins; import jenkins.model.JenkinsLocationConfiguration; +import org.eclipse.jetty.ee8.webapp.WebAppContext; import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.webapp.WebAppContext; import org.jvnet.hudson.test.JavaNetReverseProxy; import org.jvnet.hudson.test.JenkinsRule; import org.jvnet.hudson.test.TemporaryDirectoryAllocator; diff --git a/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java b/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java index 416cb0cd8..ff5145725 100644 --- a/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java +++ b/src/main/java/org/jvnet/hudson/test/HudsonTestCase.java @@ -139,6 +139,10 @@ import org.acegisecurity.userdetails.UserDetails; import org.acegisecurity.userdetails.UsernameNotFoundException; import org.apache.commons.beanutils.PropertyUtils; +import org.eclipse.jetty.ee8.webapp.Configuration; +import org.eclipse.jetty.ee8.webapp.WebAppContext; +import org.eclipse.jetty.ee8.webapp.WebXmlConfiguration; +import org.eclipse.jetty.ee8.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.eclipse.jetty.http.HttpCompliance; import org.eclipse.jetty.http.UriCompliance; import org.eclipse.jetty.security.HashLoginService; @@ -150,10 +154,6 @@ import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.util.security.Password; import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.eclipse.jetty.webapp.Configuration; -import org.eclipse.jetty.webapp.WebAppContext; -import org.eclipse.jetty.webapp.WebXmlConfiguration; -import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.htmlunit.AjaxController; import org.htmlunit.AlertHandler; import org.htmlunit.BrowserVersion; @@ -550,7 +550,13 @@ protected ServletContext createWebServer() throws Exception { server = new Server(qtp); explodedWarDir = WarExploder.getExplodedDir(); - WebAppContext context = new WebAppContext(explodedWarDir.getPath(), contextPath); + WebAppContext context = new WebAppContext(explodedWarDir.getPath(), contextPath) { + @Override + protected ClassLoader configureClassLoader(ClassLoader loader) { + // Use flat classpath in tests + return loader; + } + }; context.setResourceBase(explodedWarDir.getPath()); context.setClassLoader(getClass().getClassLoader()); context.setConfigurations(new Configuration[]{new WebXmlConfiguration()}); diff --git a/src/main/java/org/jvnet/hudson/test/JavaNetReverseProxy.java b/src/main/java/org/jvnet/hudson/test/JavaNetReverseProxy.java index f59484e0a..ceab85e34 100644 --- a/src/main/java/org/jvnet/hudson/test/JavaNetReverseProxy.java +++ b/src/main/java/org/jvnet/hudson/test/JavaNetReverseProxy.java @@ -10,11 +10,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FileUtils; +import org.eclipse.jetty.ee8.servlet.ServletContextHandler; +import org.eclipse.jetty.ee8.servlet.ServletHolder; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.ContextHandlerCollection; -import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.util.thread.QueuedThreadPool; /** diff --git a/src/main/java/org/jvnet/hudson/test/JenkinsRule.java b/src/main/java/org/jvnet/hudson/test/JenkinsRule.java index 59a035384..50b587ca8 100644 --- a/src/main/java/org/jvnet/hudson/test/JenkinsRule.java +++ b/src/main/java/org/jvnet/hudson/test/JenkinsRule.java @@ -174,6 +174,10 @@ import net.sf.json.JSONObject; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.io.FileUtils; +import org.eclipse.jetty.ee8.webapp.Configuration; +import org.eclipse.jetty.ee8.webapp.WebAppContext; +import org.eclipse.jetty.ee8.webapp.WebXmlConfiguration; +import org.eclipse.jetty.ee8.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.eclipse.jetty.http.HttpCompliance; import org.eclipse.jetty.http.UriCompliance; import org.eclipse.jetty.security.HashLoginService; @@ -185,10 +189,6 @@ import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.util.security.Password; import org.eclipse.jetty.util.thread.QueuedThreadPool; -import org.eclipse.jetty.webapp.Configuration; -import org.eclipse.jetty.webapp.WebAppContext; -import org.eclipse.jetty.webapp.WebXmlConfiguration; -import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.htmlunit.AjaxController; import org.htmlunit.BrowserVersion; import org.htmlunit.DefaultCssErrorHandler; @@ -855,7 +855,13 @@ public static WebAppContext _createWebAppContext( qtp.setName("Jetty (JenkinsRule)"); Server server = new Server(qtp); - WebAppContext context = new WebAppContext(WarExploder.getExplodedDir().getPath(), contextPath); + WebAppContext context = new WebAppContext(WarExploder.getExplodedDir().getPath(), contextPath) { + @Override + protected ClassLoader configureClassLoader(ClassLoader loader) { + // Use flat classpath in tests + return loader; + } + }; context.setClassLoader(classLoader); context.setConfigurations(new Configuration[]{new WebXmlConfiguration()}); context.addBean(new NoListenerConfiguration(context)); diff --git a/src/main/java/org/jvnet/hudson/test/NoListenerConfiguration.java b/src/main/java/org/jvnet/hudson/test/NoListenerConfiguration.java index dee8de59b..2b6f7c9d3 100644 --- a/src/main/java/org/jvnet/hudson/test/NoListenerConfiguration.java +++ b/src/main/java/org/jvnet/hudson/test/NoListenerConfiguration.java @@ -26,8 +26,8 @@ import hudson.WebAppMain; import java.util.EventListener; import javax.servlet.ServletContextListener; +import org.eclipse.jetty.ee8.webapp.WebAppContext; import org.eclipse.jetty.util.component.AbstractLifeCycle; -import org.eclipse.jetty.webapp.WebAppContext; /** * Kills off the {@link WebAppMain} {@link ServletContextListener}.