[FIX][PHP-NEXTGEN] Missing tagged union discriminator literal (#20343) (#20356)

* fix: https://github.com/OpenAPITools/openapi-generator/issues/20343

* chore: apply correct formatting
chore: build and package

---------

Co-authored-by: Christian Ascone <ascone.christian@gmail.com>

---------

Co-authored-by: Christian Ascone <ascone.christian@gmail.com>
This commit is contained in:
Brian Ferri 2024-12-22 14:51:34 +01:00 committed by GitHub
parent 4ea7f6088e
commit 401c8d0feb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 27 additions and 11 deletions

View File

@ -190,6 +190,12 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
return self::$openAPIModelName; return self::$openAPIModelName;
} }
{{#discriminator}}
{{#discriminator.mappedModels}}
public const {{#lambda.uppercase}}{{discriminator.propertyName}}_{{#lambda.snakecase}}{{mappingName}}{{/lambda.snakecase}}{{/lambda.uppercase}} = '{{mappingName}}';
{{/discriminator.mappedModels}}
{{/discriminator}}
{{^discriminator}}
{{#vars}} {{#vars}}
{{#isEnum}} {{#isEnum}}
{{#allowableValues}} {{#allowableValues}}
@ -199,6 +205,7 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
{{/allowableValues}} {{/allowableValues}}
{{/isEnum}} {{/isEnum}}
{{/vars}} {{/vars}}
{{/discriminator}}
{{#vars}} {{#vars}}
{{#isEnum}} {{#isEnum}}
@ -210,8 +217,15 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
public function {{getter}}AllowableValues() public function {{getter}}AllowableValues()
{ {
return [ return [
{{#discriminator}}
{{#discriminator.mappedModels}}
self::{{#lambda.uppercase}}{{discriminator.propertyName}}_{{#lambda.snakecase}}{{mappingName}}{{/lambda.snakecase}}{{/lambda.uppercase}},{{^-last}}
{{/-last}}{{/discriminator.mappedModels}}
{{/discriminator}}
{{^discriminator}}
{{#allowableValues}}{{#enumVars}}self::{{enumName}}_{{{name}}},{{^-last}} {{#allowableValues}}{{#enumVars}}self::{{enumName}}_{{{name}}},{{^-last}}
{{/-last}}{{/enumVars}}{{/allowableValues}} {{/-last}}{{/enumVars}}{{/allowableValues}}
{{/discriminator}}
]; ];
} }
@ -233,6 +247,11 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
*/ */
public function __construct(array $data = null) public function __construct(array $data = null)
{ {
{{#discriminator}}
// Initialize discriminator property with the model name.
$this->container['{{discriminatorName}}'] = static::$openAPIModelName;
{{/discriminator}}
{{#parentSchema}} {{#parentSchema}}
parent::__construct($data); parent::__construct($data);
@ -240,11 +259,6 @@ class {{classname}} {{#parentSchema}}extends {{{parent}}}{{/parentSchema}}{{^par
{{#vars}} {{#vars}}
$this->setIfExists('{{name}}', $data ?? [], {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}}); $this->setIfExists('{{name}}', $data ?? [], {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}null{{/defaultValue}});
{{/vars}} {{/vars}}
{{#discriminator}}
// Initialize discriminator property with the model name.
$this->container['{{discriminatorName}}'] = static::$openAPIModelName;
{{/discriminator}}
} }
/** /**

View File

@ -233,6 +233,8 @@ class Animal implements ModelInterface, ArrayAccess, JsonSerializable
return self::$openAPIModelName; return self::$openAPIModelName;
} }
public const CLASS_NAME_CAT = 'CAT';
public const CLASS_NAME_DOG = 'DOG';
/** /**
* Associative array for storing property values * Associative array for storing property values
@ -248,11 +250,11 @@ class Animal implements ModelInterface, ArrayAccess, JsonSerializable
*/ */
public function __construct(array $data = null) public function __construct(array $data = null)
{ {
$this->setIfExists('class_name', $data ?? [], null);
$this->setIfExists('color', $data ?? [], 'red');
// Initialize discriminator property with the model name. // Initialize discriminator property with the model name.
$this->container['class_name'] = static::$openAPIModelName; $this->container['class_name'] = static::$openAPIModelName;
$this->setIfExists('class_name', $data ?? [], null);
$this->setIfExists('color', $data ?? [], 'red');
} }
/** /**

View File

@ -261,11 +261,11 @@ class ParentWithNullable implements ModelInterface, ArrayAccess, JsonSerializabl
*/ */
public function __construct(array $data = null) public function __construct(array $data = null)
{ {
$this->setIfExists('type', $data ?? [], null);
$this->setIfExists('nullable_property', $data ?? [], null);
// Initialize discriminator property with the model name. // Initialize discriminator property with the model name.
$this->container['type'] = static::$openAPIModelName; $this->container['type'] = static::$openAPIModelName;
$this->setIfExists('type', $data ?? [], null);
$this->setIfExists('nullable_property', $data ?? [], null);
} }
/** /**