[Java][Spring] enumUnknownDefaultCase true now returns correctly in fromValue (#18914)

* enumUnknownDefaultCase true added for Spring

* Resource added for test

* Updated tests

---------

Co-authored-by: Dean <dean.kane@opencastsoftware.com>
This commit is contained in:
William Cheng
2024-06-13 16:23:56 +08:00
committed by GitHub
parent 1765efc1ff
commit 26a164e57f
4 changed files with 44 additions and 2 deletions

View File

@@ -55,6 +55,6 @@
return b;
}
}
{{#isNullable}}return null;{{/isNullable}}{{^isNullable}}throw new IllegalArgumentException("Unexpected value '" + value + "'");{{/isNullable}}
{{#isNullable}}return null;{{/isNullable}}{{^isNullable}}{{#enumUnknownDefaultCase}}{{#allowableValues}}{{#enumVars}}{{#-last}}return {{{name}}};{{/-last}}{{/enumVars}}{{/allowableValues}}{{/enumUnknownDefaultCase}}{{^enumUnknownDefaultCase}}throw new IllegalArgumentException("Unexpected value '" + value + "'");{{/enumUnknownDefaultCase}}{{/isNullable}}
}
}

View File

@@ -56,6 +56,6 @@ public enum {{{datatypeWithEnum}}}{{^datatypeWithEnum}}{{{classname}}}{{/datatyp
return b;
}
}
{{#isNullable}}return null;{{/isNullable}}{{^isNullable}}throw new IllegalArgumentException("Unexpected value '" + value + "'");{{/isNullable}}
{{#isNullable}}return null;{{/isNullable}}{{^isNullable}}{{#enumUnknownDefaultCase}}{{#allowableValues}}{{#enumVars}}{{#-last}}return {{{name}}};{{/-last}}{{/enumVars}}{{/allowableValues}}{{/enumUnknownDefaultCase}}{{^enumUnknownDefaultCase}}throw new IllegalArgumentException("Unexpected value '" + value + "'");{{/enumUnknownDefaultCase}}{{/isNullable}}
}
}

View File

@@ -4865,4 +4865,29 @@ public class SpringCodegenTest {
.toMethod()
.toFileAssert();
}
@Test
public void testEnumUnknownDefaultCaseDeserializationTrue_issue13241() throws IOException {
SpringCodegen codegen = new SpringCodegen();
codegen.setLibrary(SPRING_BOOT);
codegen.additionalProperties().put(CodegenConstants.ENUM_UNKNOWN_DEFAULT_CASE, "true");
Map<String, File> files = generateFiles(codegen, "src/test/resources/bugs/issue_13241.yaml");
JavaFileAssert.assertThat(files.get("Color.java"))
.assertMethod("fromValue").bodyContainsLines("return UNKNOWN_DEFAULT_OPEN_API");
}
@Test
public void testEnumUnknownDefaultCaseDeserializationNotSet_issue13241() throws IOException {
SpringCodegen codegen = new SpringCodegen();
codegen.setLibrary(SPRING_BOOT);
Map<String, File> files = generateFiles(codegen, "src/test/resources/bugs/issue_13241.yaml");
JavaFileAssert.assertThat(files.get("Color.java"))
.assertMethod("fromValue").bodyContainsLines("throw new IllegalArgumentException(\"Unexpected value '\" + value + \"'\");");
}
}

View File

@@ -0,0 +1,17 @@
openapi: "3.0.0"
info:
version: 2.0.0
title: test
paths:
/pets:
get:
summary: List all pets
operationId: listPets
responses:
'200':
description: OK
components:
schemas:
Color:
type: string
enum: [RED, BLUE, GREEN]