From c2fbe349ab5b3711d64a0486babef7c6b4d22db4 Mon Sep 17 00:00:00 2001 From: xhh Date: Wed, 24 Feb 2016 13:12:49 +0800 Subject: [PATCH] JS client: handle reserved words for property name Closes #2040 --- .../codegen/languages/JavascriptClientCodegen.java | 14 ++++++++++++++ .../src/main/resources/Javascript/model.mustache | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java index 9cd6fa935b4..0b56ffbbe81 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavascriptClientCodegen.java @@ -488,6 +488,20 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo } allowableValues.put("enumVars", enumVars); } + // set vendor-extension: x-hasMoreRequired + CodegenProperty lastRequired = null; + for (CodegenProperty var : cm.vars) { + if (var.required != null && var.required) { + lastRequired = var; + } + } + for (CodegenProperty var : cm.vars) { + if (var == lastRequired) { + var.vendorExtensions.put("x-hasMoreRequired", false); + } else if (var.required != null && var.required) { + var.vendorExtensions.put("x-hasMoreRequired", true); + } + } } return objs; } diff --git a/modules/swagger-codegen/src/main/resources/Javascript/model.mustache b/modules/swagger-codegen/src/main/resources/Javascript/model.mustache index 10eb99c65b6..9420afde771 100644 --- a/modules/swagger-codegen/src/main/resources/Javascript/model.mustache +++ b/modules/swagger-codegen/src/main/resources/Javascript/model.mustache @@ -18,7 +18,7 @@ {{#description}}/** * {{description}} **/{{/description}} - var {{classname}} = function {{classname}}({{#mandatory}}{{this}}{{^-last}}, {{/-last}}{{/mandatory}}) { {{#parent}}/* extends {{{parent}}}*/{{/parent}} + var {{classname}} = function {{classname}}({{#vars}}{{#required}}{{name}}{{#vendorExtensions.x-hasMoreRequired}}, {{/vendorExtensions.x-hasMoreRequired}}{{/required}}{{/vars}}) { {{#parent}}/* extends {{{parent}}}*/{{/parent}} {{#vars}}{{#required}} /**{{#description}} * {{{description}}}{{/description}}