From 59263493da9ded817828524530a99997ebaff448 Mon Sep 17 00:00:00 2001
From: Kandanai Leenutaphong <90031508+edsml-kl121@users.noreply.github.com>
Date: Mon, 19 Jan 2026 04:04:08 +0000
Subject: [PATCH 1/5] add dev containers
---
.devcontainer/devcontainer.json | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
create mode 100644 .devcontainer/devcontainer.json
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..e476b0d
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,27 @@
+{
+ "name": "DocRaptor Java",
+ "image": "mcr.microsoft.com/devcontainers/java:21",
+ "features": {
+ "ghcr.io/devcontainers/features/java:1": {
+ "version": "21",
+ "jdkDistro": "tem",
+ "installGradle": "true",
+ "installMaven": "true"
+ }
+ },
+ "customizations": {
+ "vscode": {
+ "extensions": [
+ "vscjava.vscode-java-pack",
+ "vscjava.vscode-gradle",
+ "redhat.java"
+ ],
+ "settings": {
+ "java.configuration.updateBuildConfiguration": "automatic",
+ "java.compile.nullAnalysis.mode": "automatic"
+ }
+ }
+ },
+ "postCreateCommand": "java -version",
+ "remoteUser": "vscode"
+}
From 4b1314c25976972bf7a7b0f50e1a8dcb1a69db0e Mon Sep 17 00:00:00 2001
From: Kandanai Leenutaphong <90031508+edsml-kl121@users.noreply.github.com>
Date: Mon, 19 Jan 2026 04:07:15 +0000
Subject: [PATCH 2/5] chores: update dev containers
---
.devcontainer/devcontainer.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index e476b0d..b24fe33 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -7,7 +7,8 @@
"jdkDistro": "tem",
"installGradle": "true",
"installMaven": "true"
- }
+ },
+ "ghcr.io/devcontainers/features/git-lfs:1": {}
},
"customizations": {
"vscode": {
From 8e78195da99885525eb418c700764c13fe7551fa Mon Sep 17 00:00:00 2001
From: Kandanai Leenutaphong <90031508+edsml-kl121@users.noreply.github.com>
Date: Mon, 19 Jan 2026 04:27:47 +0000
Subject: [PATCH 3/5] Upgrade Java from 8 to 21 LTS with OpenRewrite recipe
---
pom.xml | 10 ++++++---
src/main/java/com/docraptor/ApiClient.java | 21 +++++++++----------
.../java/com/docraptor/RFC3339DateFormat.java | 1 +
3 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/pom.xml b/pom.xml
index 1c943bf..36d045a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,10 +36,8 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.8.1
+ 3.14.1
- 1.8
- 1.8
true
128m
512m
@@ -47,6 +45,7 @@
-Xlint:all
-J-Xss4m
+ 21
@@ -223,6 +222,11 @@
swagger-annotations
${swagger-annotations-version}
+
+ jakarta.annotation
+ jakarta.annotation-api
+ 1.3.5
+
diff --git a/src/main/java/com/docraptor/ApiClient.java b/src/main/java/com/docraptor/ApiClient.java
index 4f099fe..41b8de3 100644
--- a/src/main/java/com/docraptor/ApiClient.java
+++ b/src/main/java/com/docraptor/ApiClient.java
@@ -238,8 +238,8 @@ public Authentication getAuthentication(String authName) {
*/
public void setUsername(String username) {
for (Authentication auth : authentications.values()) {
- if (auth instanceof HttpBasicAuth) {
- ((HttpBasicAuth) auth).setUsername(username);
+ if (auth instanceof HttpBasicAuth basicAuth) {
+ basicAuth.setUsername(username);
return;
}
}
@@ -252,8 +252,8 @@ public void setUsername(String username) {
*/
public void setPassword(String password) {
for (Authentication auth : authentications.values()) {
- if (auth instanceof HttpBasicAuth) {
- ((HttpBasicAuth) auth).setPassword(password);
+ if (auth instanceof HttpBasicAuth basicAuth) {
+ basicAuth.setPassword(password);
return;
}
}
@@ -391,11 +391,11 @@ public String formatDate(Date date) {
public String parameterToString(Object param) {
if (param == null) {
return "";
- } else if (param instanceof Date) {
- return formatDate((Date) param);
- } else if (param instanceof Collection) {
+ } else if (param instanceof Date date) {
+ return formatDate(date);
+ } else if (param instanceof Collection> collection) {
StringBuilder b = new StringBuilder();
- for(Object o : (Collection>)param) {
+ for(Object o : collection) {
if(b.length() > 0) {
b.append(',');
}
@@ -560,7 +560,7 @@ public Object serialize(Object obj, String contentType, Map form
FormDataMultiPart mp = new FormDataMultiPart();
for (Entry param: formParams.entrySet()) {
if( param.getValue() instanceof List && !( ( List ) param.getValue() ).isEmpty()
- && ( ( List ) param.getValue() ).get( 0 ) instanceof File ) {
+ && ( ( List ) param.getValue() ).getFirst() instanceof File ) {
@SuppressWarnings( "unchecked" )
List files = ( List ) param.getValue();
for( File file : files ) {
@@ -594,8 +594,7 @@ private String buildUrl(String path, List queryParams, List collecti
String baseURL;
if (serverIndex != null) {
if (serverIndex < 0 || serverIndex >= servers.size()) {
- throw new ArrayIndexOutOfBoundsException(String.format(
- "Invalid index %d when selecting the host settings. Must be less than %d", serverIndex, servers.size()
+ throw new ArrayIndexOutOfBoundsException("Invalid index %d when selecting the host settings. Must be less than %d".formatted(serverIndex, servers.size()
));
}
baseURL = servers.get(serverIndex).URL(serverVariables);
diff --git a/src/main/java/com/docraptor/RFC3339DateFormat.java b/src/main/java/com/docraptor/RFC3339DateFormat.java
index 10aeb8f..a4f508a 100644
--- a/src/main/java/com/docraptor/RFC3339DateFormat.java
+++ b/src/main/java/com/docraptor/RFC3339DateFormat.java
@@ -23,6 +23,7 @@
import java.util.TimeZone;
public class RFC3339DateFormat extends DateFormat {
+ @Serial
private static final long serialVersionUID = 1L;
private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
From 6118cb5d1848903988be26a651432f39ffab6e21 Mon Sep 17 00:00:00 2001
From: Kandanai Leenutaphong <90031508+edsml-kl121@users.noreply.github.com>
Date: Mon, 19 Jan 2026 04:28:18 +0000
Subject: [PATCH 4/5] Add missing java.io.Serial import to fix build error
---
src/main/java/com/docraptor/RFC3339DateFormat.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/main/java/com/docraptor/RFC3339DateFormat.java b/src/main/java/com/docraptor/RFC3339DateFormat.java
index a4f508a..9a28dfb 100644
--- a/src/main/java/com/docraptor/RFC3339DateFormat.java
+++ b/src/main/java/com/docraptor/RFC3339DateFormat.java
@@ -14,6 +14,7 @@
import com.fasterxml.jackson.databind.util.StdDateFormat;
+import java.io.Serial;
import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.ParsePosition;
From c558dc6b68ad993cc2d6ab2535dee3b0263386d2 Mon Sep 17 00:00:00 2001
From: Kandanai Leenutaphong <90031508+edsml-kl121@users.noreply.github.com>
Date: Mon, 19 Jan 2026 04:37:00 +0000
Subject: [PATCH 5/5] add java 8 as well
---
.devcontainer/devcontainer.json | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index b24fe33..27072fd 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -6,7 +6,8 @@
"version": "21",
"jdkDistro": "tem",
"installGradle": "true",
- "installMaven": "true"
+ "installMaven": "true",
+ "additionalVersions": "8"
},
"ghcr.io/devcontainers/features/git-lfs:1": {}
},
@@ -19,10 +20,21 @@
],
"settings": {
"java.configuration.updateBuildConfiguration": "automatic",
- "java.compile.nullAnalysis.mode": "automatic"
+ "java.compile.nullAnalysis.mode": "automatic",
+ "java.configuration.runtimes": [
+ {
+ "name": "JavaSE-21",
+ "path": "/usr/lib/jvm/msopenjdk-21",
+ "default": true
+ },
+ {
+ "name": "JavaSE-1.8",
+ "path": "/usr/lib/jvm/msopenjdk-8"
+ }
+ ]
}
}
},
- "postCreateCommand": "java -version",
+ "postCreateCommand": "echo 'Java 21:' && /usr/lib/jvm/msopenjdk-21/bin/java -version && echo 'Java 8:' && /usr/lib/jvm/msopenjdk-8/bin/java -version",
"remoteUser": "vscode"
}