diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java index 6e1e144e0d45..9364c2582717 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/GoClientCodegen.java @@ -446,10 +446,28 @@ public String toDefaultValue(Schema p) { Object defaultValues = p.getDefault(); if (defaultValues instanceof ArrayNode) { for (var value : (ArrayNode) defaultValues) { - joinedDefaultValues.add(value.toString()); + if (value.isNull()) { + joinedDefaultValues.add("nil"); + } else if (value.isTextual()) { + joinedDefaultValues.add("\"" + escapeText(value.asText()) + "\""); + } else { + joinedDefaultValues.add(value.toString()); + } + } + return "{" + joinedDefaultValues + "}"; + } else if (defaultValues instanceof List) { + for (var value : (List) defaultValues) { + if (value == null) { + joinedDefaultValues.add("nil"); + } else if (value instanceof String) { + joinedDefaultValues.add("\"" + escapeText((String) value) + "\""); + } else { + joinedDefaultValues.add(value.toString()); + } } return "{" + joinedDefaultValues + "}"; } + return null; } return super.toDefaultValue(p); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java index 63b0e32dd680..7d6e7de5002c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/go/GoClientCodegenTest.java @@ -454,9 +454,11 @@ public void testArrayDefaultValue() throws IOException { List files = generator.opts(configurator.toClientOptInput()).generate(); files.forEach(File::deleteOnExit); Path apiPath = Paths.get(output + "/api_default.go"); - String defaultArrayString = "var defaultValue []interface{} = []interface{}{\"test1\", \"test2\", 1}"; + String defaultStringArrayString = "var defaultValue []string = []string{\"test1\", \"test2\"}"; + String defaultEnumArrayString = "var defaultValue []ExampleEnum = []ExampleEnum{\"example1\"}"; String defaultValueString = "var defaultValue string = \"test3\""; - TestUtils.assertFileContains(apiPath, defaultArrayString); + TestUtils.assertFileContains(apiPath, defaultStringArrayString); + TestUtils.assertFileContains(apiPath, defaultEnumArrayString); TestUtils.assertFileContains(apiPath, defaultValueString); } } diff --git a/modules/openapi-generator/src/test/resources/3_1/issue_21077.yaml b/modules/openapi-generator/src/test/resources/3_1/issue_21077.yaml index 8e19b1e6a88a..53892bbc8e4e 100644 --- a/modules/openapi-generator/src/test/resources/3_1/issue_21077.yaml +++ b/modules/openapi-generator/src/test/resources/3_1/issue_21077.yaml @@ -18,7 +18,16 @@ paths: in: query schema: type: array - default: ["test1", "test2", 1] + items: + type: string + default: ["test1", "test2"] + - name: "enumarrayparam" + in: query + schema: + type: array + items: + $ref: "#/components/schemas/ExampleEnum" + default: ["example1"] - name: "stringparam" in: query schema: @@ -27,3 +36,11 @@ paths: responses: 200: description: Ok + +components: + schemas: + ExampleEnum: + type: string + enum: + - example1 + - example2