Skip to content

Commit 6c08748

Browse files
authored
Merge branch 'master' into ts-angular-ModuleWithProviders-fx
2 parents 0f38d0c + f3710d3 commit 6c08748

File tree

164 files changed

+3190
-633
lines changed

Some content is hidden

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

164 files changed

+3190
-633
lines changed

pom.xml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<groupId>io.swagger.codegen.v3</groupId>
1414
<artifactId>swagger-codegen-generators</artifactId>
15-
<version>1.0.24-SNAPSHOT</version>
15+
<version>1.0.28-SNAPSHOT</version>
1616
<packaging>jar</packaging>
1717

1818
<build>
@@ -252,10 +252,10 @@
252252
</dependency>
253253
</dependencies>
254254
<properties>
255-
<swagger-codegen-version>3.0.24-SNAPSHOT</swagger-codegen-version>
256-
<swagger-parser-version>2.0.23</swagger-parser-version>
257-
<swagger-core-version>2.1.4</swagger-core-version>
258-
<jackson-version>2.10.3</jackson-version>
255+
<swagger-codegen-version>3.0.28-SNAPSHOT</swagger-codegen-version>
256+
<swagger-parser-version>2.0.27</swagger-parser-version>
257+
<swagger-core-version>2.1.10</swagger-core-version>
258+
<jackson-version>2.12.1</jackson-version>
259259
<scala-version>2.11.1</scala-version>
260260
<felix-version>3.3.0</felix-version>
261261
<commons-io-version>2.4</commons-io-version>

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

Lines changed: 54 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -396,21 +396,25 @@ private String findEnumName(int truncateIdx, Object value) {
396396
}
397397

