From 7d2787320df2114f2b4f505882d38aebd03ce39f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 4 May 2026 12:19:01 +0000 Subject: [PATCH] feat(java/jersey3): support Spring Boot 4 Wire the existing useSpringBoot4 client option into the jersey3 library templates so generated projects align with the Spring Boot 4.x baseline: - Java 17 compiler/source/target (was 1.8) - jakarta.annotation 3.0.0 (was 2.1.1) - jakarta.validation 3.1.1 (was 3.0.2) Defaults are unchanged when useSpringBoot4 is not set. --- .../codegen/languages/JavaClientCodegen.java | 2 +- .../libraries/jersey3/build.gradle.mustache | 22 +++++++++++++++++++ .../Java/libraries/jersey3/pom.mustache | 17 ++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java index 26f1b6bd3abe..a6d2c0a94e82 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java @@ -287,7 +287,7 @@ public JavaClientCodegen() { cliOptions.add(CliOption.newBoolean(USE_JSPECIFY, "Use Jspecify for null checks. Only supported for " + JSPECIFY_SUPPORTED_LIBRARIES, useJspecify)); supportedLibraries.put(JERSEY2, "HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1"); - supportedLibraries.put(JERSEY3, "HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1"); + supportedLibraries.put(JERSEY3, "HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1. Use `useSpringBoot4=true` to align dependency versions (jakarta.annotation 3.0.0, jakarta.validation 3.1.1) and Java target (17) with Spring Boot 4.x."); supportedLibraries.put(FEIGN, "HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1"); supportedLibraries.put(FEIGN_HC5, "HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1"); supportedLibraries.put(OKHTTP_GSON, "[DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'."); diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache index 1ba060915648..81d3f091ed07 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache @@ -33,8 +33,14 @@ if(hasProperty('target') && target == 'android') { targetSdkVersion 25 } compileOptions { + {{#useSpringBoot4}} + sourceCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_17 + {{/useSpringBoot4}} + {{^useSpringBoot4}} sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 + {{/useSpringBoot4}} } // Rename the aar correctly @@ -78,8 +84,14 @@ if(hasProperty('target') && target == 'android') { apply plugin: 'java' apply plugin: 'maven-publish' + {{#useSpringBoot4}} + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + {{/useSpringBoot4}} + {{^useSpringBoot4}} sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 + {{/useSpringBoot4}} publishing { publications { @@ -105,9 +117,19 @@ ext { {{#openApiNullable}} jackson_databind_nullable_version = "0.2.10" {{/openApiNullable}} + {{#useSpringBoot4}} + jakarta_annotation_version = "3.0.0" + {{/useSpringBoot4}} + {{^useSpringBoot4}} jakarta_annotation_version = "2.1.0" + {{/useSpringBoot4}} {{#useBeanValidation}} + {{#useSpringBoot4}} + bean_validation_version = "3.1.1" + {{/useSpringBoot4}} + {{^useSpringBoot4}} bean_validation_version = "3.0.2" + {{/useSpringBoot4}} {{/useBeanValidation}} jersey_version = "3.0.4" junit_version = "5.8.2" diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pom.mustache index ba0bb943e056..c05ff89f2351 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pom.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pom.mustache @@ -142,8 +142,14 @@ maven-compiler-plugin 3.10.1 + {{#useSpringBoot4}} + 17 + 17 + {{/useSpringBoot4}} + {{^useSpringBoot4}} 1.8 1.8 + {{/useSpringBoot4}} true 128m 512m @@ -167,7 +173,12 @@ none + {{#useSpringBoot4}} + 17 + {{/useSpringBoot4}} + {{^useSpringBoot4}} 1.8 + {{/useSpringBoot4}} http.response.details @@ -409,6 +420,11 @@ 2.21 2.21.1 0.2.10 + {{#useSpringBoot4}} + 3.0.0 + 3.1.1 + {{/useSpringBoot4}} + {{^useSpringBoot4}} {{#useJakartaEe}} 2.1.1 3.0.2 @@ -417,6 +433,7 @@ 1.3.5 2.0.2 {{/useJakartaEe}} + {{/useSpringBoot4}} 5.10.0 {{#hasHttpSignatureMethods}} 1.8