Skip to content

Commit 47e8fc9

Browse files
committed
Merge remote-tracking branch 'origin/main' into vpclattice-integ
# Conflicts: # pom.xml
2 parents eb1b7a4 + 67b8543 commit 47e8fc9

File tree

32 files changed

+209
-163
lines changed

32 files changed

+209
-163
lines changed

.github/dependabot.yml

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,35 @@ version: 2
77
updates:
88
- package-ecosystem: maven
99
directories:
10-
- "/"
11-
- "/samples/spring/pet-store"
12-
- "/samples/springboot3/pet-store"
13-
- "/samples/springboot3/alt-pet-store"
14-
- "/samples/springboot3/graphql-pet-store"
15-
- "/samples/springboot3/pet-store-native"
16-
- "/samples/jersey/pet-store"
10+
- "**/*"
11+
groups:
12+
jersey:
13+
patterns:
14+
- "org.glassfish.jersey.*:*"
15+
spring:
16+
patterns:
17+
- "org.springframework:*"
18+
slf4j:
19+
patterns:
20+
- "org.slf4j:*"
21+
junit:
22+
patterns:
23+
- "org.junit:*"
1724
schedule:
1825
interval: "weekly"
26+
open-pull-requests-limit: 20
1927
- package-ecosystem: gradle
2028
directories:
21-
- "/samples/spring/pet-store"
22-
- "/samples/springboot3/pet-store"
23-
- "/samples/springboot3/alt-pet-store"
24-
- "/samples/springboot3/pet-store-native"
25-
- "/samples/jersey/pet-store"
29+
- "**/*"
30+
groups:
31+
jersey:
32+
patterns:
33+
- "org.glassfish.jersey:*"
34+
spring:
35+
patterns:
36+
- "org.springframework:*"
37+
slf4j:
38+
patterns:
39+
- "org.slf4j:*"
2640
schedule:
2741
interval: "weekly"

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ on:
44
pull_request:
55
branches:
66
- main
7+
- 2.0.x
78
- 1.x
89
workflow_dispatch:
910

@@ -59,7 +60,7 @@ jobs:
5960
- name: Build latest
6061
run: ./gha_build.sh spring true true
6162
# - name: Build with Spring 6.0.x
62-
# run: ./gha_build.sh spring false false -Dspring.version=6.0.16 -Dspring-security.version=6.1.6 -Ddependency-check.skip=true
63+
# run: ./gha_build.sh spring false false -Dspring.version=6.0.16 -Dspring-security.version=6.1.10 -Ddependency-check.skip=true
6364

6465
build_springboot3:
6566
name: Build and test SpringBoot 3
@@ -75,7 +76,9 @@ jobs:
7576
run: ./gha_build.sh springboot3 true true
7677
# Build with additional supported versions https://spring.io/projects/spring-boot#support
7778
- name: Build with Spring Boot 3.1.x
78-
run: ./gha_build.sh springboot3 false false -Dspringboot.version=3.1.8 -Dspring.version=6.0.16 -Dspringsecurity.version=6.1.6 -Ddependency-check.skip=true
79+
run: ./gha_build.sh springboot3 false false -Dspringboot.version=3.1.12 -Dspring.version=6.0.21 -Dspringsecurity.version=6.1.9 -Ddependency-check.skip=true
80+
- name: Build with Spring Boot 3.2.x
81+
run: ./gha_build.sh springboot3 false false -Dspringboot.version=3.2.7 -Dspring.version=6.1.10 -Dspringsecurity.version=6.2.5 -Ddependency-check.skip=true
7982

