From b70caff340e54617db9f88ea64ae712830152372 Mon Sep 17 00:00:00 2001 From: Jonathan Lennox Date: Wed, 13 May 2026 11:40:28 -0400 Subject: [PATCH 1/3] Bump JVM target to Java 17. --- .github/workflows/maven.yml | 4 ++-- jicoco-config/pom.xml | 2 +- jicoco-health-checker/pom.xml | 4 ++-- jicoco-jetty/pom.xml | 4 ++-- jicoco-jwt/pom.xml | 4 ++-- jicoco-mediajson/pom.xml | 4 ++-- jicoco-metrics/pom.xml | 4 ++-- jicoco-mucclient/pom.xml | 4 ++-- jicoco-test-kotlin/pom.xml | 2 +- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 507b3e91..09c7d1a3 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -11,7 +11,7 @@ on: env: # Java version to use for the release - RELEASE_JAVA_VERSION: 11 + RELEASE_JAVA_VERSION: 17 jobs: test: @@ -19,7 +19,7 @@ jobs: strategy: matrix: - java: [ 11, 17, 21 ] + java: [ 17, 21 ] name: Java ${{ matrix.java }} diff --git a/jicoco-config/pom.xml b/jicoco-config/pom.xml index f29343a8..33e04338 100644 --- a/jicoco-config/pom.xml +++ b/jicoco-config/pom.xml @@ -105,7 +105,7 @@ - 11 + 17 diff --git a/jicoco-health-checker/pom.xml b/jicoco-health-checker/pom.xml index ee876a36..d8c72c37 100644 --- a/jicoco-health-checker/pom.xml +++ b/jicoco-health-checker/pom.xml @@ -76,7 +76,7 @@ - 11 + 17 @@ -108,7 +108,7 @@ - 11 + 17 -Xlint:all,-serial diff --git a/jicoco-jetty/pom.xml b/jicoco-jetty/pom.xml index f32ff613..5a80c2ce 100644 --- a/jicoco-jetty/pom.xml +++ b/jicoco-jetty/pom.xml @@ -233,7 +233,7 @@ - 11 + 17 @@ -265,7 +265,7 @@ - 11 + 17 -Xlint:all,-serial diff --git a/jicoco-jwt/pom.xml b/jicoco-jwt/pom.xml index aeaee832..576e7baf 100644 --- a/jicoco-jwt/pom.xml +++ b/jicoco-jwt/pom.xml @@ -116,7 +116,7 @@ - 11 + 17 @@ -150,7 +150,7 @@ - 11 + 17 -Xlint:all diff --git a/jicoco-mediajson/pom.xml b/jicoco-mediajson/pom.xml index bb7083e4..427e44ad 100644 --- a/jicoco-mediajson/pom.xml +++ b/jicoco-mediajson/pom.xml @@ -97,7 +97,7 @@ - 11 + 17 @@ -131,7 +131,7 @@ - 11 + 17 -Xlint:all diff --git a/jicoco-metrics/pom.xml b/jicoco-metrics/pom.xml index dd8356ae..fe1d9c7d 100644 --- a/jicoco-metrics/pom.xml +++ b/jicoco-metrics/pom.xml @@ -141,7 +141,7 @@ - 11 + 17 @@ -175,7 +175,7 @@ - 11 + 17 -Xlint:all diff --git a/jicoco-mucclient/pom.xml b/jicoco-mucclient/pom.xml index b0be935e..92cf1a88 100644 --- a/jicoco-mucclient/pom.xml +++ b/jicoco-mucclient/pom.xml @@ -158,7 +158,7 @@ - 11 + 17 @@ -190,7 +190,7 @@ - 11 + 17 -Xlint:all,-serial diff --git a/jicoco-test-kotlin/pom.xml b/jicoco-test-kotlin/pom.xml index 4075148e..bd08b7f2 100644 --- a/jicoco-test-kotlin/pom.xml +++ b/jicoco-test-kotlin/pom.xml @@ -90,7 +90,7 @@ - 11 + 17 From a2fedd6f3759918676d58bdb6a11b1d6049988f1 Mon Sep 17 00:00:00 2001 From: Jonathan Lennox Date: Wed, 13 May 2026 11:53:49 -0400 Subject: [PATCH 2/3] Update jetty and jersey. --- jicoco-jetty/pom.xml | 8 ++-- .../kotlin/org/jitsi/rest/JettyHelpers.kt | 45 ++++++++++++------- pom.xml | 4 +- 3 files changed, 36 insertions(+), 21 deletions(-) diff --git a/jicoco-jetty/pom.xml b/jicoco-jetty/pom.xml index 5a80c2ce..9362bad1 100644 --- a/jicoco-jetty/pom.xml +++ b/jicoco-jetty/pom.xml @@ -47,13 +47,13 @@ ${jetty.version} - org.eclipse.jetty - jetty-servlet + org.eclipse.jetty.ee10 + jetty-ee10-servlet ${jetty.version} - org.eclipse.jetty - jetty-servlets + org.eclipse.jetty.ee10 + jetty-ee10-servlets ${jetty.version} diff --git a/jicoco-jetty/src/main/kotlin/org/jitsi/rest/JettyHelpers.kt b/jicoco-jetty/src/main/kotlin/org/jitsi/rest/JettyHelpers.kt index 2cea3bb5..4bb33a67 100644 --- a/jicoco-jetty/src/main/kotlin/org/jitsi/rest/JettyHelpers.kt +++ b/jicoco-jetty/src/main/kotlin/org/jitsi/rest/JettyHelpers.kt @@ -18,16 +18,20 @@ package org.jitsi.rest import jakarta.servlet.DispatcherType +import org.eclipse.jetty.ee10.servlet.ServletContextHandler +import org.eclipse.jetty.ee10.servlet.ServletHolder +import org.eclipse.jetty.ee10.servlets.CrossOriginFilter import org.eclipse.jetty.http.HttpStatus +import org.eclipse.jetty.server.Handler import org.eclipse.jetty.server.HttpConfiguration import org.eclipse.jetty.server.HttpConnectionFactory +import org.eclipse.jetty.server.Request +import org.eclipse.jetty.server.Response import org.eclipse.jetty.server.SecureRequestCustomizer import org.eclipse.jetty.server.Server import org.eclipse.jetty.server.ServerConnector import org.eclipse.jetty.server.SslConnectionFactory -import org.eclipse.jetty.servlet.ServletContextHandler -import org.eclipse.jetty.servlet.ServletHolder -import org.eclipse.jetty.servlets.CrossOriginFilter +import org.eclipse.jetty.util.Callback import org.eclipse.jetty.util.ssl.SslContextFactory import java.nio.file.Paths import java.util.EnumSet @@ -39,15 +43,9 @@ import java.util.EnumSet fun createJettyServer(config: JettyBundleActivatorConfig): Server { val httpConfig = HttpConfiguration().apply { sendServerVersion = config.sendServerVersion - addCustomizer { _, _, request -> - if (request.method.equals("TRACE", ignoreCase = true)) { - request.isHandled = true - request.response.status = HttpStatus.METHOD_NOT_ALLOWED_405 - } - } } val server = Server().apply { - handler = ServletContextHandler() + handler = TraceBlockingHandler(ServletContextHandler()) } val connector = ServerConnector(server, HttpConnectionFactory(httpConfig)).apply { port = config.port @@ -83,7 +81,7 @@ fun createSecureJettyServer(config: JettyBundleActivatorConfig): Server { sendServerVersion = config.sendServerVersion } val server = Server().apply { - handler = ServletContextHandler() + handler = TraceBlockingHandler(ServletContextHandler()) } val connector = ServerConnector( @@ -114,11 +112,28 @@ fun createServer(config: JettyBundleActivatorConfig): Server { fun JettyBundleActivatorConfig.isEnabled(): Boolean = port != -1 || tlsPort != -1 -// Note: it's technically possible that this cast fails, but -// shouldn't happen in practice given that the above methods always install -// a ServletContextHandler handler. +/** + * A [Handler.Wrapper] that rejects HTTP TRACE requests with 405 Method Not Allowed, + * forwarding everything else to the wrapped [ServletContextHandler]. + */ +private class TraceBlockingHandler( + val servletContextHandler: ServletContextHandler +) : Handler.Wrapper(servletContextHandler) { + override fun handle(request: Request, response: Response, callback: Callback): Boolean { + if (request.method.equals("TRACE", ignoreCase = true)) { + Response.writeError(request, response, callback, HttpStatus.METHOD_NOT_ALLOWED_405) + return true + } + return super.handle(request, response, callback) + } +} + val Server.servletContextHandler: ServletContextHandler - get() = handler as ServletContextHandler + get() = when (val h = handler) { + is TraceBlockingHandler -> h.servletContextHandler + is ServletContextHandler -> h + else -> error("Unexpected server handler type: ${h?.javaClass?.name}") + } fun ServletContextHandler.enableCors(pathSpec: String = "/*") { addFilter(CrossOriginFilter::class.java, pathSpec, EnumSet.of(DispatcherType.REQUEST)).apply { diff --git a/pom.xml b/pom.xml index db910972..2143736f 100644 --- a/pom.xml +++ b/pom.xml @@ -66,8 +66,8 @@ 1.13.8 0.16.0 1.9.10 - 11.0.21 - 3.0.10 + 12.0.35 + 3.1.11 0.12.6 1.83 4.4.8-jitsi-4 From 9ef38ed343fd0670a96c25a3c7fc22d98bf39dce Mon Sep 17 00:00:00 2001 From: Jonathan Lennox Date: Wed, 13 May 2026 12:08:46 -0400 Subject: [PATCH 3/3] Pin Jetty version regardless of which version of Java is running maven. --- jicoco-jetty/pom.xml | 5 ----- pom.xml | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/jicoco-jetty/pom.xml b/jicoco-jetty/pom.xml index 9362bad1..9019d011 100644 --- a/jicoco-jetty/pom.xml +++ b/jicoco-jetty/pom.xml @@ -39,27 +39,22 @@ org.eclipse.jetty jetty-proxy - ${jetty.version} org.eclipse.jetty jetty-server - ${jetty.version} org.eclipse.jetty.ee10 jetty-ee10-servlet - ${jetty.version} org.eclipse.jetty.ee10 jetty-ee10-servlets - ${jetty.version} org.eclipse.jetty jetty-util - ${jetty.version} org.xeustechnologies diff --git a/pom.xml b/pom.xml index 2143736f..8b0ffffc 100644 --- a/pom.xml +++ b/pom.xml @@ -85,6 +85,26 @@ kotlin-stdlib-jdk8 ${kotlin.version} + + + org.eclipse.jetty + jetty-bom + ${jetty.version} + pom + import + + + org.eclipse.jetty.ee10 + jetty-ee10-bom + ${jetty.version} + pom + import +