From 66c26198210644f947e4d70757c205cbf90be215 Mon Sep 17 00:00:00 2001 From: William Cheng <wing328hk@gmail.com> Date: Tue, 5 May 2020 18:20:28 +0800 Subject: [PATCH 1/3] fix map schema check --- .../main/java/org/openapitools/codegen/utils/ModelUtils.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index 7092f296171..e752f3633c4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -439,6 +439,11 @@ public class ModelUtils { * @return true if the specified schema is a Map schema. */ public static boolean isMapSchema(Schema schema) { + // make sure it's not free form object + if (isFreeFormObject(schema)) { + return false; + } + if (schema instanceof MapSchema) { return true; } -- GitLab From c8d3f5871793eefc872ebf6a4f85a4b5c5758ed4 Mon Sep 17 00:00:00 2001 From: William Cheng <wing328hk@gmail.com> Date: Tue, 5 May 2020 20:22:58 +0800 Subject: [PATCH 2/3] fix java tests --- .../org/openapitools/codegen/java/JavaClientCodegenTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 384c717f74f..e2219ee8ca1 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -543,7 +543,7 @@ public class JavaClientCodegenTest { Schema test1 = openAPI.getComponents().getSchemas().get("MapTest1"); codegen.setOpenAPI(openAPI); CodegenModel cm1 = codegen.fromModel("MapTest1", test1); - Assert.assertEquals(cm1.getDataType(), "Map"); + Assert.assertEquals(cm1.getDataType(), "Object"); Assert.assertEquals(cm1.getParent(), "HashMap<String, oas_any_type_not_mapped>"); Assert.assertEquals(cm1.getClassname(), "MapTest1"); @@ -748,7 +748,7 @@ public class JavaClientCodegenTest { // map final CodegenProperty cp4 = cm2.vars.get(3); Assert.assertEquals(cp4.baseName, "map_any_value"); - Assert.assertEquals(cp4.dataType, "Map<String, oas_any_type_not_mapped>"); + Assert.assertEquals(cp4.dataType, "Object"); Assert.assertTrue(cp4.hasMore); Assert.assertFalse(cp4.required); Assert.assertFalse(cp4.isPrimitiveType); -- GitLab From 19599fd17d728c428963e38f4738ad95d145c0d4 Mon Sep 17 00:00:00 2001 From: wing328 <wing328hk@gmail.com> Date: Mon, 18 May 2020 17:47:51 +0800 Subject: [PATCH 3/3] fix tests --- .../codegen/java/JavaClientCodegenTest.java | 30 +++++++++---------- .../codegen/java/JavaModelTest.java | 3 +- .../scalaakka/ScalaAkkaClientCodegenTest.java | 6 ++-- .../ScalaHttpClientModelTest.java | 2 +- .../TypeScriptFetchClientCodegenTest.java | 2 +- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 3cef2d8c241..37c051c8c85 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -543,22 +543,22 @@ public class JavaClientCodegenTest { Schema test1 = openAPI.getComponents().getSchemas().get("MapTest1"); codegen.setOpenAPI(openAPI); CodegenModel cm1 = codegen.fromModel("MapTest1", test1); - Assert.assertEquals(cm1.getDataType(), "Map"); - Assert.assertEquals(cm1.getParent(), "HashMap<String, Object>"); + Assert.assertEquals(cm1.getDataType(), "Object"); + Assert.assertNull(cm1.getParent()); Assert.assertEquals(cm1.getClassname(), "MapTest1"); Schema test2 = openAPI.getComponents().getSchemas().get("MapTest2"); codegen.setOpenAPI(openAPI); CodegenModel cm2 = codegen.fromModel("MapTest2", test2); - Assert.assertEquals(cm2.getDataType(), "Map"); - Assert.assertEquals(cm2.getParent(), "HashMap<String, Object>"); + Assert.assertEquals(cm2.getDataType(), "Object"); + Assert.assertNull(cm2.getParent()); Assert.assertEquals(cm2.getClassname(), "MapTest2"); Schema test3 = openAPI.getComponents().getSchemas().get("MapTest3"); codegen.setOpenAPI(openAPI); CodegenModel cm3 = codegen.fromModel("MapTest3", test3); - Assert.assertEquals(cm3.getDataType(), "Map"); - Assert.assertEquals(cm3.getParent(), "HashMap<String, Object>"); + Assert.assertEquals(cm3.getDataType(), "Object"); + Assert.assertNull(cm3.getParent()); Assert.assertEquals(cm3.getClassname(), "MapTest3"); Schema other = openAPI.getComponents().getSchemas().get("OtherObj"); @@ -748,34 +748,34 @@ public class JavaClientCodegenTest { // map final CodegenProperty cp4 = cm2.vars.get(3); Assert.assertEquals(cp4.baseName, "map_any_value"); - Assert.assertEquals(cp4.dataType, "Map<String, Object>"); + Assert.assertEquals(cp4.dataType, "Object"); Assert.assertTrue(cp4.hasMore); Assert.assertFalse(cp4.required); Assert.assertTrue(cp4.isPrimitiveType); - Assert.assertTrue(cp4.isContainer); - Assert.assertTrue(cp4.isMapContainer); + Assert.assertFalse(cp4.isContainer); + Assert.assertFalse(cp4.isMapContainer); Assert.assertTrue(cp4.isFreeFormObject); Assert.assertFalse(cp4.isAnyType); final CodegenProperty cp5 = cm2.vars.get(4); Assert.assertEquals(cp5.baseName, "map_any_value_with_desc"); - Assert.assertEquals(cp5.dataType, "Map<String, Object>"); + Assert.assertEquals(cp5.dataType, "Object"); Assert.assertTrue(cp5.hasMore); Assert.assertFalse(cp5.required); Assert.assertTrue(cp5.isPrimitiveType); - Assert.assertTrue(cp5.isContainer); - Assert.assertTrue(cp5.isMapContainer); + Assert.assertFalse(cp5.isContainer); + Assert.assertFalse(cp5.isMapContainer); Assert.assertTrue(cp5.isFreeFormObject); Assert.assertFalse(cp5.isAnyType); final CodegenProperty cp6 = cm2.vars.get(5); Assert.assertEquals(cp6.baseName, "map_any_value_nullable"); - Assert.assertEquals(cp6.dataType, "Map<String, Object>"); + Assert.assertEquals(cp6.dataType, "Object"); Assert.assertTrue(cp6.hasMore); Assert.assertFalse(cp6.required); Assert.assertTrue(cp6.isPrimitiveType); - Assert.assertTrue(cp6.isContainer); - Assert.assertTrue(cp6.isMapContainer); + Assert.assertFalse(cp6.isContainer); + Assert.assertFalse(cp6.isMapContainer); Assert.assertTrue(cp6.isFreeFormObject); Assert.assertFalse(cp6.isAnyType); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java index 1d01d7d2d6e..59958b09ad2 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaModelTest.java @@ -324,7 +324,8 @@ public class JavaModelTest { Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); Assert.assertEquals(cm.vars.size(), 1); - Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Map", "List", "Children")).size(), 3); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Map", "List", "Children")).size(), 0); + Assert.assertEquals(cm.imports, Sets.newHashSet("Map", "List", "Children")); final CodegenProperty property = cm.vars.get(0); Assert.assertEquals(property.baseName, "children"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalaakka/ScalaAkkaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalaakka/ScalaAkkaClientCodegenTest.java index e01425cac1c..d46ee66bfb5 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalaakka/ScalaAkkaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalaakka/ScalaAkkaClientCodegenTest.java @@ -258,14 +258,14 @@ public class ScalaAkkaClientCodegenTest { Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); Assert.assertEquals(cm.vars.size(), 1); - Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 0); final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "children"); - Assert.assertEquals(property1.complexType, "Children"); + Assert.assertNull(property1.complexType); Assert.assertEquals(property1.getter, "getChildren"); Assert.assertEquals(property1.setter, "setChildren"); - Assert.assertEquals(property1.dataType, "Map[String, Children]"); + Assert.assertEquals(property1.dataType, "Any"); Assert.assertEquals(property1.name, "children"); Assert.assertEquals(property1.defaultValue, "Map[String, Children].empty "); Assert.assertEquals(property1.baseType, "Map"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalahttpclient/ScalaHttpClientModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalahttpclient/ScalaHttpClientModelTest.java index a8871688e98..56fc3a7b7a7 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalahttpclient/ScalaHttpClientModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scalahttpclient/ScalaHttpClientModelTest.java @@ -253,7 +253,7 @@ public class ScalaHttpClientModelTest { Assert.assertEquals(cm.classname, "Sample"); Assert.assertEquals(cm.description, "a sample model"); Assert.assertEquals(cm.vars.size(), 1); - Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1); + Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 0); final CodegenProperty property1 = cm.vars.get(0); Assert.assertEquals(property1.baseName, "children"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java index f6b0678a414..1307cb73723 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java @@ -96,7 +96,7 @@ public class TypeScriptFetchClientCodegenTest { parentSchema = new MapSchema().additionalProperties(new Schema().$ref("#/components/schemas/Child")); ModelUtils.setGenerateAliasAsModel(false); - Assert.assertEquals(codegen.getTypeDeclaration(parentSchema), "{ [key: string]: Array<string>; }"); + Assert.assertEquals(codegen.getTypeDeclaration(parentSchema), "object"); ModelUtils.setGenerateAliasAsModel(true); Assert.assertEquals(codegen.getTypeDeclaration(parentSchema), "{ [key: string]: Child; }"); -- GitLab