Skip to content

Commit 570d257

Browse files
committed
add Springboot4 to CI workflow
1 parent 54d3dc6 commit 570d257

File tree

17 files changed

+445
-66
lines changed

17 files changed

+445
-66
lines changed

.github/workflows/continuous-integration-workflow.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,18 @@ jobs:
8282
- name: Build with Spring Boot 3.3.x
8383
run: ./gha_build.sh springboot3 false false -Dspringboot.version=3.3.6 -Dspring.version=6.1.15 -Dspringsecurity.version=6.3.5 -Ddependency-check.skip=true
8484

85+
build_springboot4:
86+
name: Build and test SpringBoot 4
87+
runs-on: ubuntu-latest
88+
steps:
89+
- uses: actions/checkout@v3
90+
- name: Set up JDK 17
91+
uses: actions/setup-java@v3
92+
with:
93+
distribution: 'corretto'
94+
java-version: 17
95+
- name: Build latest
96+
run: ./gha_build.sh springboot4 true true
8597
# temporarily disabled as Struts is not released at the moment
8698
# build_struts2:
8799
# name: Build and test Struts

aws-serverless-java-container-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
<properties>
1919
<jaxrs.version>3.1.0</jaxrs.version>
20-
<servlet.version>6.0.0</servlet.version>
20+
<servlet.version>6.1.0</servlet.version>
2121
<jackson.version>3.0.2</jackson.version>
2222
</properties>
2323

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletResponse.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import jakarta.servlet.http.HttpServletRequest;
2929
import jakarta.servlet.http.HttpServletResponse;
3030
import jakarta.ws.rs.core.HttpHeaders;
31+
import java.nio.ByteBuffer;
3132
import jakarta.ws.rs.core.MediaType;
3233
import java.io.ByteArrayOutputStream;
3334
import java.io.IOException;
@@ -150,6 +151,16 @@ public void sendRedirect(String s) throws IOException {
150151
flushBuffer();
151152
}
152153

154+
@Override
155+
public void sendRedirect(String location, int sc, boolean clearBuffer) throws IOException {
156+
setStatus(sc);
157+
addHeader(HttpHeaders.LOCATION, location);
158+
if (clearBuffer) {
159+
resetBuffer();
160+
}
161+
flushBuffer();
162+
}
163+
153164

154165
@Override
155166
public void setDateHeader(String s, long l) {
@@ -297,6 +308,25 @@ public void write(int b) throws IOException {
297308
}
298309
}
299310

311+
@Override
312+
public void write(ByteBuffer b) throws IOException {
313+
try {
314+
if (b.hasArray()) {
315+
bodyOutputStream.write(b.array(), b.arrayOffset() + b.position(), b.remaining());
316+
b.position(b.limit());
317+
} else {
318+
byte[] buf = new byte[b.remaining()];
319+
b.get(buf);
320+
bodyOutputStream.write(buf);
321+
}
322+
} catch (Exception e) {
323+
log.error("Cannot write to output stream", e);
324+
if (listener != null) {
325+
listener.onError(e);
326+
}
327+
}
328+
}
329+
300330
@Override
301331
public void flush() throws IOException {
302332
flushBuffer();

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -607,12 +607,22 @@ private List<String> getHeaderValues(String key) {
607607

608608
if (request.getRequestSource() == RequestSource.API_GATEWAY) {
609609
if ("referer".equals(key.toLowerCase(Locale.ENGLISH))) {
610-
values.add(request.getRequestContext().getIdentity().getCaller());
611-
return values;
610+
if (request.getRequestContext() != null && request.getRequestContext().getIdentity() != null) {
611+
String caller = request.getRequestContext().getIdentity().getCaller();
612+
if (caller != null) {
613+
values.add(caller);
614+
return values;
615+
}
616+
}
612617
}
613618
if ("user-agent".equals(key.toLowerCase(Locale.ENGLISH))) {
614-
values.add(request.getRequestContext().getIdentity().getUserAgent());
615-
return values;
619+
if (request.getRequestContext() != null && request.getRequestContext().getIdentity() != null) {
620+
String userAgent = request.getRequestContext().getIdentity().getUserAgent();
621+
if (userAgent != null) {
622+
values.add(userAgent);
623+
return values;
624+
}
625+
}
616626
}
617627
}
618628

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsServletInputStream.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import jakarta.servlet.ServletInputStream;
2121
import java.io.IOException;
2222
import java.io.InputStream;
23+
import java.nio.ByteBuffer;
2324

2425
public class AwsServletInputStream extends ServletInputStream {
2526
private static Logger log = LoggerFactory.getLogger(AwsServletInputStream.class);
@@ -73,4 +74,23 @@ public int read()
7374
}
7475
return readByte;
7576
}
77+
78+
@Override
79+
public int read(ByteBuffer b) throws IOException {
80+
if (bodyStream == null || bodyStream instanceof NullInputStream) {
81+
return -1;
82+
}
83+
if (!b.hasRemaining()) {
84+
return 0;
85+
}
86+
byte[] buf = new byte[b.remaining()];
87+
int bytesRead = bodyStream.read(buf);
88+
if (bytesRead > 0) {
89+
b.put(buf, 0, bytesRead);
90+
}
91+
if (bytesRead == -1) {
92+
finished = true;
93+
}
94+
return bytesRead;
95+
}
7696
}

0 commit comments

Comments
 (0)