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();
}
}