398398
/**
399-
* Returns the common prefix of variables for enum naming
399+
* Returns the common prefix of variables for enum naming if
400+
* two or more variables are present.
400401
*
401402
* @param vars List of variable names
402403
* @return the common prefix for naming
403404
*/
404405
public String findCommonPrefixOfVars(List<Object> vars) {
405-
try {
406-
String[] listStr = vars.toArray(new String[vars.size()]);
407-
String prefix = StringUtils.getCommonPrefix(listStr);
408-
// exclude trailing characters that should be part of a valid variable
409-
// e.g. ["status-on", "status-off"] => "status-" (not "status-o")
410-
return prefix.replaceAll("[a-zA-Z0-9]+\\z", "");
411-
} catch (ArrayStoreException e) {
412-
return "";
406+
if (vars.size() > 1) {
407+
try {
408+
String[] listStr = vars.toArray(new String[vars.size()]);
409+
String prefix = StringUtils.getCommonPrefix(listStr);
410+
// exclude trailing characters that should be part of a valid variable
411+
// e.g. ["status-on", "status-off"] => "status-" (not "status-o")
412+
return prefix.replaceAll("[a-zA-Z0-9]+\\z", "");
413+
} catch (ArrayStoreException e) {
414+
// do nothing, just return default value
415+
}
413416
}
417+
return "";
414418
}
415419

416420
/**
@@ -1475,6 +1479,8 @@ else if (schema instanceof ComposedSchema) {
14751479
addImport(codegenModel, "BigDecimal");
14761480
}
14771481
}
1482+
codegenModel.getVendorExtensions().put(CodegenConstants.IS_NULLABLE_EXT_NAME, Boolean.TRUE.equals(schema.getNullable()));
1483+
14781484
addVars(codegenModel, schema.getProperties(), schema.getRequired());
14791485
}
14801486

@@ -1580,9 +1586,8 @@ public CodegenProperty fromProperty(String name, Schema propertySchema) {
15801586
codegenProperty.defaultValue = toDefaultValue(propertySchema);
15811587
codegenProperty.defaultValueWithParam = toDefaultValueWithParam(name, propertySchema);
15821588
codegenProperty.jsonSchema = Json.pretty(propertySchema);
1583-
if (propertySchema.getNullable() != null) {
1584-
codegenProperty.nullable = propertySchema.getNullable();
1585-
}
1589+
codegenProperty.nullable = Boolean.TRUE.equals(propertySchema.getNullable());
1590+
codegenProperty.getVendorExtensions().put(CodegenConstants.IS_NULLABLE_EXT_NAME, Boolean.TRUE.equals(propertySchema.getNullable()));
15861591
if (propertySchema.getReadOnly() != null) {
15871592
codegenProperty.getVendorExtensions().put(CodegenConstants.IS_READ_ONLY_EXT_NAME, propertySchema.getReadOnly());
15881593
}
@@ -2150,8 +2155,12 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
21502155
CodegenParameter codegenParameter = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
21512156
codegenParameter.description = body.getDescription();
21522157
codegenParameter.unescapedDescription = body.getDescription();
2153-
codegenParameter.baseName = REQUEST_BODY_NAME;
2154-
codegenParameter.paramName = REQUEST_BODY_NAME;
2158+
String bodyName = REQUEST_BODY_NAME;
2159+
if (body.getExtensions() != null && body.getExtensions().get("x-codegen-request-body-name") != null) {
2160+
bodyName = body.getExtensions().get("x-codegen-request-body-name").toString();
2161+
}
2162+
codegenParameter.baseName = bodyName;
2163+
codegenParameter.paramName = bodyName;
21552164
codegenParameter.dataType = "Object";
21562165
codegenParameter.baseType = "Object";
21572166

@@ -2230,11 +2239,7 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
22302239
}
22312240
}
22322241

2233-
for (String i : imports) {
2234-
if (needToImport(i)) {
2235-
codegenOperation.imports.add(i);
2236-
}
2237-
}
2242+
addOperationImports(codegenOperation, imports);
22382243

22392244
codegenOperation.bodyParam = bodyParam;
22402245
codegenOperation.httpMethod = httpMethod.toUpperCase();
@@ -2288,6 +2293,14 @@ public int compare(CodegenParameter one, CodegenParameter another) {
22882293
return codegenOperation;
22892294
}
22902295

2296+
protected void addOperationImports(CodegenOperation codegenOperation, Set<String> operationImports) {
2297+
for (String operationImport : operationImports) {
2298+
if (needToImport(operationImport)) {
2299+
codegenOperation.imports.add(operationImport);
2300+
}
2301+
}
2302+
}
2303+
22912304
/**
22922305
* Convert Swagger Response object to Codegen Response object
22932306
*
@@ -2516,14 +2529,14 @@ public CodegenParameter fromParameter(Parameter parameter, Set<String> imports)
25162529
LOGGER.warn("warning! Schema not found for parameter \"" + parameter.getName() + "\", using String");
25172530
parameterSchema = new StringSchema().description("//TODO automatically added by swagger-codegen.");
25182531
}
2519-
if (Boolean.TRUE.equals(parameterSchema.getNullable())) {
2520-
codegenParameter.nullable = true;
2521-
}
25222532
CodegenProperty codegenProperty = fromProperty(parameter.getName(), parameterSchema);
25232533

25242534
// set boolean flag (e.g. isString)
25252535
setParameterBooleanFlagWithCodegenProperty(codegenParameter, codegenProperty);
2526-
setParameterNullable(codegenParameter, codegenProperty);
2536+
setParameterNullable(codegenParameter, codegenProperty); //todo: needs to be removed
2537+
2538+
codegenParameter.nullable = Boolean.TRUE.equals(parameterSchema.getNullable());
2539+
codegenParameter.getVendorExtensions().put(CodegenConstants.IS_NULLABLE_EXT_NAME, Boolean.TRUE.equals(parameterSchema.getNullable()));
25272540

25282541
codegenParameter.dataType = codegenProperty.datatype;
25292542
codegenParameter.dataFormat = codegenProperty.dataFormat;
@@ -2653,8 +2666,13 @@ else if (parameter instanceof FormParameter) {
26532666

26542667
public CodegenParameter fromRequestBody(RequestBody body, String name, Schema schema, Map<String, Schema> schemas, Set<String> imports) {
26552668
CodegenParameter codegenParameter = CodegenModelFactory.newInstance(CodegenModelType.PARAMETER);
2656-
codegenParameter.baseName = REQUEST_BODY_NAME;
2657-
codegenParameter.paramName = REQUEST_BODY_NAME;
2669+
2670+
String bodyName = REQUEST_BODY_NAME;
2671+
if (body.getExtensions() != null && body.getExtensions().get("x-codegen-request-body-name") != null) {
2672+
bodyName = body.getExtensions().get("x-codegen-request-body-name").toString();
2673+
}
2674+
codegenParameter.baseName = bodyName;
2675+
codegenParameter.paramName = bodyName;
26582676
codegenParameter.description = body.getDescription();
26592677
codegenParameter.unescapedDescription = body.getDescription();
26602678
codegenParameter.required = body.getRequired() != null ? body.getRequired() : Boolean.FALSE;
@@ -2765,7 +2783,7 @@ else if (schema instanceof BinarySchema) {
27652783
codegenParameter.getVendorExtensions().put(CodegenConstants.IS_BINARY_EXT_NAME, Boolean.TRUE);
27662784
}
27672785
else {
2768-
CodegenProperty codegenProperty = fromProperty(REQUEST_BODY_NAME, schema);
2786+
CodegenProperty codegenProperty = fromProperty(bodyName, schema);
27692787
codegenParameter.dataType = codegenProperty.datatype;
27702788
codegenParameter.baseType = codegenProperty.baseType;
27712789
if (codegenProperty.complexType != null) {
@@ -2892,6 +2910,11 @@ protected void setReservedWordsLowerCase(List<String> words) {
28922910
}
28932911
}
28942912

2913+
protected void setReservedWords(List<String> words) {
2914+
reservedWords = new HashSet<String>();
2915+
reservedWords.addAll(words);
2916+
}
2917+
28952918
protected boolean isReservedWord(String word) {
28962919
return word != null && reservedWords.contains(word.toLowerCase());
28972920
}
@@ -4368,8 +4391,11 @@ protected void addParameters(CodegenContent codegenContent, List<CodegenParamete
43684391

43694392
protected void addCodegenContentParameters(CodegenOperation codegenOperation, List<CodegenContent> codegenContents) {
43704393
for (CodegenContent content : codegenContents) {
4371-
addParameters(content, codegenOperation.bodyParams);
4372-
addParameters(content, codegenOperation.formParams);
4394+
if (content.getIsForm()) {
4395+
addParameters(content, codegenOperation.formParams);
4396+
} else {
4397+
addParameters(content, codegenOperation.bodyParams);
4398+
}
43734399
addParameters(content, codegenOperation.headerParams);
43744400
addParameters(content, codegenOperation.queryParams);
43754401
addParameters(content, codegenOperation.pathParams);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ protected CodegenModel processArrayItemSchema(String codegenModelName, CodegenPr
140140
return null;
141141
}
142142
this.updatePropertyDataType(codegenProperty, composedModel.name, arraySchema);
143+
this.updatePropertyDataType(codegenProperty.items, composedModel);
143144
return composedModel;
144145
}
145146
return null;
@@ -208,6 +209,7 @@ protected void updatePropertyDataType(CodegenProperty codegenProperty, String sc
208209
arraySchema.setItems(refSchema);
209210
codegenProperty.setDatatype(this.codegenConfig.getTypeDeclaration(arraySchema));
210211
codegenProperty.setDatatypeWithEnum(codegenProperty.getDatatype());
212+
codegenProperty.vendorExtensions.put("x-is-composed", true);
211213

212214
codegenProperty.defaultValue = this.codegenConfig.toDefaultValue(arraySchema);
213215
codegenProperty.defaultValueWithParam = this.codegenConfig.toDefaultValueWithParam(codegenProperty.baseName, arraySchema);
@@ -224,6 +226,8 @@ protected void updateArrayModel(CodegenModel codegenModel, String schemaName, Ar
224226
this.codegenConfig.addParentContainer(codegenModel, codegenModel.name, arraySchema);
225227
codegenModel.defaultValue = this.codegenConfig.toDefaultValue(arraySchema);
226228
codegenModel.arrayModelType = this.codegenConfig.fromProperty(codegenModel.name, arraySchema).complexType;
229+
boolean isInterface = codegenModel.arrayModelType.startsWith(ALL_OF_PREFFIX) || codegenModel.arrayModelType.startsWith(ONE_OF_PREFFIX) || codegenModel.arrayModelType.startsWith(ANY_OF_PREFFIX);
230+
codegenModel.getVendorExtensions().put("x-array-model-type-is-interface", isInterface);
227231

228232
arraySchema.setItems(items);
229233
}
@@ -233,5 +237,6 @@ private void updatePropertyDataType(CodegenProperty codegenProperty, CodegenMode
233237
codegenProperty.datatypeWithEnum = composedModel.getClassname();
234238
codegenProperty.baseType = composedModel.getClassname();
235239
codegenProperty.complexType = composedModel.getClassname();
240+
codegenProperty.vendorExtensions.put("x-is-composed", true);
236241
}
237242
}

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: 2 additions & 16 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;
@@ -614,8 +600,8 @@ public void postProcessPattern(String pattern, Map<String, Object> vendorExtensi
614600

615601
//Must follow Perl /pattern/modifiers convention
616602
if (pattern.charAt(0) != '/' || i < 2) {
617-
throw new IllegalArgumentException("Pattern must follow the Perl "
618-
+ "/pattern/modifiers convention. " + pattern + " is not valid.");
603+
pattern = String.format("/%s/", pattern);;
604+
i = pattern.lastIndexOf('/');
619605
}
620606

621607
String regex = pattern.substring(1, i).replace("'", "\'");

src/main/java/io/swagger/codegen/v3/generators/examples/ExampleGenerator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,10 @@ private Object resolveSchemaToExample(String propertyName, String mediaType, Sch
195195
Schema innerType = ((ArraySchema) schema).getItems();
196196
if (innerType != null) {
197197
int arrayLength = schema.getMaxItems() != null ? schema.getMaxItems() : 2;
198+
if (arrayLength > 10) {
199+
logger.warn("value of maxItems of property {} is {}; limiting to 10 examples", schema, arrayLength);
200+
arrayLength = 10;
201+
}
198202
Object[] objectProperties = new Object[arrayLength];
199203
Object objProperty = resolveSchemaToExample(propertyName, mediaType, innerType, processedModels);
200204
for(int i=0; i < arrayLength; i++) {

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/go/GoServerCodegen.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public void processOpts() {
9898
* it will be processed by the template engine. Otherwise, it will be copied
9999
*/
100100
supportingFiles.add(new SupportingFile("swagger.mustache", "api", "swagger.yaml"));
101+
supportingFiles.add(new SupportingFile("Dockerfile", "", "Dockerfile"));
101102
supportingFiles.add(new SupportingFile("main.mustache", "", "main.go"));
102103
supportingFiles.add(new SupportingFile("routers.mustache", apiPath, "routers.go"));
103104
supportingFiles.add(new SupportingFile("logger.mustache", apiPath, "logger.go"));

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
}

0 commit comments

Comments
 (0)