From 89f0f7556fe661ee0f55ce2240b31d9c4fce0096 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jorge=20Rodr=C3=ADguez=20Mart=C3=ADn?= Date: Wed, 9 Apr 2025 11:10:39 +0200 Subject: [PATCH] [Java][Spring] Ensure EnumConverterConfiguration.java is generated when interfaceOnly=true in Spring Generator (#21000) * Ensure EnumConverterConfiguration.java is generated when interfaceOnly=true in Spring Generator * Add samples --- .../codegen/languages/SpringCodegen.java | 2 +- .../.openapi-generator/FILES | 1 + .../EnumConverterConfiguration.java | 32 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 samples/server/petstore/spring-boot-defaultInterface-unhandledException/src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java index be7242f8c9d..5237520ce9d 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java @@ -685,7 +685,7 @@ public class SpringCodegen extends AbstractJavaCodegen public void preprocessOpenAPI(OpenAPI openAPI) { super.preprocessOpenAPI(openAPI); - if (!interfaceOnly && SPRING_BOOT.equals(library) && containsEnums()) { + if (SPRING_BOOT.equals(library) && containsEnums()) { supportingFiles.add(new SupportingFile("converter.mustache", (sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "EnumConverterConfiguration.java")); } diff --git a/samples/server/petstore/spring-boot-defaultInterface-unhandledException/.openapi-generator/FILES b/samples/server/petstore/spring-boot-defaultInterface-unhandledException/.openapi-generator/FILES index eb1a4d69db4..9e5176487bf 100644 --- a/samples/server/petstore/spring-boot-defaultInterface-unhandledException/.openapi-generator/FILES +++ b/samples/server/petstore/spring-boot-defaultInterface-unhandledException/.openapi-generator/FILES @@ -7,6 +7,7 @@ src/main/java/org/openapitools/api/FakeClassnameTestApi.java src/main/java/org/openapitools/api/PetApi.java src/main/java/org/openapitools/api/StoreApi.java src/main/java/org/openapitools/api/UserApi.java +src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java src/main/java/org/openapitools/model/AdditionalPropertiesAnyType.java src/main/java/org/openapitools/model/AdditionalPropertiesArray.java src/main/java/org/openapitools/model/AdditionalPropertiesBoolean.java diff --git a/samples/server/petstore/spring-boot-defaultInterface-unhandledException/src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java b/samples/server/petstore/spring-boot-defaultInterface-unhandledException/src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java new file mode 100644 index 00000000000..b257cf0a16c --- /dev/null +++ b/samples/server/petstore/spring-boot-defaultInterface-unhandledException/src/main/java/org/openapitools/configuration/EnumConverterConfiguration.java @@ -0,0 +1,32 @@ +package org.openapitools.configuration; + +import org.openapitools.model.EnumClass; +import org.openapitools.model.OuterEnum; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.convert.converter.Converter; + +@Configuration +public class EnumConverterConfiguration { + + @Bean(name = "org.openapitools.configuration.EnumConverterConfiguration.enumClassConverter") + Converter enumClassConverter() { + return new Converter() { + @Override + public EnumClass convert(String source) { + return EnumClass.fromValue(source); + } + }; + } + @Bean(name = "org.openapitools.configuration.EnumConverterConfiguration.outerEnumConverter") + Converter outerEnumConverter() { + return new Converter() { + @Override + public OuterEnum convert(String source) { + return OuterEnum.fromValue(source); + } + }; + } + +}