diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache index 564ce0214e50..eb4c35341933 100644 --- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache +++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache @@ -145,7 +145,7 @@ import {{packageName}}.infrastructure.ITransformForStorage {{#multiplatform}} @Serializable {{/multiplatform}} - {{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{{nameInPascalCase}}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) { + {{#nonPublicApi}}internal {{/nonPublicApi}}{{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}enum class {{{nameInPascalCase}}}({{^nonPublicApi}}{{#explicitApi}}public {{/explicitApi}}{{/nonPublicApi}}val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}{{#mostInnerItems}}{{dataType}}{{/mostInnerItems}}{{/isContainer}}) { {{#allowableValues}} {{#enumVars}} {{^multiplatform}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinClientCodegenModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinClientCodegenModelTest.java index 3e1ed97b5a32..0a681a7a821e 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinClientCodegenModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/KotlinClientCodegenModelTest.java @@ -43,6 +43,7 @@ import java.util.Map; import static org.openapitools.codegen.CodegenConstants.*; +import static org.openapitools.codegen.TestUtils.assertFileContains; @SuppressWarnings("static-method") public class KotlinClientCodegenModelTest { @@ -617,6 +618,32 @@ public void polymorphicJacksonSerialization() throws IOException { TestUtils.assertFileNotContains(birdKt, "val discriminator"); } + @Test + public void testIntArrayToEnum() throws IOException { + File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName("kotlin") + .setLibrary("jvm-ktor") + .setAdditionalProperties(new HashMap<>() {{ + put(CodegenConstants.SERIALIZATION_LIBRARY, "jackson"); + put(CodegenConstants.MODEL_PACKAGE, "model"); + put(ENUM_PROPERTY_NAMING, "UPPERCASE"); + }}) + .setInputSpec("src/test/resources/3_0/kotlin/issue15204-int-array-enum.yaml") + .setOutputDir(output.getAbsolutePath().replace("\\", "/")); + + final ClientOptInput clientOptInput = configurator.toClientOptInput(); + DefaultGenerator generator = new DefaultGenerator(); + + generator.opts(clientOptInput).generate(); + + final Path modelKt = Paths.get(output + "/src/main/kotlin/model/ModelWithIntArrayEnum.kt"); + + TestUtils.assertFileContains(modelKt, "enum class DaysOfWeek(val value: kotlin.Int)"); + } + private static class ModelNameTest { private final String expectedName; private final String expectedClassName; diff --git a/modules/openapi-generator/src/test/resources/3_0/kotlin/issue15204-int-array-enum.yaml b/modules/openapi-generator/src/test/resources/3_0/kotlin/issue15204-int-array-enum.yaml new file mode 100644 index 000000000000..9964c5a07e02 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/kotlin/issue15204-int-array-enum.yaml @@ -0,0 +1,26 @@ +openapi: 3.0.0 +info: + title: 'Issue 15204 Int Array Enum' + version: latest +paths: + '/': + get: + operationId: operation + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ModelWithIntArrayEnum' +components: + schemas: + ModelWithIntArrayEnum: + required: + - daysOfWeek + properties: + daysOfWeek: + type: array + items: + type: integer + enum: [0, 1, 2, 3, 4, 5, 6] \ No newline at end of file