diff --git a/pom.xml b/pom.xml
index bbd67ad66..3dfb127fd 100755
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.jenkins-ci.plugins
plugin
- 5.2
+ 5.9
@@ -39,7 +39,7 @@
scm:git:https://github.com/${gitHubRepo}.git
scm:git:git@github.com:${gitHubRepo}.git
https://github.com/${gitHubRepo}
- v1.42.0
+ ${scmTag}
JIRA
@@ -52,7 +52,7 @@
jenkinsci/${project.artifactId}-plugin
2.479
- ${jenkins.baseline}.1
+ ${jenkins.baseline}.3
false
v@{project.version}
true
@@ -206,7 +206,7 @@
io.jenkins.tools.bom
bom-${jenkins.baseline}.x
- 3559.vb_5b_81183b_d23
+ 4488.v7fe26526366e
import
pom
diff --git a/src/main/java/org/jenkinsci/plugins/github/internal/GitHubClientCacheOps.java b/src/main/java/org/jenkinsci/plugins/github/internal/GitHubClientCacheOps.java
index 6fcaf6913..7ea4b69a3 100644
--- a/src/main/java/org/jenkinsci/plugins/github/internal/GitHubClientCacheOps.java
+++ b/src/main/java/org/jenkinsci/plugins/github/internal/GitHubClientCacheOps.java
@@ -5,7 +5,6 @@
import com.google.common.base.Predicate;
import com.google.common.hash.Hashing;
import edu.umd.cs.findbugs.annotations.NonNull;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import okhttp3.Cache;
import org.apache.commons.io.FileUtils;
import org.jenkinsci.plugins.github.GitHubPlugin;
@@ -96,7 +95,6 @@ public static Path getBaseCacheDir() {
*
* @param configs active server configs to exclude caches from cleanup
*/
- @SuppressFBWarnings(value = "RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE")
public static void clearRedundantCaches(List configs) {
Path baseCacheDir = getBaseCacheDir();
diff --git a/src/test/java/org/jenkinsci/plugins/github/config/GitHubServerConfigIntegrationTest.java b/src/test/java/org/jenkinsci/plugins/github/config/GitHubServerConfigIntegrationTest.java
index 0f04a2aa8..7c78beb30 100644
--- a/src/test/java/org/jenkinsci/plugins/github/config/GitHubServerConfigIntegrationTest.java
+++ b/src/test/java/org/jenkinsci/plugins/github/config/GitHubServerConfigIntegrationTest.java
@@ -5,18 +5,16 @@
import com.cloudbees.plugins.credentials.CredentialsScope;
import com.cloudbees.plugins.credentials.CredentialsStore;
import com.cloudbees.plugins.credentials.domains.Domain;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+import net.sf.json.JSONObject;
import org.htmlunit.HttpMethod;
import org.htmlunit.Page;
import org.htmlunit.WebRequest;
import hudson.security.GlobalMatrixAuthorizationStrategy;
import hudson.util.Secret;
import jenkins.model.Jenkins;
-import net.sf.json.JSONObject;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.ee9.servlet.DefaultServlet;
-import org.eclipse.jetty.ee9.servlet.ServletContextHandler;
-import org.eclipse.jetty.ee9.servlet.ServletHolder;
import org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl;
import org.junit.After;
import org.junit.Before;
@@ -26,10 +24,13 @@
import org.jvnet.hudson.test.Issue;
import org.jvnet.hudson.test.JenkinsRule;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -46,7 +47,7 @@ public class GitHubServerConfigIntegrationTest {
@Rule
public JenkinsRule j = new JenkinsRule();
- private Server server;
+ private HttpServer server;
private AttackerServlet attackerServlet;
private String attackerUrl;
@@ -57,35 +58,16 @@ public void setupServer() throws Exception {
@After
public void stopServer() {
- try {
- server.stop();
- } catch (Exception e) {
- e.printStackTrace();
- }
+ server.stop(1);
}
private void setupAttackerServer() throws Exception {
- this.server = new Server();
- ServerConnector serverConnector = new ServerConnector(this.server);
- server.addConnector(serverConnector);
-
- ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
- context.setContextPath("/*");
-
+ this.server = HttpServer.create(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0);
this.attackerServlet = new AttackerServlet();
- ServletHolder servletHolder = new ServletHolder(attackerServlet);
- context.addServlet(servletHolder, "/*");
-
- server.setHandler(context);
-
- server.start();
-
- String host = serverConnector.getHost();
- if (host == null) {
- host = "localhost";
- }
-
- this.attackerUrl = "http://" + host + ":" + serverConnector.getLocalPort();
+ this.server.createContext("/user", this.attackerServlet);
+ this.server.start();
+ InetSocketAddress addr = this.server.getAddress();
+ this.attackerUrl = String.format("http://%s:%d", addr.getHostString(), addr.getPort());
}
@Test
@@ -153,25 +135,30 @@ private void setupCredentials(String credentialId, String secret) throws Excepti
store.addCredentials(domain, credentials);
}
- private static class AttackerServlet extends DefaultServlet {
+ private static class AttackerServlet implements HttpHandler {
public String secretCreds;
@Override
- protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
- switch (request.getRequestURI()) {
- case "/user":
- this.onUser(request, response);
- break;
+ public void handle(HttpExchange he) throws IOException {
+ if ("GET".equals(he.getRequestMethod())) {
+ this.onUser(he);
+ } else {
+ he.sendResponseHeaders(HttpURLConnection.HTTP_BAD_METHOD, -1);
}
}
- private void onUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
- secretCreds = request.getHeader("Authorization");
- response.getWriter().write(JSONObject.fromObject(
+ private void onUser(HttpExchange he) throws IOException {
+ secretCreds = he.getRequestHeaders().getFirst("Authorization");
+ String response = JSONObject.fromObject(
new HashMap() {{
put("login", "alice");
}}
- ).toString());
+ ).toString();
+ byte[] body = response.getBytes(StandardCharsets.UTF_8);
+ he.sendResponseHeaders(HttpURLConnection.HTTP_OK, body.length);
+ try (OutputStream os = he.getResponseBody()) {
+ os.write(body);
+ }
}
}
}