Skip to content

Commit dddb3f3

Browse files
authored
Merge pull request #859 from swagger-api/tweaks-for-error-on-generator-tests
Tweaks for error on generator tests
2 parents 72afbbc + a6bf748 commit dddb3f3

File tree

69 files changed

+456
-296
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+456
-296
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@
252252
</dependency>
253253
</dependencies>
254254
<properties>
255-
<swagger-codegen-version>3.0.24</swagger-codegen-version>
255+
<swagger-codegen-version>3.0.25-SNAPSHOT</swagger-codegen-version>
256256
<swagger-parser-version>2.0.23</swagger-parser-version>
257257
<swagger-core-version>2.1.4</swagger-core-version>
258258
<jackson-version>2.10.3</jackson-version>

src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1475,6 +1475,8 @@ else if (schema instanceof ComposedSchema) {
14751475
addImport(codegenModel, "BigDecimal");
14761476
}
14771477
}
1478+
codegenModel.getVendorExtensions().put(CodegenConstants.IS_NULLABLE_EXT_NAME, Boolean.TRUE.equals(schema.getNullable()));
1479+
14781480
addVars(codegenModel, schema.getProperties(), schema.getRequired());
14791481
}
14801482

@@ -1580,9 +1582,8 @@ public CodegenProperty fromProperty(String name, Schema propertySchema) {
15801582
codegenProperty.defaultValue = toDefaultValue(propertySchema);
15811583
codegenProperty.defaultValueWithParam = toDefaultValueWithParam(name, propertySchema);
15821584
codegenProperty.jsonSchema = Json.pretty(propertySchema);
1583-
if (propertySchema.getNullable() != null) {
1584-
codegenProperty.nullable = propertySchema.getNullable();
1585-
}
1585+
codegenProperty.nullable = Boolean.TRUE.equals(propertySchema.getNullable());
1586+
codegenProperty.getVendorExtensions().put(CodegenConstants.IS_NULLABLE_EXT_NAME, Boolean.TRUE.equals(propertySchema.getNullable()));
15861587
if (propertySchema.getReadOnly() != null) {
15871588
codegenProperty.getVendorExtensions().put(CodegenConstants.IS_READ_ONLY_EXT_NAME, propertySchema.getReadOnly());
15881589
}
@@ -2520,14 +2521,14 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
25202521
LOGGER.warn("warning! Schema not found for parameter \"" + parameter.getName() + "\", using String");
25212522
parameterSchema = new StringSchema().description("//TODO automatically added by swagger-codegen.");
25222523
}
2523-
if (Boolean.TRUE.equals(parameterSchema.getNullable())) {
2524-
codegenParameter.nullable = true;
2525-
}
25262524
CodegenProperty codegenProperty = fromProperty(parameter.getName(), parameterSchema);
25272525

25282526
// set boolean flag (e.g. isString)
25292527
setParameterBooleanFlagWithCodegenProperty(codegenParameter, codegenProperty);
2530-
setParameterNullable(codegenParameter, codegenProperty);
2528+
setParameterNullable(codegenParameter, codegenProperty); //todo: needs to be removed
2529+
2530+
codegenParameter.nullable = Boolean.TRUE.equals(parameterSchema.getNullable());
2531+
codegenParameter.getVendorExtensions().put(CodegenConstants.IS_NULLABLE_EXT_NAME, Boolean.TRUE.equals(parameterSchema.getNullable()));
25312532

25322533
codegenParameter.dataType = codegenProperty.datatype;
25332534
codegenParameter.dataFormat = codegenProperty.dataFormat;
@@ -2901,6 +2902,11 @@ protected void setReservedWordsLowerCase(List<String> words) {
29012902
}
29022903
}
29032904

2905+
protected void setReservedWords(List<String> words) {
2906+
reservedWords = new HashSet<String>();
2907+
reservedWords.addAll(words);
2908+
}
2909+
29042910
protected boolean isReservedWord(String word) {
29052911
return word != null && reservedWords.contains(word.toLowerCase());
29062912
}

src/main/java/io/swagger/codegen/v3/generators/SchemaHandler.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,8 @@ protected void updateArrayModel(CodegenModel codegenModel, String schemaName, Ar
224224
this.codegenConfig.addParentContainer(codegenModel, codegenModel.name, arraySchema);
225225
codegenModel.defaultValue = this.codegenConfig.toDefaultValue(arraySchema);
226226
codegenModel.arrayModelType = this.codegenConfig.fromProperty(codegenModel.name, arraySchema).complexType;
227+
boolean isInterface = codegenModel.arrayModelType.startsWith(ALL_OF_PREFFIX) || codegenModel.arrayModelType.startsWith(ONE_OF_PREFFIX) || codegenModel.arrayModelType.startsWith(ANY_OF_PREFFIX);
228+
codegenModel.getVendorExtensions().put("x-array-model-type-is-interface", isInterface);
227229

228230
arraySchema.setItems(items);
229231
}

