From 0c5f34ed3191f5d8318a3afc9088cefc60b14f6d Mon Sep 17 00:00:00 2001 From: Troy Patterson Date: Sat, 13 Jun 2020 02:23:58 -0700 Subject: [PATCH] Modifying the es5 and es6 templates for javascript to handle default values for required fields better. This change ensures the required field isn't overridden with undefined when the object is constructed - especially through a chain of constructFromObject calls.. --- .../resources/Javascript/es6/partial_model_generic.mustache | 2 +- .../main/resources/Javascript/partial_model_generic.mustache | 5 +++++ samples/client/petstore/javascript-es6/src/model/Category.js | 2 +- .../petstore/javascript-promise-es6/src/model/Category.js | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_generic.mustache b/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_generic.mustache index 398194c0c64e..cc82b99becbd 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/es6/partial_model_generic.mustache @@ -26,7 +26,7 @@ class {{classname}} {{#parent}}{{^parentModel}}{{#vendorExtensions.x-is-array}}e * Only for internal use. */{{/emitJSDoc}} static initialize(obj{{#vendorExtensions.x-all-required}}, {{name}}{{/vendorExtensions.x-all-required}}) { {{#vars}}{{#required}} - obj['{{baseName}}'] = {{name}};{{/required}}{{/vars}} + {{#defaultValue}}obj['{{baseName}}'] = {{name}} || {{{defaultValue}}};{{/defaultValue}}{{^defaultValue}}obj['{{baseName}}'] = {{name}};{{/defaultValue}}{{/required}}{{/vars}} } {{#emitJSDoc}}/** diff --git a/modules/openapi-generator/src/main/resources/Javascript/partial_model_generic.mustache b/modules/openapi-generator/src/main/resources/Javascript/partial_model_generic.mustache index 8531f93ae001..e6fcc62c9e3c 100644 --- a/modules/openapi-generator/src/main/resources/Javascript/partial_model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/Javascript/partial_model_generic.mustache @@ -33,7 +33,12 @@ {{/useInheritance}} {{#vars}} {{#required}} + {{#defaultValue}} + _this['{{baseName}}'] = {{name}} || {{{defaultValue}}}; + {{/defaultValue}} + {{^defaultValue}} _this['{{baseName}}'] = {{name}}; + {{/defaultValue}} {{/required}} {{/vars}} {{#parent}} diff --git a/samples/client/petstore/javascript-es6/src/model/Category.js b/samples/client/petstore/javascript-es6/src/model/Category.js index 00d86502a632..557e8e186206 100644 --- a/samples/client/petstore/javascript-es6/src/model/Category.js +++ b/samples/client/petstore/javascript-es6/src/model/Category.js @@ -35,7 +35,7 @@ class Category { * Only for internal use. */ static initialize(obj, name) { - obj['name'] = name; + obj['name'] = name || 'default-name'; } /** diff --git a/samples/client/petstore/javascript-promise-es6/src/model/Category.js b/samples/client/petstore/javascript-promise-es6/src/model/Category.js index 00d86502a632..557e8e186206 100644 --- a/samples/client/petstore/javascript-promise-es6/src/model/Category.js +++ b/samples/client/petstore/javascript-promise-es6/src/model/Category.js @@ -35,7 +35,7 @@ class Category { * Only for internal use. */ static initialize(obj, name) { - obj['name'] = name; + obj['name'] = name || 'default-name'; } /**