8083
# temporarily disabled as Struts is not released at the moment
8184
# build_struts2:

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
<dependency>
6868
<groupId>org.springframework.security</groupId>
6969
<artifactId>spring-security-web</artifactId>
70-
<version>6.2.4</version>
70+
<version>6.3.1</version>
7171
<scope>test</scope>
7272
</dependency>
7373
</dependencies>
@@ -77,7 +77,7 @@
7777
<plugin>
7878
<groupId>org.apache.maven.plugins</groupId>
7979
<artifactId>maven-jar-plugin</artifactId>
80-
<version>3.4.1</version>
80+
<version>3.4.2</version>
8181
<executions>
8282
<execution>
8383
<goals>

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

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -335,23 +335,27 @@ public String getRemoteAddr() {
335335
if (request.getRequestContext() == null || request.getRequestContext().getIdentity() == null) {
336336
return "127.0.0.1";
337337
}
338-
if (request.getRequestContext().getElb() != null) {
339-
return request.getHeaders().get(CLIENT_IP_HEADER);
338+
if (request.getRequestSource().equals(RequestSource.ALB)) {
339+
return Objects.nonNull(request.getHeaders()) ?
340+
request.getHeaders().get(CLIENT_IP_HEADER) :
341+
request.getMultiValueHeaders().getFirst(CLIENT_IP_HEADER);
340342
}
341343
return request.getRequestContext().getIdentity().getSourceIp();
342344
}
343345

344346

345347
@Override
346348
public String getRemoteHost() {
347-
if (Objects.nonNull(request.getRequestContext().getElb())) {
348-
String hostHeader = request.getHeaders().get(HttpHeaders.HOST);
349-
350-
// the host header has the form host:port, so we split the string to get the host part
351-
return Arrays.asList(hostHeader.split(":")).get(0);
349+
String hostHeader;
350+
if (request.getRequestSource().equals(RequestSource.ALB)) {
351+
hostHeader = Objects.nonNull(request.getHeaders()) ?
352+
request.getHeaders().get(HttpHeaders.HOST) :
353+
request.getMultiValueHeaders().getFirst(HttpHeaders.HOST);
354+
} else {
355+
hostHeader = request.getMultiValueHeaders().getFirst(HttpHeaders.HOST);
352356
}
353-
354-
return request.getMultiValueHeaders().getFirst(HttpHeaders.HOST);
357+
// the host header has the form host:port, so we split the string to get the host part
358+
return Arrays.asList(hostHeader.split(":")).get(0);
355359
}
356360

357361

@@ -369,8 +373,11 @@ public Enumeration<Locale> getLocales() {
369373

370374
@Override
371375
public int getRemotePort() {
372-
if (Objects.nonNull(request.getRequestContext().getElb())) {
373-
String portHeader = request.getHeaders().get(PORT_HEADER_NAME);
376+
if (request.getRequestSource().equals(RequestSource.ALB)) {
377+
String portHeader;
378+
portHeader = Objects.nonNull(request.getHeaders()) ?
379+
request.getHeaders().get(PORT_HEADER_NAME) :
380+
request.getMultiValueHeaders().getFirst(PORT_HEADER_NAME);
374381
if (Objects.nonNull(portHeader)) {
375382
return Integer.parseInt(portHeader);
376383
}

aws-serverless-java-container-core/src/test/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequestTest.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,17 +658,31 @@ void serverName_albHostHeader_returnsHostHeader() {
658658
}
659659

660660
@Test
661-
void getRemoteHost_albHostHeader_returnsHostHeader() {
661+
void getRemoteHost_albHostHeader_singleValue_returnsHostHeader() {
662662
initAwsProxyHttpServletRequestTest("ALB");
663663
AwsProxyRequest proxyReq = new AwsProxyRequestBuilder("/test", "GET")
664664
.alb().build();
665+
proxyReq.setMultiValueHeaders(null);
665666
proxyReq.getHeaders().put(HttpHeaders.HOST, "testapi.us-east-1.elb.amazonaws.com");
666667
HttpServletRequest servletRequest = new AwsProxyHttpServletRequest(proxyReq, null, null);
667668

668669
String host = servletRequest.getRemoteHost();
669670
assertEquals("testapi.us-east-1.elb.amazonaws.com", host);
670671
}
671672

673+
@Test
674+
void getRemoteHost_albHostHeader_multiValue_returnsHostHeader() {
675+
initAwsProxyHttpServletRequestTest("ALB");
676+
AwsProxyRequest proxyReq = new AwsProxyRequestBuilder("/test", "GET")
677+
.header(HttpHeaders.HOST, "testapi.us-east-1.elb.amazonaws.com")
678+
.alb().build();
679+
proxyReq.setHeaders(null);
680+
HttpServletRequest servletRequest = new AwsProxyHttpServletRequest(proxyReq, null, null);
681+
682+
String host = servletRequest.getRemoteHost();
683+
assertEquals("testapi.us-east-1.elb.amazonaws.com", host);
684+
}
685+
672686
private AwsProxyRequestBuilder getRequestWithHeaders() {
673687
return new AwsProxyRequestBuilder("/hello", "GET")
674688
.header(CUSTOM_HEADER_KEY, CUSTOM_HEADER_VALUE)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
</parent>
1717

1818
<properties>
19-
<jersey.version>3.1.6</jersey.version>
19+
<jersey.version>3.1.8</jersey.version>
2020
</properties>
2121

2222
<dependencies>
@@ -64,7 +64,7 @@
6464
<dependency>
6565
<groupId>commons-codec</groupId>
6666
<artifactId>commons-codec</artifactId>
67-
<version>1.17.0</version>
67+
<version>1.17.1</version>
6868
<scope>test</scope>
6969
</dependency>
7070

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
</parent>
1717

1818
<properties>
19-
<spring.version>6.1.6</spring.version>
20-
<spring-security.version>6.2.4</spring-security.version>
19+
<spring.version>6.1.11</spring.version>
20+
<spring-security.version>6.3.1</spring-security.version>
2121
</properties>
2222

2323
<dependencies>
@@ -53,7 +53,7 @@
5353
<dependency>
5454
<groupId>commons-codec</groupId>
5555
<artifactId>commons-codec</artifactId>
56-
<version>1.17.0</version>
56+
<version>1.17.1</version>
5757
<scope>test</scope>
5858
</dependency>
5959

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@
1515
<version>2.1.0-SNAPSHOT</version>
1616

1717
<properties>
18-
<spring.version>6.1.6</spring.version>
19-
<springboot.version>3.2.5</springboot.version>
20-
<springsecurity.version>6.2.4</springsecurity.version>
18+
<spring.version>6.1.11</spring.version>
19+
<springboot.version>3.3.2</springboot.version>
20+
<springsecurity.version>6.3.1</springsecurity.version>
2121
</properties>
2222

2323
<dependencies>
2424
<!-- Core interfaces for the aws-serverless-java-container project -->
2525
<dependency>
2626
<groupId>org.springframework.cloud</groupId>
2727
<artifactId>spring-cloud-function-serverless-web</artifactId>
28-
<version>4.1.2-SNAPSHOT</version>
28+
<version>4.1.3</version>
2929
</dependency>
3030
<dependency>
3131
<groupId>com.amazonaws.serverless</groupId>
@@ -180,14 +180,14 @@
180180
<dependency>
181181
<groupId>jakarta.websocket</groupId>
182182
<artifactId>jakarta.websocket-api</artifactId>
183-
<version>2.1.1</version>
183+
<version>2.2.0</version>
184184
<scope>test</scope>
185185
</dependency>
186186

187187
<dependency>
188188
<groupId>jakarta.websocket</groupId>
189189
<artifactId>jakarta.websocket-client-api</artifactId>
190-
<version>2.1.1</version>
190+
<version>2.2.0</version>
191191
<scope>test</scope>
192192
</dependency>
193193

@@ -226,7 +226,7 @@
226226
<dependency>
227227
<groupId>com.h2database</groupId>
228228
<artifactId>h2</artifactId>
229-
<version>2.2.224</version>
229+
<version>2.3.230</version>
230230
<scope>test</scope>
231231
</dependency>
232232

aws-serverless-java-container-springboot3/src/main/java/com/amazonaws/serverless/proxy/spring/AwsSpringAotTypesProcessor.java

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.amazonaws.serverless.proxy.spring;
1818

19+
import com.amazonaws.serverless.proxy.model.*;
1920
import org.springframework.aot.generate.GenerationContext;
2021
import org.springframework.aot.hint.MemberCategory;
2122
import org.springframework.aot.hint.RuntimeHints;
@@ -25,13 +26,6 @@
2526
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
2627

2728
import com.amazonaws.serverless.proxy.internal.servlet.AwsHttpServletResponse;
28-
import com.amazonaws.serverless.proxy.model.ApiGatewayRequestIdentity;
29-
import com.amazonaws.serverless.proxy.model.AwsProxyRequest;
30-
import com.amazonaws.serverless.proxy.model.AwsProxyRequestContext;
31-
import com.amazonaws.serverless.proxy.model.AwsProxyResponse;
32-
import com.amazonaws.serverless.proxy.model.Headers;
33-
import com.amazonaws.serverless.proxy.model.MultiValuedTreeMap;
34-
import com.amazonaws.serverless.proxy.model.SingleValueHeaders;
3529
import com.fasterxml.jackson.core.JsonToken;
3630

3731
/**
@@ -73,6 +67,30 @@ public void applyTo(GenerationContext generationContext, BeanFactoryInitializati
7367
runtimeHints.reflection().registerType(AwsHttpServletResponse.class,
7468
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
7569
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
70+
runtimeHints.reflection().registerType(HttpApiV2ProxyRequest.class,
71+
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
72+
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
73+
runtimeHints.reflection().registerType(HttpApiV2HttpContext.class,
74+
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
75+
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
76+
runtimeHints.reflection().registerType(HttpApiV2ProxyRequestContext.class,
77+
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
78+
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
79+
runtimeHints.reflection().registerType(HttpApiV2AuthorizerMap.class,
80+
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
81+
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
82+
runtimeHints.reflection().registerType(HttpApiV2AuthorizerMap.HttpApiV2AuthorizerDeserializer.class,
83+
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
84+
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
85+
runtimeHints.reflection().registerType(HttpApiV2AuthorizerMap.HttpApiV2AuthorizerSerializer.class,
86+
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
87+
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
88+
runtimeHints.reflection().registerType(HttpApiV2IamAuthorizer.class,
89+
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
90+
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
91+
runtimeHints.reflection().registerType(HttpApiV2JwtAuthorizer.class,
92+
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS,
93+
MemberCategory.DECLARED_FIELDS, MemberCategory.DECLARED_CLASSES, MemberCategory.INTROSPECT_DECLARED_METHODS);
7694
}
7795

7896
}

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

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,20 @@
1515
</parent>
1616

1717
<properties>
18-
<struts.version>7.0.0-M3</struts.version>
18+
<struts.version>7.0.0-M8</struts.version>
1919
</properties>
2020

2121
<dependencies>
2222
<!-- Core interfaces for the aws-serverless-java-container project -->
2323
<dependency>
2424
<groupId>com.amazonaws.serverless</groupId>
2525
<artifactId>aws-serverless-java-container-core</artifactId>
26-
<version>2.0.0</version>
26+
<version>2.1.0-SNAPSHOT</version>
2727
</dependency>
2828
<dependency>
2929
<groupId>com.amazonaws.serverless</groupId>
3030
<artifactId>aws-serverless-java-container-core</artifactId>
31-
<version>2.0.0</version>
31+
<version>2.1.0-SNAPSHOT</version>
3232
<classifier>tests</classifier>
3333
<type>test-jar</type>
3434
<scope>test</scope>
@@ -68,7 +68,7 @@
6868
<dependency>
6969
<groupId>commons-codec</groupId>
7070
<artifactId>commons-codec</artifactId>
71-
<version>1.15</version>
71+
<version>1.17.1</version>
7272
<scope>test</scope>
7373
</dependency>
7474

@@ -100,16 +100,6 @@
100100
</dependency>
101101
</dependencies>
102102

103-
<dependencyManagement>
104-
<dependencies>
105-
<dependency>
106-
<groupId>org.apache.commons</groupId>
107-
<artifactId>commons-text</artifactId>
108-
<version>1.11.0</version>
109-
</dependency>
110-
</dependencies>
111-
</dependencyManagement>
112-
113103
<build>
114104
<plugins>
115105
<plugin>

aws-serverless-jersey-archetype/src/main/resources/archetype-resources/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,22 @@ repositories {
88
dependencies {
99
implementation (
1010
'com.amazonaws.serverless:aws-serverless-java-container-jersey:[2.0-SNAPSHOT,)',
11-
'com.fasterxml.jackson.core:jackson-databind:2.17.1',
11+
'com.fasterxml.jackson.core:jackson-databind:2.17.2',
1212
)
1313

14-
implementation("org.glassfish.jersey.media:jersey-media-json-jackson:3.1.6") {
14+
implementation("org.glassfish.jersey.media:jersey-media-json-jackson:3.1.8") {
1515
exclude group: 'com.fasterxml.jackson.core', module: "jackson-annotations"
1616
exclude group: 'com.fasterxml.jackson.core', module: "jackson-databind"
1717
exclude group: 'com.fasterxml.jackson.core', module: "jackson-core"
1818
}
1919

20-
implementation("org.glassfish.jersey.inject:jersey-hk2:3.1.6") {
20+
implementation("org.glassfish.jersey.inject:jersey-hk2:3.1.8") {
2121
exclude group: 'javax.inject', module: "javax.inject"
2222
}
2323

2424
testImplementation("com.amazonaws.serverless:aws-serverless-java-container-core:[2.0-SNAPSHOT,):tests")
25-
testImplementation("org.apache.httpcomponents.client5:httpclient5:5.2.1")
26-
testImplementation(platform("org.junit:junit-bom:5.10.2"))
25+
testImplementation("org.apache.httpcomponents.client5:httpclient5:5.3.1")
26+
testImplementation(platform("org.junit:junit-bom:5.11.0"))
2727
testImplementation("org.junit.jupiter:junit-jupiter")
2828
}
2929

0 commit comments

Comments
 (0)