diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index b46c23aa7b54..a695d550cdec 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -394,7 +394,7 @@ public String getTypeDeclaration(Schema p) { inner = new StringSchema().description("TODO default missing map inner type to string"); p.setAdditionalProperties(inner); } - return getSchemaType(target) + ""; + return getSchemaType(target) + ""; } return super.getTypeDeclaration(target); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java index e9149c073734..fe04c75e18d7 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java @@ -383,6 +383,24 @@ public void handleInheritanceWithObjectTypeShouldNotBeAMap() { Assert.assertTrue(mapSchemaModel.isMap); } + @Test(description = "Issue #16501") + public void testNullableMap() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/kotlin/issue16501-nullable-map.yaml"); + + Schema test1 = openAPI.getComponents().getSchemas().get("NullMapNotNullMap"); + CodegenModel cm1 = codegen.fromModel("NullMapNotNullMap", test1); + + codegen.postProcessModels(createCodegenModelWrapper(cm1)); + + // Assert the dataType properly generated + CodegenProperty nullableMap = cm1.vars.get(0); + CodegenProperty notNullableMap = cm1.vars.get(1); + CodegenProperty defaultMap = cm1.vars.get(2); + Assert.assertEquals(nullableMap.getDataType(), "kotlin.collections.Map"); + Assert.assertEquals(notNullableMap.getDataType(), "kotlin.collections.Map"); + Assert.assertEquals(defaultMap.getDataType(), "kotlin.collections.Map"); + } + @Test public void handleUseJakartaEeTrue() { codegen.additionalProperties().put("useJakartaEe", true); diff --git a/modules/openapi-generator/src/test/resources/3_0/kotlin/issue16501-nullable-map.yaml b/modules/openapi-generator/src/test/resources/3_0/kotlin/issue16501-nullable-map.yaml new file mode 100644 index 000000000000..86ed91b8657f --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/kotlin/issue16501-nullable-map.yaml @@ -0,0 +1,22 @@ +openapi: 3.0.0 +info: + title: 'Issue 16501 Nullable map' + version: latest +components: + schemas: + NullMapNotNullMap: + properties: + nullableMap: + type: object + additionalProperties: + type: string + nullable: true + notNullableMap: + type: object + additionalProperties: + type: string + nullable: false + defaultMap: + type: object + additionalProperties: + type: string