From 7daa2ec5dace6fdfc10b632f408770fca303ab0a Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Sun, 1 Apr 2018 18:29:13 +0900 Subject: [PATCH 1/2] Fix broken discriminator --- .../src/main/java/org/openapitools/codegen/CodegenModel.java | 4 ++-- .../petstore/php/SwaggerClient-php/lib/Model/Animal.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 50c3248f5c1..2fd190b5e0e 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 @@ -331,8 +331,8 @@ public class CodegenModel { this.unescapedDescription = unescapedDescription; } - public Discriminator getDiscriminator() { - return discriminator; + public String getDiscriminator() { + return discriminator == null ? null : discriminator.getPropertyName(); } public void setDiscriminator(Discriminator discriminator) { diff --git a/samples/openapi3/client/petstore/php/SwaggerClient-php/lib/Model/Animal.php b/samples/openapi3/client/petstore/php/SwaggerClient-php/lib/Model/Animal.php index 76a22ff9280..aa5f32d9580 100644 --- a/samples/openapi3/client/petstore/php/SwaggerClient-php/lib/Model/Animal.php +++ b/samples/openapi3/client/petstore/php/SwaggerClient-php/lib/Model/Animal.php @@ -42,7 +42,7 @@ use \Swagger\Client\ObjectSerializer; */ class Animal implements ModelInterface, ArrayAccess { - const DISCRIMINATOR = 'Discriminator{propertyName='className', mapping=null}'; + const DISCRIMINATOR = 'className'; /** * The original name of the model. @@ -186,7 +186,7 @@ class Animal implements ModelInterface, ArrayAccess $this->container['color'] = isset($data['color']) ? $data['color'] : 'red'; // Initialize discriminator property with the model name. - $discriminator = array_search('Discriminator{propertyName='className', mapping=null}', self::$attributeMap); + $discriminator = array_search('className', self::$attributeMap); $this->container[$discriminator] = static::$swaggerModelName; } From 28fcf48f42027af7eccf9938e3ffa8de6a2cf7a7 Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Sun, 1 Apr 2018 19:38:19 +0900 Subject: [PATCH 2/2] Add a method returns discriminator name refs https://github.com/wing328/openapi-generator/pull/9#issuecomment-377776109 --- .../main/java/org/openapitools/codegen/CodegenModel.java | 6 +++++- .../src/main/resources/php/model_generic.mustache | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) 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 2fd190b5e0e..56993a8fc5a 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 @@ -331,7 +331,11 @@ public class CodegenModel { this.unescapedDescription = unescapedDescription; } - public String getDiscriminator() { + public Discriminator getDiscriminator() { + return discriminator; + } + + public String getDiscriminatorName() { return discriminator == null ? null : discriminator.getPropertyName(); } diff --git a/modules/openapi-generator/src/main/resources/php/model_generic.mustache b/modules/openapi-generator/src/main/resources/php/model_generic.mustache index c9300084b0f..375a216b409 100644 --- a/modules/openapi-generator/src/main/resources/php/model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/php/model_generic.mustache @@ -1,6 +1,6 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}} {{/parentSchema}}{{^parentSchema}}implements ModelInterface, ArrayAccess{{/parentSchema}} { - const DISCRIMINATOR = {{#discriminator}}'{{discriminator}}'{{/discriminator}}{{^discriminator}}null{{/discriminator}}; + const DISCRIMINATOR = {{#discriminator}}'{{discriminatorName}}'{{/discriminator}}{{^discriminator}}null{{/discriminator}}; /** * The original name of the model. @@ -166,7 +166,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}} {{/parentSchema}}{{^pa {{#discriminator}} // Initialize discriminator property with the model name. - $discriminator = array_search('{{discriminator}}', self::$attributeMap); + $discriminator = array_search('{{discriminatorName}}', self::$attributeMap); $this->container[$discriminator] = static::$swaggerModelName; {{/discriminator}} }