From bfdd49a2b2855c0f554f77f85d520df5121d5363 Mon Sep 17 00:00:00 2001 From: wing328 Date: Tue, 3 May 2016 18:24:00 +0800 Subject: [PATCH] add new JS enum mustache template --- .../partial_model_enum_class.mustache | 24 ++++ .../Javascript/partial_model_generic.mustache | 103 ++++++++++++++++++ .../partial_model_inner_enum.mustache | 21 ++++ 3 files changed, 148 insertions(+) create mode 100644 modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache create mode 100644 modules/swagger-codegen/src/main/resources/Javascript/partial_model_generic.mustache create mode 100644 modules/swagger-codegen/src/main/resources/Javascript/partial_model_inner_enum.mustache diff --git a/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache new file mode 100644 index 000000000000..c7d18d358414 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_enum_class.mustache @@ -0,0 +1,24 @@ +{{#emitJSDoc}} + /** + * Enum class {{classname}}. + * @enum {{=<% %>=}}{<%datatype%>}<%={{ }}=%> + * @readonly + */ +{{/emitJSDoc}} + exports.{{classname}} = { + {{#allowableValues}} + {{#values}} +{{#emitJSDoc}} + /** + * value: {{{.}}} + * @const + */ +{{/emitJSDoc}} + "{{{.}}}": "{{{.}}}"{{^-last}}, + {{/-last}} + {{/values}} + {{/allowableValues}} + }; + + return exports; +})); diff --git a/modules/swagger-codegen/src/main/resources/Javascript/partial_model_generic.mustache b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_generic.mustache new file mode 100644 index 000000000000..d8a9d250a4a2 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_generic.mustache @@ -0,0 +1,103 @@ + +{{#models}}{{#model}} +{{#emitJSDoc}} + /** + * The {{classname}} model module. + * @module {{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}} + * @version {{projectVersion}} + */ + + /** + * Constructs a new {{classname}}.{{#description}} + * {{description}}{{/description}} + * @alias module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}} + * @class{{#useInheritance}}{{#parent}} + * @extends {{#parentModel}}module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{classname}}{{/parentModel}}{{^parentModel}}{{#vendorExtensions.x-isArray}}Array{{/vendorExtensions.x-isArray}}{{#vendorExtensions.x-isMap}}Object{{/vendorExtensions.x-isMap}}{{/parentModel}}{{/parent}}{{#interfaces}} + * @implements module:{{#invokerPackage}}{{invokerPackage}}/{{/invokerPackage}}{{#modelPackage}}{{modelPackage}}/{{/modelPackage}}{{.}}{{/interfaces}}{{/useInheritance}}{{#vendorExtensions.x-all-required}} + * @param {{.}}{{/vendorExtensions.x-all-required}} + */ +{{/emitJSDoc}} + var exports = function({{#vendorExtensions.x-all-required}}{{.}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-all-required}}) { + var _this = this; +{{#parent}}{{^parentModel}}{{#vendorExtensions.x-isArray}} _this = new Array(); + Object.setPrototypeOf(_this, exports); +{{/vendorExtensions.x-isArray}}{{/parentModel}}{{/parent}}{{#useInheritance}}{{#parentModel}} {{classname}}.call(_this{{#vendorExtensions.x-all-required}}, {{.}}{{/vendorExtensions.x-all-required}});{{/parentModel}} +{{#interfaceModels}} {{classname}}.call(_this{{#vendorExtensions.x-all-required}}, {{.}}{{/vendorExtensions.x-all-required}}); +{{/interfaceModels}}{{/useInheritance}}{{#vars}}{{#required}} _this['{{baseName}}'] = {{name}};{{/required}} +{{/vars}}{{#parent}}{{^parentModel}} return _this; +{{/parentModel}}{{/parent}} }; + +{{#emitJSDoc}} + /** + * Constructs a {{classname}} from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {{=< >=}}{module:<#invokerPackage>/<#modelPackage>/}<={{ }}=> obj Optional instance to populate. + * @return {{=< >=}}{module:<#invokerPackage>/<#modelPackage>/}<={{ }}=> The populated {{classname}} instance. + */ +{{/emitJSDoc}} + exports.constructFromObject = function(data, obj) { + if (data){{! TODO: support polymorphism: discriminator property on data determines class to instantiate.}} { + obj = obj || new exports(); +{{#parent}}{{^parentModel}} ApiClient.constructFromObject(data, obj, {{vendorExtensions.x-itemType}}); +{{/parentModel}}{{/parent}}{{#useInheritance}}{{#parentModel}} {{classname}}.constructFromObject(data, obj);{{/parentModel}} +{{#interfaces}} {{.}}.constructFromObject(data, obj); +{{/interfaces}}{{/useInheritance}}{{#vars}} if (data.hasOwnProperty('{{baseName}}')) { + obj['{{baseName}}']{{{defaultValueWithParam}}} + } +{{/vars}} } + return obj; + } +{{#useInheritance}}{{#parentModel}} + exports.prototype = Object.create({{classname}}.prototype); + exports.prototype.constructor = exports; +{{/parentModel}}{{/useInheritance}} +{{#vars}} +{{#emitJSDoc}} + /**{{#description}} + * {{{description}}}{{/description}} + * @member {{{vendorExtensions.x-jsdoc-type}}} {{baseName}}{{#defaultValue}} + * @default {{{defaultValue}}}{{/defaultValue}} + */ +{{/emitJSDoc}} + exports.prototype['{{baseName}}'] = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}undefined{{/defaultValue}}; +{{/vars}}{{#useInheritance}}{{#interfaceModels}} + // Implement {{classname}} interface:{{#allVars}} +{{#emitJSDoc}} + /**{{#description}} + * {{{description}}}{{/description}} + * @member {{{vendorExtensions.x-jsdoc-type}}} {{baseName}}{{#defaultValue}} + * @default {{{defaultValue}}}{{/defaultValue}} + */ +{{/emitJSDoc}} +exports.prototype['{{baseName}}'] = {{#defaultValue}}{{{defaultValue}}}{{/defaultValue}}{{^defaultValue}}undefined{{/defaultValue}}; +{{/allVars}}{{/interfaceModels}}{{/useInheritance}} +{{#emitModelMethods}}{{#vars}} +{{#emitJSDoc}} + /**{{#description}} + * Returns {{{description}}}{{/description}}{{#minimum}} + * minimum: {{minimum}}{{/minimum}}{{#maximum}} + * maximum: {{maximum}}{{/maximum}} + * @return {{{vendorExtensions.x-jsdoc-type}}} + */ +{{/emitJSDoc}} + exports.prototype.{{getter}} = function() { + return this['{{baseName}}']; + } + +{{#emitJSDoc}} + /**{{#description}} + * Sets {{{description}}}{{/description}} + * @param {{{vendorExtensions.x-jsdoc-type}}} {{name}}{{#description}} {{{description}}}{{/description}} + */ +{{/emitJSDoc}} + exports.prototype.{{setter}} = function({{name}}) { + this['{{baseName}}'] = {{name}}; + } + +{{/vars}}{{/emitModelMethods}} +{{#vars}}{{#isEnum}}{{>partial_model_inner_enum}}{{/isEnum}}{{#items.isEnum}}{{#items}} +{{>partial_model_inner_enum}}{{/items}}*/{{/items.isEnum}}{{/vars}} + + return exports; +{{/model}}{{/models}}})); diff --git a/modules/swagger-codegen/src/main/resources/Javascript/partial_model_inner_enum.mustache b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_inner_enum.mustache new file mode 100644 index 000000000000..a8b981316d1c --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/Javascript/partial_model_inner_enum.mustache @@ -0,0 +1,21 @@ +{{#emitJSDoc}} + /** + * Allowed values for the {{baseName}} property. + * @enum {{=<% %>=}}{<%datatype%>}<%={{ }}=%> + * @readonly + */ +{{/emitJSDoc}} + exports.{{datatypeWithEnum}} = { + {{#allowableValues}} + {{#enumVars}} +{{#emitJSDoc}} + /** + * value: {{{value}}} + * @const + */ +{{/emitJSDoc}} + "{{name}}": {{{value}}}{{^-last}}, + {{/-last}} + {{/enumVars}} + {{/allowableValues}} + };