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