From 39da276c7122892a57b0c8935e378786f51c1f8f Mon Sep 17 00:00:00 2001
From: "Sebastien Rosset (serosset)" <serosset@cisco.com>
Date: Fri, 3 Apr 2020 16:53:51 -0700
Subject: [PATCH 1/3] change x-oneOf-name to x-one-of-name.

---
 .../java/org/openapitools/codegen/DefaultCodegen.java     | 8 ++++----
 .../java/org/openapitools/codegen/DefaultCodegenTest.java | 6 +++---
 .../petstore/go-experimental/go-petstore/api/openapi.yaml | 6 +++---
 3 files changed, 10 insertions(+), 10 deletions(-)

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 b94bc71454e7..3361c8d7dc30 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
@@ -1849,8 +1849,8 @@ public String toAnyOfName(List<String> names, ComposedSchema composedSchema) {
     @SuppressWarnings("static-method")
     public String toOneOfName(List<String> names, ComposedSchema composedSchema) {
         Map<String, Object> exts = composedSchema.getExtensions();
-        if (exts != null && exts.containsKey("x-oneOf-name")) {
-            return (String) exts.get("x-oneOf-name");
+        if (exts != null && exts.containsKey("x-one-of-name")) {
+            return (String) exts.get("x-one-of-name");
         }
         return "oneOf<" + String.join(",", names) + ">";
     }
@@ -5756,13 +5756,13 @@ public void setRemoveEnumValuePrefix(final boolean removeEnumValuePrefix) {
 
     //// Following methods are related to the "useOneOfInterfaces" feature
     /**
-     * Add "x-oneOf-name" extension to a given oneOf schema (assuming it has at least 1 oneOf elements)
+     * Add "x-one-of-name" extension to a given oneOf schema (assuming it has at least 1 oneOf elements)
      * @param s schema to add the extension to
      * @param name name of the parent oneOf schema
      */
     public void addOneOfNameExtension(ComposedSchema s, String name) {
         if (s.getOneOf() != null && s.getOneOf().size() > 0) {
-            s.addExtension("x-oneOf-name", name);
+            s.addExtension("x-one-of-name", name);
         }
     }
 
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 ead422552b71..b93250658df9 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
@@ -1357,7 +1357,7 @@ public void testUseOneOfInterfaces() {
                         .get("application/json")
                         .getSchema()
                         .getExtensions()
-                        .get("x-oneOf-name"),
+                        .get("x-one-of-name"),
                 "CreateState"
         );
         Assert.assertEquals(
@@ -1370,11 +1370,11 @@ public void testUseOneOfInterfaces() {
                         .get("application/json")
                         .getSchema()
                         .getExtensions()
-                        .get("x-oneOf-name"),
+                        .get("x-one-of-name"),
                 "GetState200"
         );
         // for the array schema, assert that a oneOf interface was added to schema map
         Schema items = ((ArraySchema) openAPI.getComponents().getSchemas().get("CustomOneOfArraySchema")).getItems();
-        Assert.assertEquals(items.getExtensions().get("x-oneOf-name"), "CustomOneOfArraySchemaOneOf");
+        Assert.assertEquals(items.getExtensions().get("x-one-of-name"), "CustomOneOfArraySchemaOneOf");
     }
 }
diff --git a/samples/openapi3/client/petstore/go-experimental/go-petstore/api/openapi.yaml b/samples/openapi3/client/petstore/go-experimental/go-petstore/api/openapi.yaml
index e44571cb5f14..8f1a907787d2 100644
--- a/samples/openapi3/client/petstore/go-experimental/go-petstore/api/openapi.yaml
+++ b/samples/openapi3/client/petstore/go-experimental/go-petstore/api/openapi.yaml
@@ -1919,7 +1919,7 @@ components:
       properties:
         color:
           type: string
-      x-oneOf-name: Fruit
+      x-one-of-name: Fruit
     apple:
       properties:
         cultivar:
@@ -1939,7 +1939,7 @@ components:
       oneOf:
       - $ref: '#/components/schemas/whale'
       - $ref: '#/components/schemas/zebra'
-      x-oneOf-name: Mammal
+      x-one-of-name: Mammal
     whale:
       properties:
         hasBaleen:
@@ -1975,7 +1975,7 @@ components:
       oneOf:
       - $ref: '#/components/schemas/appleReq'
       - $ref: '#/components/schemas/bananaReq'
-      x-oneOf-name: FruitReq
+      x-one-of-name: FruitReq
     appleReq:
       properties:
         cultivar:

From b70a4ea76312f2c333dc5eafe40159abc4522002 Mon Sep 17 00:00:00 2001
From: "Sebastien Rosset (serosset)" <serosset@cisco.com>
Date: Fri, 3 Apr 2020 17:12:48 -0700
Subject: [PATCH 2/3] Add code comments

---
 .../main/java/org/openapitools/codegen/DefaultCodegen.java  | 6 +++++-
 1 file changed, 5 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 3361c8d7dc30..d631033c3b3d 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
@@ -1840,7 +1840,11 @@ public String toAnyOfName(List<String> names, ComposedSchema composedSchema) {
     }
 
     /**
-     * Return the name of the oneOf schema
+     * Return the name of the oneOf schema.
+     *
+     * If the 'x-one-of-name' extension is specified in the OAS document, return that value.
+     * Otherwise, a name is constructed by creating a comma-separated list of all the names
+     * of the oneOf schemas.
      *
      * @param names          List of names
      * @param composedSchema composed schema

From 18b5298385e31398a357b2fe53505c5e1e0a3098 Mon Sep 17 00:00:00 2001
From: "Sebastien Rosset (serosset)" <serosset@cisco.com>
Date: Fri, 3 Apr 2020 17:18:15 -0700
Subject: [PATCH 3/3] Add code comments

---
 .../src/main/java/org/openapitools/codegen/DefaultCodegen.java  | 2 ++
 1 file changed, 2 insertions(+)

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 d631033c3b3d..c57d0a70d541 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
@@ -1842,6 +1842,8 @@ public String toAnyOfName(List<String> names, ComposedSchema composedSchema) {
     /**
      * Return the name of the oneOf schema.
      *
+     * This name is used to set the value of CodegenProperty.openApiType.
+     *
      * If the 'x-one-of-name' extension is specified in the OAS document, return that value.
      * Otherwise, a name is constructed by creating a comma-separated list of all the names
      * of the oneOf schemas.