From f31712b42e78bda1db3039995b234c17366c6e85 Mon Sep 17 00:00:00 2001
From: "Sebastien Rosset (serosset)" <serosset@cisco.com>
Date: Wed, 1 Apr 2020 22:29:36 -0700
Subject: [PATCH 1/5] Add documentation and new getValidDiscriminatorMappings
 function

---
 .../openapitools/codegen/CodegenModel.java    | 27 +++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
index 36557914bb1..0de629a34ea 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
@@ -22,6 +22,9 @@ import io.swagger.v3.oas.models.ExternalDocumentation;
 
 import java.util.*;
 
+/**
+ * CodegenModel represents a schema object in a OpenAPI document.
+ */
 @JsonIgnoreProperties({"parentModel", "interfaceModels"})
 public class CodegenModel implements IJsonSchemaValidationProperties {
     // The parent model name from the schemas. The parent is determined by inspecting the allOf, anyOf and
@@ -195,6 +198,11 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
         this.description = description;
     }
 
+    /**
+     * Returns the discriminator for this schema object, or null if no discriminator has been specified.
+     * 
+     * @return the discriminator.
+     */
     public CodegenDiscriminator getDiscriminator() {
         return discriminator;
     }
@@ -203,6 +211,25 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
         this.discriminator = discriminator;
     }
 
+    /**
+     * Returns a list of allowed discriminator mapping values for this schema object.
+     * 
+     * @return the list of allowed discriminator mapping values.
+     */
+    public List<String> getValidDiscriminatorMappings() {
+        List<String> mappingValues = new ArrayList<String>();
+        for (CodegenDiscriminator.MappedModel mm : discriminator.getMappedModels()) {
+            if (name.equals(mm.getModelName())) {
+                mappingValues.add(mm.getMappingName());
+            }
+        }     
+        return mappingValues;   
+    }
+
+    /**
+     * Returns the name of the discriminator property for this schema in the OpenAPI document.
+     * @return the name of the discriminator property.
+     */
     public String getDiscriminatorName() {
         return discriminator == null ? null : discriminator.getPropertyName();
     }
-- 
GitLab


From bf53e4f5b4106d46aaae85dd9d023bf89bedc082 Mon Sep 17 00:00:00 2001
From: "Sebastien Rosset (serosset)" <serosset@cisco.com>
Date: Wed, 1 Apr 2020 22:47:28 -0700
Subject: [PATCH 2/5] Add documentation and new getValidDiscriminatorMappings
 function

---
 .../openapitools/codegen/CodegenModel.java    | 34 +++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
index 0de629a34ea..8effdf79e1b 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
@@ -214,6 +214,40 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
     /**
      * Returns a list of allowed discriminator mapping values for this schema object.
      * 
+     * The list of all possible schema discriminator mapping values is obtained
+     * from explicit discriminator mapping values in the OpenAPI document, and from
+     * inherited discriminators through oneOf, allOf, anyOf.
+     * For example, a discriminator may be defined in a 'Pet' schema as shown below.
+     * The Dog and Cat schemas inherit the discriminator through the allOf reference.
+     * In the 'Pet' schema, the supported discriminator mapping values for the
+     * 'objectType' properties are 'Dog' and 'Cat'.
+     * The allowed discriminator mapping value for the Dog schema is 'Dog'.
+     * The allowed discriminator mapping value for the Cat schema is 'Dog'.
+     * 
+     * Pet:
+     *   type: object
+     *   discriminator:
+     *     propertyName: objectType
+     *   required:
+     *     - objectType
+     *   properties:
+     *     objectType:
+     *     type: string
+     * Dog:
+     *   allOf:
+     *   - $ref: '#/components/schemas/Pet'
+     *   - type: object
+     *     properties:
+     *       p1:
+     *         type: string
+     * Cat:
+     *   allOf:
+     *   - $ref: '#/components/schemas/Pet'
+     *   - type: object
+     *     properties:
+     *       p2:
+     *         type: string
+     * 
      * @return the list of allowed discriminator mapping values.
      */
     public List<String> getValidDiscriminatorMappings() {
-- 
GitLab


From dc395481a96c28dbbbbeebe72f55c6cb9a7b4680 Mon Sep 17 00:00:00 2001
From: "Sebastien Rosset (serosset)" <serosset@cisco.com>
Date: Wed, 1 Apr 2020 22:51:04 -0700
Subject: [PATCH 3/5] Add documentation and new getValidDiscriminatorMappings
 function

---
 .../src/main/java/org/openapitools/codegen/CodegenModel.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
index 8effdf79e1b..1458b3736b2 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
@@ -250,7 +250,7 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
      * 
      * @return the list of allowed discriminator mapping values.
      */
-    public List<String> getValidDiscriminatorMappings() {
+    public List<String> getAllowedDiscriminatorMappingValues() {
         List<String> mappingValues = new ArrayList<String>();
         for (CodegenDiscriminator.MappedModel mm : discriminator.getMappedModels()) {
             if (name.equals(mm.getModelName())) {
-- 
GitLab


From af27e33c159e08ab443ea0c4b50e4df928188879 Mon Sep 17 00:00:00 2001
From: "Sebastien Rosset (serosset)" <serosset@cisco.com>
Date: Thu, 2 Apr 2020 07:42:37 -0700
Subject: [PATCH 4/5] Add documentation and new getValidDiscriminatorMappings
 function

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

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
index 1458b3736b2..dd41cf05083 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
@@ -262,6 +262,10 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
 
     /**
      * Returns the name of the discriminator property for this schema in the OpenAPI document.
+     * In the OpenAPI document, the discriminator may be specified in the local schema or
+     * it may be inherited, such as through a 'allOf' schema which references another schema
+     * that has a discriminator, recursively.
+     * 
      * @return the name of the discriminator property.
      */
     public String getDiscriminatorName() {
-- 
GitLab


From bacb663dfff4928bef935408443660ce26992f55 Mon Sep 17 00:00:00 2001
From: "Sebastien Rosset (serosset)" <serosset@cisco.com>
Date: Thu, 2 Apr 2020 08:48:07 -0700
Subject: [PATCH 5/5] add documentation

---
 .../java/org/openapitools/codegen/CodegenDiscriminator.java  | 1 +
 .../src/main/java/org/openapitools/codegen/CodegenModel.java | 5 +++++
 2 files changed, 6 insertions(+)

diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java
index 73d85052e70..baa91fb2209 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenDiscriminator.java
@@ -11,6 +11,7 @@ public class CodegenDiscriminator {
     private String propertyName;
     private String propertyBaseName;
     private String propertyGetter;
+    // The implementation type for the language generator being executed.
     private String propertyType;
     private Map<String, String> mapping;
     private Set<MappedModel> mappedModels = new LinkedHashSet<>();
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
index dd41cf05083..4739b1cec27 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenModel.java
@@ -201,6 +201,11 @@ public class CodegenModel implements IJsonSchemaValidationProperties {
     /**
      * Returns the discriminator for this schema object, or null if no discriminator has been specified.
      * 
+     * The returned value is null if no discriminator is defined for this local schema.
+     * The value is also null when the discriminators are inherited through references in the
+     * OpenAPI document. For example, a schema may have a 'allOf' attribute and the allOf
+     * referenced children define a discriminator, recursively.
+     * 
      * @return the discriminator.
      */
     public CodegenDiscriminator getDiscriminator() {
-- 
GitLab