Fix discriminator name not following variable naming convention (#1742)

* fix discrimintator name not following variable naming convention

* fix test

* update samples

* use discriminator name directly in php

* single quote array index
This commit is contained in:
William Cheng 2018-12-24 10:17:43 +08:00 committed by GitHub
parent aed2c882da
commit 0dee995ebb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 14 additions and 15 deletions

View File

@ -235,6 +235,7 @@ public class DefaultCodegen implements CodegenConfig {
allModels.put(modelName, cm);
}
}
// Fix up all parent and interface CodegenModel references.
for (CodegenModel cm : allModels.values()) {
if (cm.getParent() != null) {
@ -250,6 +251,7 @@ public class DefaultCodegen implements CodegenConfig {
}
}
}
// Let parent know about all its children
for (String name : allModels.keySet()) {
CodegenModel cm = allModels.get(name);
@ -1820,7 +1822,7 @@ public class DefaultCodegen implements CodegenConfig {
return null;
}
CodegenDiscriminator discriminator = new CodegenDiscriminator();
discriminator.setPropertyName(schema.getDiscriminator().getPropertyName());
discriminator.setPropertyName(toVarName(schema.getDiscriminator().getPropertyName()));
discriminator.setMapping(schema.getDiscriminator().getMapping());
if (schema.getDiscriminator().getMapping() != null && !schema.getDiscriminator().getMapping().isEmpty()) {
for (Entry<String, String> e : schema.getDiscriminator().getMapping().entrySet()) {

View File

@ -166,8 +166,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}} {{/parentSchema}}{{^pa
{{#discriminator}}
// Initialize discriminator property with the model name.
$discriminator = array_search('{{discriminatorName}}', self::$attributeMap, true);
$this->container[$discriminator] = static::$openAPIModelName;
$this->container['{{discriminatorName}}'] = static::$openAPIModelName;
{{/discriminator}}
}

View File

@ -534,7 +534,7 @@ public class DefaultCodegenTest {
private void verifyPersonDiscriminator(CodegenDiscriminator discriminator) {
CodegenDiscriminator test = new CodegenDiscriminator();
test.setPropertyName("$_type");
test.setPropertyName("DollarUnderscoretype");
test.setMapping(new HashMap<>());
test.getMapping().put("a", "#/components/schemas/Adult");
test.getMapping().put("c", "#/components/schemas/Child");

View File

@ -44,9 +44,9 @@ components:
firstName:
type: string
duplicated_optional:
type: string
type: integer
duplicated_required:
type: string
type: integer
person_required:
type: string
format: date-time

View File

@ -29,7 +29,7 @@ namespace Org.OpenAPITools.Model
/// Animal
/// </summary>
[DataContract]
[JsonConverter(typeof(JsonSubtypes), "className")]
[JsonConverter(typeof(JsonSubtypes), "ClassName")]
[JsonSubtypes.KnownSubType(typeof(Dog), "Dog")]
[JsonSubtypes.KnownSubType(typeof(Cat), "Cat")]
public partial class Animal : IEquatable<Animal>, IValidatableObject

View File

@ -42,7 +42,7 @@ use \OpenAPI\Client\ObjectSerializer;
*/
class Animal implements ModelInterface, ArrayAccess
{
const DISCRIMINATOR = 'className';
const DISCRIMINATOR = 'class_name';
/**
* The original name of the model.
@ -186,8 +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('className', self::$attributeMap, true);
$this->container[$discriminator] = static::$openAPIModelName;
$this->container['class_name'] = static::$openAPIModelName;
}
/**

View File

@ -36,7 +36,7 @@ module Petstore
# discriminator's property name in OpenAPI v3
def self.openapi_discriminator_name
:'className'
:'class_name'
end
# Initializes the object

View File

@ -42,7 +42,7 @@ use \OpenAPI\Client\ObjectSerializer;
*/
class Animal implements ModelInterface, ArrayAccess
{
const DISCRIMINATOR = 'className';
const DISCRIMINATOR = 'class_name';
/**
* The original name of the model.
@ -186,8 +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('className', self::$attributeMap, true);
$this->container[$discriminator] = static::$openAPIModelName;
$this->container['class_name'] = static::$openAPIModelName;
}
/**

View File

@ -36,7 +36,7 @@ module Petstore
# discriminator's property name in OpenAPI v3
def self.openapi_discriminator_name
:'className'
:'class_name'
end
# Initializes the object