@@ -54,13 +54,15 @@ public abstract class AbstractJavaCodegen extends DefaultCodegenConfig {
54
54
public static final String DEFAULT_LIBRARY = "<default>" ;
55
55
public static final String DATE_LIBRARY = "dateLibrary" ;
56
56
public static final String JAVA8_MODE = "java8" ;
57
+ public static final String JAVA11_MODE = "java11" ;
57
58
public static final String WITH_XML = "withXml" ;
58
59
public static final String SUPPORT_JAVA6 = "supportJava6" ;
59
60
public static final String ERROR_ON_UNKNOWN_ENUM = "errorOnUnknownEnum" ;
60
61
public static final String CHECK_DUPLICATED_MODEL_NAME = "checkDuplicatedModelName" ;
61
62
62
63
protected String dateLibrary = "threetenbp" ;
63
64
protected boolean java8Mode = false ;
65
+ protected boolean java11Mode = false ;
64
66
protected boolean withXml = false ;
65
67
protected String invokerPackage = "io.swagger" ;
66
68
protected String groupId = "io.swagger" ;
@@ -165,6 +167,7 @@ public AbstractJavaCodegen() {
165
167
CliOption dateLibrary = new CliOption (DATE_LIBRARY , "Option. Date library to use" );
166
168
Map <String , String > dateOptions = new HashMap <String , String >();
167
169
dateOptions .put ("java8" , "Java 8 native JSR310 (preferred for jdk 1.8+) - note: this also sets \" " + JAVA8_MODE + "\" to true" );
170
+ dateOptions .put ("java11" , "Java 11 native JSR384 (preferred for jdk 11+) - note: this also sets \" " + JAVA11_MODE + "\" to true" );
168
171
dateOptions .put ("threetenbp" , "Backport of JSR310 (preferred for jdk < 1.8)" );
169
172
dateOptions .put ("java8-localdatetime" , "Java 8 using LocalDateTime (for legacy app only)" );
170
173
dateOptions .put ("joda" , "Joda (for legacy app only)" );
@@ -187,16 +190,16 @@ public void processOpts() {
187
190
this .setInvokerPackage ((String ) additionalProperties .get (CodegenConstants .INVOKER_PACKAGE ));
188
191
} else if (additionalProperties .containsKey (CodegenConstants .API_PACKAGE )) {
189
192
// guess from api package
190
- String derviedInvokerPackage = deriveInvokerPackageName ((String )additionalProperties .get (CodegenConstants .API_PACKAGE ));
191
- this .additionalProperties .put (CodegenConstants .INVOKER_PACKAGE , derviedInvokerPackage );
193
+ String derivedInvokerPackage = deriveInvokerPackageName ((String )additionalProperties .get (CodegenConstants .API_PACKAGE ));
194
+ this .additionalProperties .put (CodegenConstants .INVOKER_PACKAGE , derivedInvokerPackage );
192
195
this .setInvokerPackage ((String ) additionalProperties .get (CodegenConstants .INVOKER_PACKAGE ));
193
- LOGGER .info ("Invoker Package Name, originally not set, is now dervied from api package name: " + derviedInvokerPackage );
196
+ LOGGER .info ("Invoker Package Name, originally not set, is now derived from api package name: " + derivedInvokerPackage );
194
197
} else if (additionalProperties .containsKey (CodegenConstants .MODEL_PACKAGE )) {
195
198
// guess from model package
196
- String derviedInvokerPackage = deriveInvokerPackageName ((String )additionalProperties .get (CodegenConstants .MODEL_PACKAGE ));
197
- this .additionalProperties .put (CodegenConstants .INVOKER_PACKAGE , derviedInvokerPackage );
199
+ String derivedInvokerPackage = deriveInvokerPackageName ((String )additionalProperties .get (CodegenConstants .MODEL_PACKAGE ));
200
+ this .additionalProperties .put (CodegenConstants .INVOKER_PACKAGE , derivedInvokerPackage );
198
201
this .setInvokerPackage ((String ) additionalProperties .get (CodegenConstants .INVOKER_PACKAGE ));
199
- LOGGER .info ("Invoker Package Name, originally not set, is now dervied from model package name: " + derviedInvokerPackage );
202
+ LOGGER .info ("Invoker Package Name, originally not set, is now derived from model package name: " + derivedInvokerPackage );
200
203
} else if (StringUtils .isNotEmpty (invokerPackage )) {
201
204
// not set in additionalProperties, add value from CodegenConfig in order to use it in templates
202
205
additionalProperties .put (CodegenConstants .INVOKER_PACKAGE , invokerPackage );
@@ -211,7 +214,7 @@ public void processOpts() {
211
214
apiDocTemplateFiles .put ("api_doc.mustache" , ".md" );
212
215
213
216
if (additionalProperties .containsKey (SUPPORT_JAVA6 )) {
214
- this .setSupportJava6 (Boolean . valueOf ( additionalProperties . get ( SUPPORT_JAVA6 ). toString ()));
217
+ this .setSupportJava6 (false ); // JAVA 6 not supported
215
218
}
216
219
additionalProperties .put (SUPPORT_JAVA6 , supportJava6 );
217
220
@@ -424,12 +427,10 @@ public void processOpts() {
424
427
// used later in recursive import in postProcessingModels
425
428
importMapping .put ("com.fasterxml.jackson.annotation.JsonProperty" , "com.fasterxml.jackson.annotation.JsonCreator" );
426
429
427
- if (additionalProperties .containsKey (JAVA8_MODE )) {
428
- setJava8Mode (Boolean .parseBoolean (additionalProperties .get (JAVA8_MODE ).toString ()));
429
- if ( java8Mode ) {
430
- additionalProperties .put ("java8" , true );
431
- }
432
- }
430
+ setJava8Mode (Boolean .parseBoolean (String .valueOf (additionalProperties .get (JAVA8_MODE ))));
431
+ additionalProperties .put (JAVA8_MODE , java8Mode );
432
+ setJava11Mode (Boolean .parseBoolean (String .valueOf (additionalProperties .get (JAVA11_MODE ))));
433
+ additionalProperties .put (JAVA11_MODE , java11Mode );
433
434
434
435
if (additionalProperties .containsKey (WITH_XML )) {
435
436
setWithXml (Boolean .parseBoolean (additionalProperties .get (WITH_XML ).toString ()));
@@ -492,6 +493,15 @@ private void sanitizeConfig() {
492
493
}
493
494
}
494
495
496
+ protected String escapeUnderscore (String name ) {
497
+ // Java 8 discourages naming things _, but Java 9 does not allow it.
498
+ if ("_" .equals (name )) {
499
+ return "_u" ;
500
+ } else {
501
+ return name ;
502
+ }
503
+ }
504
+
495
505
@ Override
496
506
public String escapeReservedWord (String name ) {
497
507
if (this .reservedWordsMappings ().containsKey (name )) {
@@ -562,11 +572,9 @@ public String toVarName(String name) {
562
572
return "propertyClass" ;
563
573
}
564
574
565
- if ("_" .equals (name )) {
566
- name = "_u" ;
567
- }
575
+ name = escapeUnderscore (name );
568
576
569
- // if it's all uppper case, do nothing
577
+ // if it's all upper case, do nothing
570
578
if (name .matches ("^[A-Z_]*$" )) {
571
579
return name ;
572
580
}
@@ -1015,11 +1023,15 @@ protected void fixUpParentAndInterfaces(CodegenModel codegenModel, Map<String, C
1015
1023
continue ;
1016
1024
}
1017
1025
boolean hasConflict = parentModel .vars .stream ()
1018
- .anyMatch (parentProperty -> parentProperty .name .equals (codegenProperty .name ) && !parentProperty .datatype .equals (codegenProperty .datatype ));
1026
+ .anyMatch (parentProperty ->
1027
+ (parentProperty .name .equals (codegenProperty .name ) ||
1028
+ parentProperty .getGetter ().equals (codegenProperty .getGetter ()) ||
1029
+ parentProperty .getSetter ().equals (codegenProperty .getSetter ()) &&
1030
+ !parentProperty .datatype .equals (codegenProperty .datatype )));
1019
1031
if (hasConflict ) {
1020
1032
codegenProperty .name = toVarName (codegenModel .name + "_" + codegenProperty .name );
1021
1033
codegenProperty .getter = toGetter (codegenProperty .name );
1022
- codegenProperty .setter = toGetter (codegenProperty .name );
1034
+ codegenProperty .setter = toSetter (codegenProperty .name );
1023
1035
break ;
1024
1036
}
1025
1037
parentModel = parentModel .parentModel ;
@@ -1233,15 +1245,6 @@ protected void replaceDuplicatedInModelProperties(Map<String, Schema> definition
1233
1245
schema .set$ref (schema .get$ref ().replace (modelName , newModelName ));
1234
1246
});
1235
1247
}
1236
- /*
1237
- @Override
1238
- public String findCommonPrefixOfVars(List<String> vars) {
1239
- String prefix = StringUtils.getCommonPrefix(vars.toArray(new String[vars.size()]));
1240
- // exclude trailing characters that should be part of a valid variable
1241
- // e.g. ["status-on", "status-off"] => "status-" (not "status-o")
1242
- return prefix.replaceAll("[a-zA-Z0-9]+\\z", "");
1243
- }
1244
- */
1245
1248
1246
1249
@ Override
1247
1250
public String toEnumName (CodegenProperty property ) {
@@ -1273,7 +1276,7 @@ public String toEnumVarName(String value, String datatype) {
1273
1276
if (var .matches ("\\ d.*" )) {
1274
1277
return "_" + var ;
1275
1278
} else {
1276
- return var ;
1279
+ return escapeUnderscore ( var ). toUpperCase () ;
1277
1280
}
1278
1281
}
1279
1282
@@ -1536,6 +1539,10 @@ public void setJava8Mode(boolean enabled) {
1536
1539
this .java8Mode = enabled ;
1537
1540
}
1538
1541
1542
+ public void setJava11Mode (boolean java11Mode ) {
1543
+ this .java11Mode = java11Mode ;
1544
+ }
1545
+
1539
1546
@ Override
1540
1547
public String escapeQuotationMark (String input ) {
1541
1548
// remove " to avoid code injection
0 commit comments