From c79a557974c9b4c02fe865e102cafcaf1785075c Mon Sep 17 00:00:00 2001
From: Justin Black <justin.a.black@gmail.com>
Date: Tue, 12 Nov 2019 18:17:53 -0800
Subject: [PATCH 1/2] Adds comment in java test where we need to check the
 fruit model

---
 .../org/openapitools/codegen/ruby/RubyClientCodegenTest.java     | 1 +
 1 file changed, 1 insertion(+)

diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java
index b7bd1c69a51..64d5a8cba3d 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java
@@ -355,6 +355,7 @@ public class RubyClientCodegenTest {
         oneOf.add("Apple");
         oneOf.add("Banana");
         Assert.assertEquals(fruit.oneOf, oneOf);
+        // make sure that fruit has the property color
     }
 
     @Test(description = "test allOf (OAS3)")
-- 
GitLab


From bb6321b0550b3213e3c1ad74d59c3bda1daa5c34 Mon Sep 17 00:00:00 2001
From: Justin Black <justin.a.black@gmail.com>
Date: Wed, 13 Nov 2019 10:23:11 -0800
Subject: [PATCH 2/2] Adds oneOf test to DefaultCodegenTest.java, adds code to
 include properties in composed schema

---
 .../openapitools/codegen/DefaultCodegen.java  | 11 ++++++
 .../codegen/DefaultCodegenTest.java           | 35 +++++++++++++++++++
 .../codegen/ruby/RubyClientCodegenTest.java   |  1 -
 .../src/test/resources/3_0/oneOf.yaml         |  3 ++
 4 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index f29243ef151..b442d2dc111 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -1787,6 +1787,17 @@ public class DefaultCodegen implements CodegenConfig {
             Map<String, Schema> allProperties = new LinkedHashMap<String, Schema>();
             List<String> allRequired = new ArrayList<String>();
 
+            // if schema has properties outside of allOf/oneOf/anyOf also add them to m
+            if (schema.getProperties() != null) {
+                addVars(m, unaliasPropertySchema(schema.getProperties()), schema.getRequired(), null, null);
+            }
+
+            // uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved
+            // if schema has additionalproperties outside of allOf/oneOf/anyOf also add it to m
+            // if (schema.getAdditionalProperties() != null) {
+            //     addAdditionPropertiesToCodeGenModel(m, schema);
+            // }
+
             // parent model
             final String parentName = ModelUtils.getParentName(composed, allDefinitions);
             final List<String> allParents = ModelUtils.getAllParentsName(composed, allDefinitions);
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
index 8914a7edfdb..1cecde08c42 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java
@@ -268,6 +268,41 @@ public class DefaultCodegenTest {
         Assert.assertEquals(type, "oneOf<ObjA,ObjB>");
     }
 
+    @Test
+    public void testComposedSchemaOneOfWithProperties() {
+        final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/oneOf.yaml");
+        final DefaultCodegen codegen = new DefaultCodegen();
+
+        final Schema schema = openAPI.getComponents().getSchemas().get("fruit");
+        codegen.setOpenAPI(openAPI);
+        CodegenModel fruit = codegen.fromModel("Fruit", schema);
+
+        Set<String> oneOf = new TreeSet<String>();
+        oneOf.add("Apple");
+        oneOf.add("Banana");
+        Assert.assertEquals(fruit.oneOf, oneOf);
+        Assert.assertEquals(fruit.optionalVars.size(), 3);
+        Assert.assertEquals(fruit.vars.size(), 3);
+        // make sure that fruit has the property color
+        boolean colorSeen = false;
+        for (CodegenProperty cp : fruit.vars) {
+            if (cp.name.equals("color")) {
+                colorSeen = true;
+                break;
+            }
+        }
+        Assert.assertTrue(colorSeen);
+        colorSeen = false;
+        for (CodegenProperty cp : fruit.optionalVars) {
+            if (cp.name.equals("color")) {
+                colorSeen = true;
+                break;
+            }
+        }
+        Assert.assertTrue(colorSeen);
+    }
+
+
     @Test
     public void testEscapeText() {
         final DefaultCodegen codegen = new DefaultCodegen();
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java
index 64d5a8cba3d..b7bd1c69a51 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/ruby/RubyClientCodegenTest.java
@@ -355,7 +355,6 @@ public class RubyClientCodegenTest {
         oneOf.add("Apple");
         oneOf.add("Banana");
         Assert.assertEquals(fruit.oneOf, oneOf);
-        // make sure that fruit has the property color
     }
 
     @Test(description = "test allOf (OAS3)")
diff --git a/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml b/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml
index d98fcf6667a..b9f0938421e 100644
--- a/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml
+++ b/modules/openapi-generator/src/test/resources/3_0/oneOf.yaml
@@ -22,6 +22,9 @@ components:
          oneOf:
             - $ref: '#/components/schemas/apple'
             - $ref: '#/components/schemas/banana'
+         # additionalProperties:
+         #    type: string
+         # uncomment this when https://github.com/swagger-api/swagger-parser/issues/1252 is resolved
       apple:
          title: apple
          type: object
-- 
GitLab