Skip to content

Commit 7b695f7

Browse files
authored
Java21 (#54)
* Initial Java 21 changes * Updating workflows * Fixing tests. Commenting out right now "allowAllOutbound" as this should be configured in the provided securityGroups * Removing flags not compatible with Graalvm CE. Updating command in README * Removing allowAllOutbound in test. * Fixing comment formatting.
1 parent 5d04795 commit 7b695f7

File tree

18 files changed

+105
-138
lines changed

18 files changed

+105
-138
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ jobs:
2727
runs-on: ubuntu-latest
2828
strategy:
2929
matrix:
30-
java-version: [ '20' ]
31-
graalvm-version: [ '20.0.2' ]
30+
java-version: [ '21' ]
31+
graalvm-version: [ '21.0.1' ]
3232
distribution: [ 'graalvm' ]
3333
fail-fast: true
3434
steps:

.github/workflows/codeql-analysis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
security-events: write
3333
strategy:
3434
matrix:
35-
java-version: [ '20' ]
35+
java-version: [ '21' ]
3636
distribution: [ 'temurin' ]
3737
language: [ 'java' ]
3838
fail-fast: true

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ $ ./mvnw -ntp clean verify -U --settings ./settings-spring.xml
3838
1. Set `spring.main.web-application-type` to `servlet` for local development
3939
2. Run the following commands
4040
```shell
41-
$ ./mvnw -ntp clean package -U -Pnative -pl spring-native-aws-lambda-function --settings ./settings-spring.xml
41+
$ ./mvnw -ntp clean -Pnative -DskipTests native:compile package -pl spring-native-aws-lambda-function --settings ./settings-spring.xml
4242
$ ./spring-native-aws-lambda-function/target/spring-native-aws-lambda-function
4343
```
4444
The service starts in less than 100 ms

docker-compose.yml

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
version: '3.9'
16+
version: "3.9"
1717
services:
1818
spring-native-aws-lambda-function:
1919
image: ghcr.io/muhamadto/spring-native-amazonlinux2-builder:20-amazonlinux2-awscliv2
@@ -31,6 +31,7 @@ services:
3131
AWS_REGION: ap-southeast-2
3232
AWS_ACCESS_KEY_ID: local
3333
AWS_SECRET_ACCESS_KEY: local
34+
AWS_ENDPOINT_URL: http://localstack:4566
3435
MAVEN_OPTS: |
3536
-DskipTests=true
3637
-Dcheckstyle.skip=true
@@ -52,10 +53,10 @@ services:
5253
print_info_message "block" "Creating 'spring-native-aws-lambda-function'" &&
5354
5455
print_info_message "divider" "Package GraalVM function" &&
55-
56+
5657
./mvnw -ntp clean package -U -Pnative -pl spring-native-aws-lambda-function --settings ./settings-spring.xml &&
57-
58-
lambda_create_function lambda-FUNCTION provided.al2 512 ./spring-native-aws-lambda-function/target/spring-native-aws-lambda-function-native-zip.zip spring-native-aws-lambda-function &&
58+
59+
lambda_create_function lambda-FUNCTION provided.al2023 512 ./spring-native-aws-lambda-function/target/spring-native-aws-lambda-function-native-zip.zip spring-native-aws-lambda-function &&
5960
lambda_wait_for_function lambda-FUNCTION &&
6061
lambda_list_functions &&
6162
@@ -67,20 +68,14 @@ services:
6768
- localstack
6869

6970
localstack:
70-
container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
71-
image: localstack/localstack:latest
71+
container_name: "${LOCALSTACK_DOCKER_NAME:-localstack-main}"
72+
image: localstack/localstack
7273
ports:
73-
- "127.0.0.1:4566:4566" # LocalStack Gateway
74-
- "127.0.0.1:4510-4559:4510-4559" # external services port range
74+
- "127.0.0.1:4566:4566" # LocalStack Gateway
75+
- "127.0.0.1:4510-4559:4510-4559" # external services port range
7576
environment:
76-
- DEBUG=${DEBUG-}
77-
- DOCKER_HOST=unix:///var/run/docker.sock
78-
- LOCALSTACK_HOST=localstack
77+
# LocalStack configuration: https://docs.localstack.cloud/references/configuration/
78+
- DEBUG=${DEBUG:-0}
7979
volumes:
8080
- "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
8181
- "/var/run/docker.sock:/var/run/docker.sock"
82-
83-
84-
85-
86-

pom.xml

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@
2222
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
2323
<modelVersion>4.0.0</modelVersion>
2424

25+
<parent>
26+
<groupId>org.springframework.boot</groupId>
27+
<artifactId>spring-boot-starter-parent</artifactId>
28+
<version>3.2.1</version>
29+
<relativePath />
30+
</parent>
31+
2532
<groupId>com.coffeebeans</groupId>
2633
<artifactId>spring-native-aws-lambda</artifactId>
2734
<name>${project.artifactId}</name>
@@ -44,13 +51,9 @@
4451
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
4552
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
4653

47-
<maven.compiler.source>20</maven.compiler.source>
48-
<maven.compiler.target>20</maven.compiler.target>
49-
<maven.compiler.release>20</maven.compiler.release>
54+
<java.version>21</java.version>
5055
<maven.compiler.parameters>true</maven.compiler.parameters>
5156

52-
<jackson.version>2.13.0</jackson.version>
53-
5457
<sonar.organization>muhamadto</sonar.organization>
5558
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
5659

@@ -73,15 +76,8 @@
7376

7477
<sonar.coverage.exclusions>**/model/*.java, **/Application.java, **/*Hints.java
7578
</sonar.coverage.exclusions>
76-
<lombok.version>1.18.28</lombok.version>
7779
</properties>
7880

79-
<parent>
80-
<groupId>org.springframework.boot</groupId>
81-
<artifactId>spring-boot-starter-parent</artifactId>
82-
<version>3.1.2</version>
83-
</parent>
84-
8581
<modules>
8682
<module>spring-native-aws-lambda-function</module>
8783
<module>spring-native-aws-lambda-infra</module>
@@ -107,35 +103,35 @@
107103
<dependency>
108104
<groupId>com.amazonaws</groupId>
109105
<artifactId>aws-lambda-java-events</artifactId>
110-
<version>3.11.1</version>
106+
<version>3.11.4</version>
111107
</dependency>
112108
<dependency>
113109
<groupId>com.amazonaws</groupId>
114110
<artifactId>aws-lambda-java-core</artifactId>
115-
<version>1.2.2</version>
111+
<version>1.2.3</version>
116112
</dependency>
117113
<dependency>
118114
<groupId>com.amazonaws</groupId>
119115
<artifactId>aws-lambda-java-serialization</artifactId>
120-
<version>1.1.2</version>
116+
<version>1.1.5</version>
121117
</dependency>
122118
<dependency>
123119
<groupId>com.amazonaws</groupId>
124120
<artifactId>aws-lambda-java-log4j2</artifactId>
125-
<version>1.5.1</version>
121+
<version>1.6.0</version>
126122
</dependency>
127123
<dependency>
128124
<groupId>software.amazon.lambda</groupId>
129125
<artifactId>powertools-logging</artifactId>
130-
<version>1.16.1</version>
126+
<version>1.18.0</version>
131127
</dependency>
132128
<!-- AWS END -->
133129

134130
<!-- UTILS -->
135131
<dependency>
136132
<groupId>org.apache.commons</groupId>
137133
<artifactId>commons-lang3</artifactId>
138-
<version>3.12.0</version>
134+
<version>3.14.0</version>
139135
</dependency>
140136

141137
<dependency>
@@ -153,7 +149,7 @@
153149
<dependency>
154150
<groupId>com.google.guava</groupId>
155151
<artifactId>guava</artifactId>
156-
<version>32.0.0-jre</version>
152+
<version>33.0.0-jre</version>
157153
</dependency>
158154

159155
<dependency>
@@ -168,33 +164,30 @@
168164
<dependency>
169165
<groupId>com.fasterxml.jackson.core</groupId>
170166
<artifactId>jackson-databind</artifactId>
171-
<version>${jackson.version}</version>
172167
</dependency>
173168

174169
<dependency>
175170
<groupId>com.fasterxml.jackson.module</groupId>
176171
<artifactId>jackson-module-parameter-names</artifactId>
177-
<version>${jackson.version}</version>
172+
<version>${jackson-bom.version}</version>
178173
</dependency>
179174

180175
<dependency>
181176
<groupId>com.fasterxml.jackson.datatype</groupId>
182177
<artifactId>jackson-datatype-jsr310</artifactId>
183-
<version>${jackson.version}</version>
184178
</dependency>
185179

186180
<dependency>
187181
<groupId>com.fasterxml.jackson.datatype</groupId>
188182
<artifactId>jackson-datatype-jdk8</artifactId>
189-
<version>${jackson.version}</version>
190183
</dependency>
191184
<!-- JACKSON ENDS -->
192185

193186
<!-- AWS CDK -->
194187
<dependency>
195188
<groupId>software.amazon.awscdk</groupId>
196189
<artifactId>aws-cdk-lib</artifactId>
197-
<version>2.90.0</version>
190+
<version>2.116.1</version>
198191
</dependency>
199192
<!-- AWS CDK ENDS -->
200193

@@ -209,21 +202,21 @@
209202
<dependency>
210203
<groupId>org.assertj</groupId>
211204
<artifactId>assertj-core</artifactId>
212-
<version>3.23.1</version>
205+
<version>${assertj.version}</version>
213206
<scope>test</scope>
214207
</dependency>
215208

216209
<dependency>
217210
<groupId>org.junit.jupiter</groupId>
218211
<artifactId>junit-jupiter-api</artifactId>
219-
<version>5.9.1</version>
212+
<version>${junit-jupiter.version}</version>
220213
<scope>test</scope>
221214
</dependency>
222215

223216
<dependency>
224217
<groupId>org.mockito</groupId>
225218
<artifactId>mockito-core</artifactId>
226-
<version>4.8.1</version>
219+
<version>${mockito.version}</version>
227220
<scope>test</scope>
228221
</dependency>
229222
<!-- TEST ENDS -->
@@ -237,17 +230,17 @@
237230
<plugin>
238231
<groupId>org.apache.maven.plugins</groupId>
239232
<artifactId>maven-surefire-plugin</artifactId>
240-
<version>3.1.0</version>
233+
<version>3.2.3</version>
241234
</plugin>
242235
<plugin>
243236
<groupId>org.apache.maven.plugins</groupId>
244237
<artifactId>maven-compiler-plugin</artifactId>
245-
<version>3.11.0</version>
238+
<version>3.12.0</version>
246239
</plugin>
247240
<plugin>
248241
<groupId>org.jacoco</groupId>
249242
<artifactId>jacoco-maven-plugin</artifactId>
250-
<version>0.8.10</version>
243+
<version>0.8.11</version>
251244
<executions>
252245
<execution>
253246
<id>pre-unit-test</id>
@@ -301,4 +294,4 @@
301294
</comments>
302295
</license>
303296
</licenses>
304-
</project>
297+
</project>

spring-native-aws-lambda-function/pom.xml

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,8 @@
4242
</developers>
4343

4444
<properties>
45-
<spring-cloud.version>2022.0.3</spring-cloud.version>
46-
47-
<repackage.classifier/>
48-
<native.build.args>
49-
--enable-url-protocols=http
50-
-H:+AddAllCharsets
51-
-H:+ReportExceptionStackTraces
52-
</native.build.args>
45+
<spring-cloud.version>2023.0.0</spring-cloud.version>
46+
<repackage.classifier />
5347
</properties>
5448

5549
<dependencyManagement>
@@ -169,19 +163,14 @@
169163
<artifactId>native-maven-plugin</artifactId>
170164
<configuration>
171165
<mainClass>com.coffeebeans.springnativeawslambda.Application</mainClass>
172-
<buildArgs>
173-
--no-fallback
166+
<buildArgs combine.children="append">
167+
<buildArg>--verbose</buildArg>
168+
<buildArg>--no-fallback</buildArg>
169+
<buildArg>--enable-preview</buildArg>
170+
<buildArg>--strict-image-heap</buildArg>
171+
<buildArg>-H:+ReportExceptionStackTraces</buildArg>
174172
</buildArgs>
175173
</configuration>
176-
<executions>
177-
<execution>
178-
<id>build-native</id>
179-
<goals>
180-
<goal>compile-no-fork</goal>
181-
</goals>
182-
<phase>package</phase>
183-
</execution>
184-
</executions>
185174
</plugin>
186175
<plugin>
187176
<artifactId>maven-assembly-plugin</artifactId>

spring-native-aws-lambda-function/src/main/java/com/coffeebeans/springnativeawslambda/Application.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@
2525
@SpringBootApplication
2626
@ImportRuntimeHints({
2727
ReflectionRuntimeHints.class,
28-
ResourcesRuntimeHints.class,
29-
SerializationRuntimeHints.class
28+
ResourcesRuntimeHints.class
3029
})
3130
public class Application {
3231

spring-native-aws-lambda-function/src/main/java/com/coffeebeans/springnativeawslambda/ReflectionRuntimeHints.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,30 @@
1919
package com.coffeebeans.springnativeawslambda;
2020

2121
import java.util.List;
22+
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
23+
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
24+
import com.coffeebeans.springnativeawslambda.model.Request;
25+
import com.coffeebeans.springnativeawslambda.model.Response;
2226
import org.joda.time.DateTime;
2327
import org.springframework.aot.hint.MemberCategory;
2428
import org.springframework.aot.hint.RuntimeHints;
2529
import org.springframework.aot.hint.RuntimeHintsRegistrar;
2630
import org.springframework.aot.hint.TypeReference;
31+
import org.springframework.lang.Nullable;
2732

2833
public class ReflectionRuntimeHints implements RuntimeHintsRegistrar {
2934

3035
@Override
31-
public void registerHints(final RuntimeHints hints, final ClassLoader classLoader) {
36+
public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) {
3237
final List<TypeReference> typeReferences = List.of(
33-
TypeReference.of(DateTime.class)
34-
);
38+
TypeReference.of(DateTime.class),
39+
TypeReference.of(Response.class),
40+
TypeReference.of(Request.class),
41+
TypeReference.of(APIGatewayProxyResponseEvent.class),
42+
TypeReference.of(APIGatewayProxyRequestEvent.class),
43+
TypeReference.of(APIGatewayProxyRequestEvent.ProxyRequestContext.class),
44+
TypeReference.of(APIGatewayProxyRequestEvent.RequestIdentity.class));
3545

36-
hints.reflection().registerTypes(typeReferences,
37-
builder -> builder.withMembers(MemberCategory.values()));
46+
hints.reflection().registerTypes(typeReferences, builder -> builder.withMembers(MemberCategory.values()));
3847
}
39-
}
48+
}

0 commit comments

Comments
 (0)