Skip to content

Commit 11c2d22

Browse files
authored
Merge pull request #1111 from sigstore/jetty-12
fix(deps): Migrate conformance servers from Jetty 11 to Jetty 12
2 parents 4662ba9 + e9a54fd commit 11c2d22

File tree

4 files changed

+54
-66
lines changed

4 files changed

+54
-66
lines changed

sigstore-cli/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ dependencies {
1818
implementation(platform("com.google.oauth-client:google-oauth-client-bom:1.39.0"))
1919
implementation("com.google.oauth-client:google-oauth-client")
2020

21-
implementation("org.eclipse.jetty:jetty-server:11.0.26")
22-
implementation("org.eclipse.jetty:jetty-servlet:11.0.26")
21+
implementation("org.eclipse.jetty:jetty-server:12.1.4")
2322

2423
implementation("org.slf4j:slf4j-simple:2.0.17")
2524

sigstore-cli/src/main/java/dev/sigstore/cli/ConformanceServer.java

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@
1616
package dev.sigstore.cli;
1717

1818
import com.google.gson.Gson;
19-
import jakarta.servlet.ServletException;
20-
import jakarta.servlet.http.HttpServletRequest;
21-
import jakarta.servlet.http.HttpServletResponse;
2219
import java.io.ByteArrayOutputStream;
2320
import java.io.IOException;
2421
import java.io.InputStream;
25-
import java.io.OutputStream;
2622
import java.io.PrintStream;
2723
import java.nio.charset.StandardCharsets;
2824
import java.nio.file.Path;
2925
import java.nio.file.Paths;
3026
import java.util.Map;
27+
import org.eclipse.jetty.http.HttpHeader;
28+
import org.eclipse.jetty.io.Content;
29+
import org.eclipse.jetty.server.Handler;
3130
import org.eclipse.jetty.server.Request;
31+
import org.eclipse.jetty.server.Response;
3232
import org.eclipse.jetty.server.Server;
33-
import org.eclipse.jetty.server.handler.AbstractHandler;
33+
import org.eclipse.jetty.util.Callback;
3434

3535
public class ConformanceServer {
3636

@@ -49,30 +49,30 @@ public static void main(String[] args) throws Exception {
4949
server.join();
5050
}
5151

52-
public static class ConformanceHandler extends AbstractHandler {
52+
public static class ConformanceHandler extends Handler.Abstract {
5353
@Override
54-
public void handle(
55-
String target,
56-
Request baseRequest,
57-
HttpServletRequest request,
58-
HttpServletResponse response)
59-
throws IOException, ServletException {
60-
if ("/".equals(target)) {
61-
handleHealthCheck(response);
62-
baseRequest.setHandled(true);
63-
} else if ("/execute".equals(target) && "POST".equals(request.getMethod())) {
64-
handleExecute(request, response);
65-
baseRequest.setHandled(true);
54+
public boolean handle(Request request, Response response, Callback callback)
55+
throws IOException {
56+
if ("/".equals(request.getHttpURI().getPath())) {
57+
handleHealthCheck(response, callback);
58+
return true;
59+
} else if ("/execute".equals(request.getHttpURI().getPath())
60+
&& "POST".equals(request.getMethod())) {
61+
handleExecute(request, response, callback);
62+
return true;
6663
}
64+
return false;
6765
}
6866
}
6967

70-
private static void handleExecute(HttpServletRequest request, HttpServletResponse response)
71-
throws IOException {
68+
private static void handleExecute(Request request, Response response, Callback callback) {
7269
ExecuteRequest executeRequest;
73-
try (InputStream is = request.getInputStream()) {
70+
try (InputStream is = Content.Source.asInputStream(request)) {
7471
String requestBody = new String(is.readAllBytes(), StandardCharsets.UTF_8);
7572
executeRequest = GSON.fromJson(requestBody, ExecuteRequest.class);
73+
} catch (IOException e) {
74+
callback.failed(e);
75+
return;
7676
}
7777

7878
// Tests should not be run in parallel, to ensure orderly input/output
@@ -106,22 +106,17 @@ private static void handleExecute(HttpServletRequest request, HttpServletRespons
106106
"exitCode", exitCode);
107107
String jsonResponse = GSON.toJson(responseMap);
108108

109-
response.setStatus(HttpServletResponse.SC_OK);
110-
response.setContentType("application/json");
111-
byte[] responseBytes = jsonResponse.getBytes(StandardCharsets.UTF_8);
112-
response.setContentLength(responseBytes.length);
109+
response.getHeaders().put(HttpHeader.CONTENT_TYPE, "application/json");
110+
Content.Sink.write(response, true, jsonResponse, callback);
113111

114-
try (OutputStream os = response.getOutputStream()) {
115-
os.write(responseBytes);
116-
}
117112
} finally {
118113
System.setOut(originalOut);
119114
System.setErr(originalErr);
120115
}
121116
}
122117

123-
private static void handleHealthCheck(HttpServletResponse response) throws IOException {
124-
response.setStatus(HttpServletResponse.SC_OK);
125-
response.getWriter().println("OK");
118+
private static void handleHealthCheck(Response response, Callback callback) throws IOException {
119+
response.getHeaders().put(HttpHeader.CONTENT_TYPE, "text/plain");
120+
Content.Sink.write(response, true, "OK", callback);
126121
}
127122
}

tuf-cli/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ dependencies {
1818
implementation(platform("com.google.oauth-client:google-oauth-client-bom:1.39.0"))
1919
implementation("com.google.oauth-client:google-oauth-client")
2020

21-
implementation("org.eclipse.jetty:jetty-server:11.0.26")
22-
implementation("org.eclipse.jetty:jetty-servlet:11.0.26")
21+
implementation("org.eclipse.jetty:jetty-server:12.1.4")
2322

2423
implementation("org.slf4j:slf4j-simple:2.0.17")
2524

tuf-cli/src/main/java/dev/sigstore/tuf/cli/TufConformanceServer.java

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@
1616
package dev.sigstore.tuf.cli;
1717

1818
import com.google.gson.Gson;
19-
import jakarta.servlet.ServletException;
20-
import jakarta.servlet.http.HttpServletRequest;
21-
import jakarta.servlet.http.HttpServletResponse;
2219
import java.io.ByteArrayOutputStream;
2320
import java.io.IOException;
2421
import java.io.InputStream;
25-
import java.io.OutputStream;
2622
import java.io.PrintStream;
2723
import java.nio.charset.StandardCharsets;
2824
import java.util.Arrays;
2925
import java.util.List;
3026
import java.util.Map;
27+
import org.eclipse.jetty.http.HttpHeader;
28+
import org.eclipse.jetty.io.Content;
29+
import org.eclipse.jetty.server.Handler;
3130
import org.eclipse.jetty.server.Request;
31+
import org.eclipse.jetty.server.Response;
3232
import org.eclipse.jetty.server.Server;
33-
import org.eclipse.jetty.server.handler.AbstractHandler;
33+
import org.eclipse.jetty.util.Callback;
3434

3535
public class TufConformanceServer {
3636

@@ -53,29 +53,30 @@ public static void main(String[] args) throws Exception {
5353
server.join();
5454
}
5555

56-
public static class TufConformanceHandler extends AbstractHandler {
56+
public static class TufConformanceHandler extends Handler.Abstract {
5757
@Override
58-
public void handle(
59-
String target,
60-
Request baseRequest,
61-
HttpServletRequest request,
62-
HttpServletResponse response)
63-
throws IOException, ServletException {
64-
if ("/".equals(target)) {
65-
handleHealthCheck(response);
66-
} else if ("/execute".equals(target) && "POST".equals(request.getMethod())) {
67-
handleExecute(request, response);
58+
public boolean handle(Request request, Response response, Callback callback)
59+
throws IOException {
60+
if ("/".equals(request.getHttpURI().getPath())) {
61+
handleHealthCheck(response, callback);
62+
return true;
63+
} else if ("/execute".equals(request.getHttpURI().getPath())
64+
&& "POST".equals(request.getMethod())) {
65+
handleExecute(request, response, callback);
66+
return true;
6867
}
69-
baseRequest.setHandled(true);
68+
return false;
7069
}
7170
}
7271

73-
private static void handleExecute(HttpServletRequest request, HttpServletResponse response)
74-
throws IOException {
72+
private static void handleExecute(Request request, Response response, Callback callback) {
7573
ExecuteRequest executeRequest;
76-
try (InputStream is = request.getInputStream()) {
74+
try (InputStream is = Content.Source.asInputStream(request)) {
7775
String requestBody = new String(is.readAllBytes(), StandardCharsets.UTF_8);
7876
executeRequest = GSON.fromJson(requestBody, ExecuteRequest.class);
77+
} catch (IOException e) {
78+
callback.failed(e);
79+
return;
7980
}
8081

8182
// Tests should not be run in parallel, to ensure orderly input/output
@@ -106,14 +107,8 @@ private static void handleExecute(HttpServletRequest request, HttpServletRespons
106107
"exitCode", exitCode);
107108
String jsonResponse = GSON.toJson(responseMap);
108109

109-
response.setStatus(HttpServletResponse.SC_OK);
110-
response.setContentType("application/json");
111-
byte[] responseBytes = jsonResponse.getBytes(StandardCharsets.UTF_8);
112-
response.setContentLength(responseBytes.length);
113-
114-
try (OutputStream os = response.getOutputStream()) {
115-
os.write(responseBytes);
116-
}
110+
response.getHeaders().put(HttpHeader.CONTENT_TYPE, "application/json");
111+
Content.Sink.write(response, true, jsonResponse, callback);
117112
} finally {
118113
if (!debug) {
119114
System.setOut(originalOut);
@@ -122,8 +117,8 @@ private static void handleExecute(HttpServletRequest request, HttpServletRespons
122117
}
123118
}
124119

125-
private static void handleHealthCheck(HttpServletResponse response) throws IOException {
126-
response.setStatus(HttpServletResponse.SC_OK);
127-
response.getWriter().println("OK");
120+
private static void handleHealthCheck(Response response, Callback callback) throws IOException {
121+
response.getHeaders().put(HttpHeader.CONTENT_TYPE, "text/plain");
122+
Content.Sink.write(response, true, "OK", callback);
128123
}
129124
}

0 commit comments

Comments
 (0)