@@ -96,6 +96,7 @@ public class JavascriptClientCodegen extends DefaultCodegen implements CodegenCo
96
96
protected String apiTestPath = "api/" ;
97
97
protected String modelTestPath = "model/" ;
98
98
protected boolean useES6 = false ; // default is ES5
99
+ private String modelPropertyNaming = "camelCase" ;
99
100
100
101
public JavascriptClientCodegen () {
101
102
super ();
@@ -200,6 +201,7 @@ public JavascriptClientCodegen() {
200
201
cliOptions .add (new CliOption (USE_ES6 ,
201
202
"use JavaScript ES6 (ECMAScript 6) (beta). Default is ES5." )
202
203
.defaultValue (Boolean .FALSE .toString ()));
204
+ cliOptions .add (new CliOption (CodegenConstants .MODEL_PROPERTY_NAMING , CodegenConstants .MODEL_PROPERTY_NAMING_DESC ).defaultValue ("camelCase" ));
203
205
}
204
206
205
207
@ Override
@@ -265,6 +267,9 @@ public void processOpts() {
265
267
if (additionalProperties .containsKey (EMIT_JS_DOC )) {
266
268
setEmitJSDoc (convertPropertyToBooleanAndWriteBack (EMIT_JS_DOC ));
267
269
}
270
+ if (additionalProperties .containsKey (CodegenConstants .MODEL_PROPERTY_NAMING )) {
271
+ setModelPropertyNaming ((String ) additionalProperties .get (CodegenConstants .MODEL_PROPERTY_NAMING ));
272
+ }
268
273
}
269
274
270
275
@ Override
@@ -485,6 +490,22 @@ public String toModelTestFilename(String name) {
485
490
return toModelName (name ) + ".spec" ;
486
491
}
487
492
493
+ public String getModelPropertyNaming () {
494
+ return this .modelPropertyNaming ;
495
+ }
496
+
497
+ private String getNameUsingModelPropertyNaming (String name ) {
498
+ switch (CodegenConstants .MODEL_PROPERTY_NAMING_TYPE .valueOf (getModelPropertyNaming ())) {
499
+ case original : return name ;
500
+ case camelCase : return camelize (name , true );
501
+ case PascalCase : return camelize (name );
502
+ case snake_case : return underscore (name );
503
+ default : throw new IllegalArgumentException ("Invalid model property naming '" +
504
+ name + "'. Must be 'original', 'camelCase', " +
505
+ "'PascalCase' or 'snake_case'" );
506
+ }
507
+ }
508
+
488
509
@ Override
489
510
public String toVarName (String name ) {
490
511
// sanitize name
@@ -501,7 +522,7 @@ public String toVarName(String name) {
501
522
502
523
// camelize (lower first character) the variable name
503
524
// pet_id => petId
504
- name = camelize (name , true );
525
+ name = getNameUsingModelPropertyNaming (name );
505
526
506
527
// for reserved word or word starting with number, append _
507
528
if (isReservedWord (name ) || name .matches ("^\\ d.*" )) {
@@ -621,6 +642,17 @@ public String toDefaultValue(Property p) {
621
642
return null ;
622
643
}
623
644
645
+ public void setModelPropertyNaming (String naming ) {
646
+ if ("original" .equals (naming ) || "camelCase" .equals (naming ) ||
647
+ "PascalCase" .equals (naming ) || "snake_case" .equals (naming )) {
648
+ this .modelPropertyNaming = naming ;
649
+ } else {
650
+ throw new IllegalArgumentException ("Invalid model property naming '" +
651
+ naming + "'. Must be 'original', 'camelCase', " +
652
+ "'PascalCase' or 'snake_case'" );
653
+ }
654
+ }
655
+
624
656
@ Override
625
657
public String toDefaultValueWithParam (String name , Property p ) {
626
658
String type = normalizeType (getTypeDeclaration (p ));
0 commit comments