Skip to content

Commit 6fcc1dd

Browse files
committed
fix(kotlin-spring): default Jackson 3 when Spring Boot 4 set via setter or additionalProperties
The Jackson 3 defaulting logic only checked additionalProperties map, so calling setUseSpringBoot4(true) via the Java API skipped the default. Now checks both the field value and the map.
1 parent deb74fb commit 6fcc1dd

2 files changed

Lines changed: 36 additions & 3 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinSpringServerCodegen.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -424,9 +424,10 @@ public String getHelp() {
424424

425425
@Override
426426
public void processOpts() {
427-
if (additionalProperties.containsKey(USE_SPRING_BOOT4)
428-
&& Boolean.parseBoolean(additionalProperties.get(USE_SPRING_BOOT4).toString())
429-
&& !additionalProperties.containsKey(USE_JACKSON_3)) {
427+
boolean springBoot4Enabled = useSpringBoot4
428+
|| (additionalProperties.containsKey(USE_SPRING_BOOT4)
429+
&& Boolean.parseBoolean(additionalProperties.get(USE_SPRING_BOOT4).toString()));
430+
if (springBoot4Enabled && !additionalProperties.containsKey(USE_JACKSON_3)) {
430431
additionalProperties.put(USE_JACKSON_3, "true");
431432
}
432433

modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5010,6 +5010,38 @@ public void shouldNotUseLegacyOAuth2WithSpringBoot4CloudLibrary() throws IOExcep
50105010
assertFileContains(clientConfigPath, "ClientRegistrationRepository");
50115011
assertFileContains(clientConfigPath, "OAuth2RequestInterceptor");
50125012
}
5013+
5014+
@Test
5015+
public void shouldDefaultToJackson3WhenSpringBoot4EnabledViaSetter() throws IOException {
5016+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
5017+
output.deleteOnExit();
5018+
String outputPath = output.getAbsolutePath().replace('\\', '/');
5019+
5020+
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml");
5021+
final KotlinSpringServerCodegen codegen = new KotlinSpringServerCodegen();
5022+
codegen.setOpenAPI(openAPI);
5023+
codegen.setOutputDir(output.getAbsolutePath());
5024+
5025+
// Set via setter, NOT additionalProperties
5026+
codegen.setUseSpringBoot4(true);
5027+
codegen.additionalProperties().put(DOCUMENTATION_PROVIDER, DocumentationProvider.NONE.toCliOptValue());
5028+
codegen.additionalProperties().put(ANNOTATION_LIBRARY, AnnotationLibrary.NONE.toCliOptValue());
5029+
5030+
ClientOptInput input = new ClientOptInput();
5031+
input.openAPI(openAPI);
5032+
input.config(codegen);
5033+
5034+
DefaultGenerator generator = new DefaultGenerator();
5035+
generator.setGenerateMetadata(false);
5036+
generator.opts(input).generate();
5037+
5038+
Path pomPath = Paths.get(outputPath + "/pom.xml");
5039+
assertFileContains(pomPath, "tools.jackson.dataformat");
5040+
assertFileContains(pomPath, "tools.jackson.module");
5041+
assertFileNotContains(pomPath, "com.fasterxml.jackson.dataformat");
5042+
assertFileNotContains(pomPath, "com.fasterxml.jackson.module");
5043+
assertFileNotContains(pomPath, "jackson-datatype-jsr310");
5044+
}
50135045
}
50145046

50155047

0 commit comments

Comments
 (0)