From 71bfc7de8e9fa80824f3cd33da04925ba0675fc2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 21:05:19 +0000 Subject: [PATCH 1/3] chore: align commons and jooby versions Agent-Logs-Url: https://github.com/killbill/killbill-plugin-framework-java/sessions/b2a3b3c0-6981-4f2b-bfa3-8ad51d3633f4 Co-authored-by: xsalefter <510438+xsalefter@users.noreply.github.com> --- pom.xml | 99 +++++++++++++++++-- .../billing/plugin/core/JoobyServlet.java | 8 +- .../billing/plugin/core/PluginServlet.java | 11 ++- .../plugin/core/resources/ServletSse.java | 8 +- .../core/resources/jooby/PluginApp.java | 2 +- 5 files changed, 104 insertions(+), 24 deletions(-) diff --git a/pom.xml b/pom.xml index 315964db..74250283 100644 --- a/pom.xml +++ b/pom.xml @@ -43,12 +43,74 @@ true spotbugs-exclude.xml + 1.12.0 + 7.0.0 + 2.1.1 + 2.0.1 + 5.0.0 + 11.0.24 + 0.27.0 0.40.13 + 21 4.9.8.3 + + + + com.google.inject + guice + ${guice.version} + + + jakarta.annotation + jakarta.annotation-api + ${jakarta.annotation-api.version} + + + jakarta.inject + jakarta.inject-api + ${jakarta.inject-api.version} + + + jakarta.servlet + jakarta.servlet-api + ${jakarta.servlet-api.version} + + + org.eclipse.jetty + jetty-alpn-server + ${jetty.version} + + + org.eclipse.jetty + jetty-http + ${jetty.version} + + + org.eclipse.jetty + jetty-io + ${jetty.version} + + + org.eclipse.jetty + jetty-server + ${jetty.version} + + + org.eclipse.jetty + jetty-util + ${jetty.version} + + + org.eclipse.jetty.http2 + http2-server + ${jetty.version} + + + com.fasterxml.jackson.core @@ -107,6 +169,14 @@ jakarta.activation-api runtime + + jakarta.annotation + jakarta.annotation-api + + + jakarta.inject + jakarta.inject-api + jakarta.servlet jakarta.servlet-api @@ -132,16 +202,9 @@ joda-money - org.jooby - jooby - - - org.jooby - jooby-jackson - - - org.jooby - jooby-servlet + org.kill-bill.commons + killbill-jooby + ${killbill-commons.version} org.jooq @@ -228,26 +291,31 @@ org.kill-bill.commons killbill-clock + ${killbill-commons.version} provided org.kill-bill.commons killbill-embeddeddb-common + ${killbill-commons.version} test org.kill-bill.commons killbill-embeddeddb-mysql + ${killbill-commons.version} test org.kill-bill.commons killbill-embeddeddb-postgresql + ${killbill-commons.version} test org.kill-bill.commons killbill-utils + ${killbill-commons.version} provided @@ -292,6 +360,17 @@ spotbugs-maven-plugin ${spotbugs-maven-plugin.version} + + org.apache.maven.plugins + maven-enforcer-plugin + + + org.codehaus.mojo + extra-enforcer-rules + ${extra-enforcer-rules.version} + + + org.apache.maven.plugins maven-jar-plugin diff --git a/src/main/java/org/killbill/billing/plugin/core/JoobyServlet.java b/src/main/java/org/killbill/billing/plugin/core/JoobyServlet.java index f7cf9c68..11d6314f 100644 --- a/src/main/java/org/killbill/billing/plugin/core/JoobyServlet.java +++ b/src/main/java/org/killbill/billing/plugin/core/JoobyServlet.java @@ -20,10 +20,10 @@ import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.jooby.Sse; import org.jooby.servlet.ServletServletRequest; diff --git a/src/main/java/org/killbill/billing/plugin/core/PluginServlet.java b/src/main/java/org/killbill/billing/plugin/core/PluginServlet.java index 2fa6ef52..58cbeaf0 100644 --- a/src/main/java/org/killbill/billing/plugin/core/PluginServlet.java +++ b/src/main/java/org/killbill/billing/plugin/core/PluginServlet.java @@ -26,11 +26,12 @@ import java.util.regex.Pattern; import javax.annotation.Nullable; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; + +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.joda.time.LocalDate; import org.joda.time.format.DateTimeFormat; diff --git a/src/main/java/org/killbill/billing/plugin/core/resources/ServletSse.java b/src/main/java/org/killbill/billing/plugin/core/resources/ServletSse.java index e0fe839c..9ba4b220 100644 --- a/src/main/java/org/killbill/billing/plugin/core/resources/ServletSse.java +++ b/src/main/java/org/killbill/billing/plugin/core/resources/ServletSse.java @@ -23,10 +23,10 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicBoolean; -import javax.servlet.AsyncContext; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServletResponse; import org.jooby.Sse; diff --git a/src/main/java/org/killbill/billing/plugin/core/resources/jooby/PluginApp.java b/src/main/java/org/killbill/billing/plugin/core/resources/jooby/PluginApp.java index 9d95a2f8..c95d16bf 100644 --- a/src/main/java/org/killbill/billing/plugin/core/resources/jooby/PluginApp.java +++ b/src/main/java/org/killbill/billing/plugin/core/resources/jooby/PluginApp.java @@ -18,7 +18,7 @@ package org.killbill.billing.plugin.core.resources.jooby; -import javax.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServlet; import org.jooby.Jooby; import org.jooby.json.Jackson; From 0084951d2681de4923ac0eafe6b90b7d708cf561 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 14 Apr 2026 21:07:07 +0000 Subject: [PATCH 2/3] chore: finish jakarta and jooby migration Agent-Logs-Url: https://github.com/killbill/killbill-plugin-framework-java/sessions/b2a3b3c0-6981-4f2b-bfa3-8ad51d3633f4 Co-authored-by: xsalefter <510438+xsalefter@users.noreply.github.com> --- pom.xml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/pom.xml b/pom.xml index 74250283..7dc88576 100644 --- a/pom.xml +++ b/pom.xml @@ -169,14 +169,6 @@ jakarta.activation-api runtime - - jakarta.annotation - jakarta.annotation-api - - - jakarta.inject - jakarta.inject-api - jakarta.servlet jakarta.servlet-api From 46c0d5666d825131cdf855d2516d8dd298b4635c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 15 Apr 2026 00:10:16 +0000 Subject: [PATCH 3/3] fix: address spotbugs migration feedback Agent-Logs-Url: https://github.com/killbill/killbill-plugin-framework-java/sessions/e93f35fb-7445-444e-8336-2f231ac81095 Co-authored-by: xsalefter <510438+xsalefter@users.noreply.github.com> --- pom.xml | 14 +++++--------- spotbugs-exclude.xml | 15 +++++++++++++++ .../billing/plugin/api/PluginProperties.java | 3 --- .../billing/plugin/util/http/SslUtils.java | 10 ++++++---- 4 files changed, 26 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 7dc88576..02fc13fc 100644 --- a/pom.xml +++ b/pom.xml @@ -137,10 +137,6 @@ com.fasterxml.jackson.datatype jackson-datatype-joda - - com.github.spotbugs - spotbugs-annotations - com.google.code.findbugs jsr305 @@ -193,11 +189,6 @@ org.joda joda-money - - org.kill-bill.commons - killbill-jooby - ${killbill-commons.version} - org.jooq jooq @@ -304,6 +295,11 @@ ${killbill-commons.version} test + + org.kill-bill.commons + killbill-jooby + ${killbill-commons.version} + org.kill-bill.commons killbill-utils diff --git a/spotbugs-exclude.xml b/spotbugs-exclude.xml index 40eaab96..9732c1e3 100644 --- a/spotbugs-exclude.xml +++ b/spotbugs-exclude.xml @@ -18,4 +18,19 @@ + + + + + + + + + + + + + + + diff --git a/src/main/java/org/killbill/billing/plugin/api/PluginProperties.java b/src/main/java/org/killbill/billing/plugin/api/PluginProperties.java index 515b16ca..6046d04c 100644 --- a/src/main/java/org/killbill/billing/plugin/api/PluginProperties.java +++ b/src/main/java/org/killbill/billing/plugin/api/PluginProperties.java @@ -33,8 +33,6 @@ import org.killbill.commons.utils.Strings; import org.killbill.commons.utils.collect.Iterables; -import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; - public abstract class PluginProperties { // Last one has precedence @@ -122,7 +120,6 @@ public static Iterable findPluginProperties(final Pattern keyPat .collect(Collectors.toUnmodifiableSet()); } - @SuppressFBWarnings("WMI_WRONG_MAP_ITERATOR") public static List buildPluginProperties(@Nullable final Map data) { if (data == null || data.isEmpty()) { return Collections.emptyList(); diff --git a/src/main/java/org/killbill/billing/plugin/util/http/SslUtils.java b/src/main/java/org/killbill/billing/plugin/util/http/SslUtils.java index 4cb079d5..6fff4dee 100644 --- a/src/main/java/org/killbill/billing/plugin/util/http/SslUtils.java +++ b/src/main/java/org/killbill/billing/plugin/util/http/SslUtils.java @@ -42,9 +42,7 @@ public void checkServerTrusted(final java.security.cert.X509Certificate[] certs, } } - private final SSLContext looseTrustManagerSSLContext = looseTrustManagerSSLContext(); - - private SSLContext looseTrustManagerSSLContext() { + private static SSLContext buildLooseTrustManagerSSLContext() { try { final SSLContext sslContext = SSLContext.getInstance("TLS"); sslContext.init(null, new TrustManager[]{new LooseTrustManager()}, new SecureRandom()); @@ -60,11 +58,15 @@ private static class SingletonHolder { public static final SslUtils instance = new SslUtils(); } + private static class LooseTrustManagerSSLContextHolder { + public static final SSLContext instance = buildLooseTrustManagerSSLContext(); + } + public static SslUtils getInstance() { return SingletonHolder.instance; } public SSLContext getSSLContext(final boolean acceptAnyCertificate) throws GeneralSecurityException { - return acceptAnyCertificate ? looseTrustManagerSSLContext : SSLContext.getDefault(); + return acceptAnyCertificate ? LooseTrustManagerSSLContextHolder.instance : SSLContext.getDefault(); } }