src/main/java/io/swagger/codegen/v3/generators/dotnet/AbstractCSharpCodegen.java

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -106,18 +106,18 @@ public AbstractCSharpCodegen() {
106106
Arrays.asList("IDictionary")
107107
);
108108

109-
setReservedWordsLowerCase(
109+
setReservedWords(
110110
Arrays.asList(
111111
// set "client" as a reserved word to avoid conflicts with IO.Swagger.Client
112112
// this is a workaround and can be removed if c# api client is updated to use
113113
// fully qualified name
114-
"Client", "client", "parameter", "File",
114+
"Client", "client", "parameter", "File", "List", "list",
115115
// local variable names in API methods (endpoints)
116116
"localVarPath", "localVarPathParams", "localVarQueryParams", "localVarHeaderParams",
117117
"localVarFormParams", "localVarFileParams", "localVarStatusCode", "localVarResponse",
118118
"localVarPostBody", "localVarHttpHeaderAccepts", "localVarHttpHeaderAccept",
119119
"localVarHttpContentTypes", "localVarHttpContentType",
120-
"localVarStatusCode",
120+
"localVarStatusCode", "ApiResponse", "apiresponse",
121121
// C# reserved words
122122
"abstract", "as", "base", "bool", "break", "byte", "case", "catch", "char", "checked",
123123
"class", "const", "continue", "decimal", "default", "delegate", "do", "double", "else",
@@ -743,19 +743,14 @@ public String toDefaultValue(Schema schema) {
743743
@Override
744744
protected boolean isReservedWord(String word) {
745745
// NOTE: This differs from super's implementation in that C# does _not_ want case insensitive matching.
746-
return reservedWords.contains(word);
746+
return reservedWords.contains(word.toLowerCase());
747747
}
748748

749749
@Override
750750
public String getSchemaType(Schema propertySchema) {
751751
String swaggerType = super.getSchemaType(propertySchema);
752752

753-
if (propertySchema.get$ref() != null) {
754-
final Schema refSchema = OpenAPIUtil.getSchemaFromName(swaggerType, this.openAPI);
755-
if (refSchema != null && !isObjectSchema(refSchema) && !(refSchema instanceof ArraySchema || refSchema instanceof MapSchema) && refSchema.getEnum() == null) {
756-
swaggerType = super.getSchemaType(refSchema);
757-
}
758-
}
753+
swaggerType = getRefSchemaTargetType(propertySchema, swaggerType);
759754

760755
String type;
761756

@@ -775,6 +770,20 @@ public String getSchemaType(Schema propertySchema) {
775770
return toModelName(type);
776771
}
777772

773+
protected String getRefSchemaTargetType(Schema schema, String schemaType) {
774+
if (schemaType == null) {
775+
return null;
776+
}
777+
if (schema != null && schema.get$ref() != null) {
778+
final Schema refSchema = OpenAPIUtil.getSchemaFromName(schemaType, this.openAPI);
779+
if (refSchema != null && !isObjectSchema(refSchema) && !(refSchema instanceof ArraySchema || refSchema instanceof MapSchema) && refSchema.getEnum() == null) {
780+
schemaType = super.getSchemaType(refSchema);
781+
}
782+
}
783+
return schemaType;
784+
785+
}
786+
778787
/**
779788
* Provides C# strongly typed declaration for simple arrays of some type and arrays of arrays of some type.
780789
* @param arr The input array property
@@ -1090,7 +1099,11 @@ public void addHandlebarHelpers(Handlebars handlebars) {
10901099
@Override
10911100
protected void addCodegenContentParameters(CodegenOperation codegenOperation, List<CodegenContent> codegenContents) {
10921101
for (CodegenContent content : codegenContents) {
1093-
addParameters(content, codegenOperation.bodyParams);
1102+
if (content.getIsForm()) {
1103+
addParameters(content, codegenOperation.formParams);
1104+
} else {
1105+
addParameters(content, codegenOperation.bodyParams);
1106+
}
10941107
addParameters(content, codegenOperation.headerParams);
10951108
addParameters(content, codegenOperation.queryParams);
10961109
addParameters(content, codegenOperation.pathParams);

src/main/java/io/swagger/codegen/v3/generators/dotnet/CSharpClientCodegen.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import io.swagger.codegen.v3.CodegenProperty;
1111
import io.swagger.codegen.v3.CodegenType;
1212
import io.swagger.codegen.v3.SupportingFile;
13-
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
1413
import io.swagger.v3.oas.models.media.Schema;
1514
import org.slf4j.Logger;
1615
import org.slf4j.LoggerFactory;
@@ -492,19 +491,6 @@ public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
492491
return objs;
493492
}
494493

495-
@Override
496-
public String getSchemaType(Schema schema) {
497-
String schemaType = super.getSchemaType(schema);
498-
499-
if (schema.get$ref() != null) {
500-
final Schema refSchema = OpenAPIUtil.getSchemaFromName(schemaType, this.openAPI);
501-
if (refSchema != null && !isObjectSchema(refSchema) && (refSchema.getEnum() == null || refSchema.getEnum().isEmpty())) {
502-
schemaType = super.getSchemaType(refSchema);
503-
}
504-
}
505-
return schemaType;
506-
}
507-
508494
@Override
509495
public CodegenType getTag() {
510496
return CodegenType.CLIENT;

src/main/java/io/swagger/codegen/v3/generators/go/AbstractGoCodegen.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -372,10 +372,7 @@ public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
372372
imports.add(createMapping("import", "time"));
373373
addedTimeImport = true;
374374
}
375-
}
376-
377-
// import "optionals" package if the parameter is primitive and optional
378-
if (!param.required && param.getIsPrimitiveType()) {
375+
} else {
379376
if (!addedOptionalImport) {
380377
imports.add(createMapping("import", "github.com/antihax/optional"));
381378
addedOptionalImport = true;

src/main/java/io/swagger/codegen/v3/generators/handlebars/StringUtilHelper.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ public String concat(String element, Options options) {
2020
return builder.toString();
2121
}
2222

23+
public String toLowerCase(String string) {
24+
return string.toLowerCase();
25+
}
26+
2327
public String backSlash() {
2428
return "\\";
2529
}

src/main/java/io/swagger/codegen/v3/generators/java/JavaJAXRSCXFCDIServerCodegen.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public void processOpts() {
4848

4949
super.processOpts();
5050

51+
importMapping.put("Valid", "javax.validation.Valid");
52+
5153
// Three API templates to support CDI injection
5254
apiTemplateFiles.put("apiService.mustache", ".java");
5355
apiTemplateFiles.put("apiServiceImpl.mustache", ".java");
@@ -79,6 +81,13 @@ public void processOpts() {
7981
@Override
8082
public void postProcessModelProperty(CodegenModel model, CodegenProperty property) {
8183
super.postProcessModelProperty(model, property);
84+
if (useBeanValidation) {
85+
final boolean importValidAnnotation = property.getIsContainer() && !property.getIsPrimitiveType() && !property.getIsEnum()
86+
|| !property.getIsContainer() && !property.getIsPrimitiveType();
87+
if (importValidAnnotation) {
88+
model.imports.add("Valid");
89+
}
90+
}
8291

8392
// Reinstate JsonProperty
8493
model.imports.add("JsonProperty");

src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,11 @@ protected void addCodegenContentParameters(CodegenOperation codegenOperation, Li
140140
addParameters(content, codegenOperation.queryParams);
141141
addParameters(content, codegenOperation.pathParams);
142142
addParameters(content, codegenOperation.cookieParams);
143-
addParameters(content, codegenOperation.bodyParams);
143+
if (content.getIsForm()) {
144+
addParameters(content, codegenOperation.formParams);
145+
} else {
146+
addParameters(content, codegenOperation.bodyParams);
147+
}
144148
}
145149
}
146150

@@ -698,6 +702,9 @@ private void removeHeadersFromContents(List<CodegenContent> contents) {
698702
private void forceOas2() {
699703
setUseOas2(true);
700704
additionalProperties.put(CodegenConstants.USE_OAS2, true);
705+
importMapping.put("ApiModelProperty", "io.swagger.annotations.ApiModelProperty");
706+
importMapping.put("ApiModel", "io.swagger.annotations.ApiModel");
707+
importMapping.remove("Schema");
701708
}
702709

703710
private boolean isSpringCloudLibrary() {

src/main/java/io/swagger/codegen/v3/generators/kotlin/AbstractKotlinCodegen.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import io.swagger.codegen.v3.CliOption;
44
import io.swagger.codegen.v3.CodegenConstants;
5+
import io.swagger.codegen.v3.CodegenModel;
6+
import io.swagger.codegen.v3.CodegenProperty;
57
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
68
import io.swagger.v3.oas.models.media.ArraySchema;
79
import io.swagger.v3.oas.models.media.MapSchema;
@@ -253,6 +255,13 @@ public String escapeUnsafeCharacters(String input) {
253255
return input.replace("*/", "*_/").replace("/*", "/_*");
254256
}
255257

258+
protected void updateCodegenModelEnumVars(CodegenModel codegenModel) {
259+
super.updateCodegenModelEnumVars(codegenModel);
260+
for (CodegenProperty var : codegenModel.allVars) {
261+
updateCodegenPropertyEnum(var);
262+
}
263+
}
264+
256265
/**
257266
* Output the type declaration of the property
258267
*
@@ -406,9 +415,10 @@ public String toEnumVarName(String value, String datatype) {
406415
} else {
407416
modified = value;
408417
modified = sanitizeKotlinSpecificNames(modified);
409-
modified = modified.toUpperCase();
410418
}
411419

420+
modified = modified.toUpperCase();
421+
412422
if (isReservedWord(modified)) {
413423
return escapeReservedWord(modified);
414424
}
@@ -572,4 +582,4 @@ protected boolean needToImport(String type) {
572582

573583
return imports;
574584
}
575-
}
585+
}

0 commit comments

Comments
 (0)