From 5f83d1672a5a2047c4f2c624ebb64838fbae8693 Mon Sep 17 00:00:00 2001 From: Renato Mameli Date: Sat, 18 Apr 2026 23:52:44 +0200 Subject: [PATCH] fix(java-spring): handle UUID type in enum values generation --- .../languages/AbstractJavaCodegen.java | 2 ++ .../java/spring/SpringCodegenTest.java | 10 ++++++ .../src/test/resources/3_0/enum_uuid.yaml | 32 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 modules/openapi-generator/src/test/resources/3_0/enum_uuid.yaml diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java index 58f7d0e1f226..462cc2b53d21 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java @@ -2301,6 +2301,8 @@ public String toEnumValue(String value, String datatype) { return "new BigDecimal(\"" + value + "\")"; } else if ("URI".equals(datatype)) { return "URI.create(\"" + escapeText(value) + "\")"; + } else if ("UUID".equals(datatype)) { + return "UUID.fromString(\"" + escapeText(value) + "\")"; } else { return "\"" + escapeText(value) + "\""; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 6dc57b29ad10..245e3ce8bf12 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -3094,6 +3094,16 @@ public void contractWithResolvedInnerEnumContainsEnumConverter() throws IOExcept .assertMethod("ponyTypeConverter"); } + @Test + public void contractWithUuidEnumShouldGenerateValidEnum() throws IOException { + Map output = generateFromContract("src/test/resources/3_0/enum_uuid.yaml", SPRING_BOOT); + + JavaFileAssert.assertThat(output.get("ExampleUuidEnum.java")) + .fileContains("UUID.fromString(\"d6a8f2b0-1c34-4e56-a789-0abcdef12345\")") + .fileContains("UUID.fromString(\"e7b9c3d1-2d45-5f67-b890-1bcdef023456\")") + .fileContains("private final UUID value"); + } + @Test public void shouldUseTheSameTagNameForTheInterfaceAndTheMethod_issue11570() throws IOException { final Map output = generateFromContract( diff --git a/modules/openapi-generator/src/test/resources/3_0/enum_uuid.yaml b/modules/openapi-generator/src/test/resources/3_0/enum_uuid.yaml new file mode 100644 index 000000000000..80c4a5a0753c --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/enum_uuid.yaml @@ -0,0 +1,32 @@ +openapi: 3.0.0 +info: + title: Sample API + description: API with UUID enum. + version: 1.0.0 +paths: + /resources: + get: + summary: Returns resources. + responses: + 200: + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Resource' +components: + schemas: + Resource: + type: object + properties: + source: + $ref: '#/components/schemas/ExampleUuidEnum' + ExampleUuidEnum: + type: string + format: uuid + description: Example of an Enum with UUID values + enum: + - "d6a8f2b0-1c34-4e56-a789-0abcdef12345" + - "e7b9c3d1-2d45-5f67-b890-1bcdef023456" \ No newline at end of file