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" }