Skip to content

Commit 10a9c62

Browse files
committed
merged
2 parents a6bd077 + a2fda60 commit 10a9c62

File tree

107 files changed

+2619
-403
lines changed

Some content is hidden

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

107 files changed

+2619
-403
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,9 @@ CONFIG OPTIONS
276276
apiPackage
277277
package for generated api classes
278278
279+
sortParamsByRequiredFlag
280+
Sort method arguments to place required parameters before optional parameters. Default: true
281+
279282
invokerPackage
280283
root package for generated code
281284
@@ -291,6 +294,12 @@ CONFIG OPTIONS
291294
sourceFolder
292295
source folder for generated code
293296
297+
localVariablePrefix
298+
prefix for generated code members and local variables
299+
300+
serializableModel
301+
boolean - toggle "implements Serializable" for generated models
302+
294303
library
295304
library template (sub-template) to use:
296305
<default> - HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2

bin/all-petstore.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ cd $APP_DIR
3333
./bin/perl-petstore.sh
3434
./bin/php-petstore.sh
3535
./bin/python-petstore.sh
36-
./bin/python3-petstore.sh
3736
./bin/qt5-petstore.sh
3837
./bin/ruby-petstore.sh
3938
./bin/scala-async-petstore.sh

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenParameter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77

88
public class CodegenParameter {
99
public Boolean isFormParam, isQueryParam, isPathParam, isHeaderParam,
10-
isCookieParam, isBodyParam, isFile, notFile, hasMore, isContainer, secondaryParam, isBinary;
10+
isCookieParam, isBodyParam, isFile, notFile, hasMore, isContainer,
11+
secondaryParam, isBinary, isCollectionFormatMulti;
1112
public String baseName, paramName, dataType, collectionFormat, description, baseType, defaultValue;
1213
public String jsonSchema;
1314
public boolean isEnum;
@@ -33,6 +34,7 @@ public CodegenParameter copy() {
3334
output.paramName = this.paramName;
3435
output.dataType = this.dataType;
3536
output.collectionFormat = this.collectionFormat;
37+
output.isCollectionFormatMulti = this.isCollectionFormatMulti;
3638
output.description = this.description;
3739
output.baseType = this.baseType;
3840
output.isFormParam = this.isFormParam;

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -492,10 +492,16 @@ public String getSwaggerType(Property p) {
492492
} else if (p instanceof DecimalProperty) {
493493
datatype = "number";
494494
} else if (p instanceof RefProperty) {
495-
RefProperty r = (RefProperty) p;
496-
datatype = r.get$ref();
497-
if (datatype.indexOf("#/definitions/") == 0) {
498-
datatype = datatype.substring("#/definitions/".length());
495+
try {
496+
RefProperty r = (RefProperty) p;
497+
datatype = r.get$ref();
498+
if (datatype.indexOf("#/definitions/") == 0) {
499+
datatype = datatype.substring("#/definitions/".length());
500+
}
501+
} catch (Exception e) {
502+
LOGGER.warn("Error obtaining the datatype from RefProperty:" + p + ". Datatype default to Object");
503+
datatype = "Object";
504+
e.printStackTrace();
499505
}
500506
} else {
501507
if (p != null) {
@@ -584,7 +590,7 @@ public CodegenModel fromModel(String name, Model model, Map<String, Model> allDe
584590
}
585591
}
586592
// interfaces (intermediate models)
587-
if (allDefinitions != null) {
593+
if (allDefinitions != null && composed.getInterfaces() != null) {
588594
for (RefModel _interface : composed.getInterfaces()) {
589595
final String interfaceRef = toModelName(_interface.getSimpleRef());
590596
final Model interfaceModel = allDefinitions.get(interfaceRef);
@@ -1038,7 +1044,7 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
10381044
}
10391045
}
10401046
for (String i : imports) {
1041-
if (!defaultIncludes.contains(i) && !languageSpecificPrimitives.contains(i)) {
1047+
if (needToImport(i)) {
10421048
op.imports.add(i);
10431049
}
10441050
}
@@ -1199,6 +1205,9 @@ public CodegenParameter fromParameter(Parameter param, Set<String> imports) {
11991205
p._enum = model._enum;
12001206
p.allowableValues = model.allowableValues;
12011207
p.collectionFormat = collectionFormat;
1208+
if(collectionFormat != null && collectionFormat.equals("multi")) {
1209+
p.isCollectionFormatMulti = true;
1210+
}
12021211
p.paramName = toParamName(qp.getName());
12031212

12041213
if (model.complexType != null) {
@@ -1311,6 +1320,12 @@ public List<CodegenSecurity> fromSecurity(Map<String, SecuritySchemeDefinition>
13111320
return secs;
13121321
}
13131322

1323+
protected boolean needToImport(String type) {
1324+
return !defaultIncludes.contains(type)
1325+
&& !languageSpecificPrimitives.contains(type)
1326+
&& type.indexOf(".") < 0;
1327+
}
1328+
13141329
protected List<Map<String, Object>> toExamples(Map<String, Object> examples) {
13151330
if (examples == null) {
13161331
return null;
@@ -1414,7 +1429,7 @@ public static String underscore(String word) {
14141429
}
14151430

14161431
private void addImport(CodegenModel m, String type) {
1417-
if (type != null && !languageSpecificPrimitives.contains(type) && !defaultIncludes.contains(type)) {
1432+
if (type != null && needToImport(type)) {
14181433
m.imports.add(type);
14191434
}
14201435
}
@@ -1593,8 +1608,8 @@ protected CliOption buildLibraryCliOption(Map<String, String> supportedLibraries
15931608
* @return sanitized string
15941609
*/
15951610
public String sanitizeName(String name) {
1596-
// NOTE: performance wise, we should have written with 2 replaceAll to replace desired
1597-
// character with _ or empty character. Below aims to spell out different cases we've
1611+
// NOTE: performance wise, we should have written with 2 replaceAll to replace desired
1612+
// character with _ or empty character. Below aims to spell out different cases we've
15981613
// encountered so far and hopefully make it easier for others to add more special
15991614
// cases in the future.
16001615

@@ -1617,7 +1632,7 @@ public String sanitizeName(String name) {
16171632

16181633
// input name and age => input_name_and_age
16191634
name = name.replaceAll(" ", "_");
1620-
1635+
16211636
// remove everything else other than word, number and _
16221637
// $php_variable => php_variable
16231638
return name.replaceAll("[^a-zA-Z0-9_]", "");

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultGenerator.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.swagger.models.Model;
1313
import io.swagger.models.Operation;
1414
import io.swagger.models.Path;
15+
import io.swagger.models.SecurityRequirement;
1516
import io.swagger.models.Swagger;
1617
import io.swagger.models.auth.OAuth2Definition;
1718
import io.swagger.models.auth.SecuritySchemeDefinition;
@@ -480,16 +481,25 @@ public void processOperation(String resourcePath, String httpMethod, Operation o
480481
config.addOperationToGroup(sanitizeTag(tag), resourcePath, operation, co, operations);
481482

482483
List<Map<String, List<String>>> securities = operation.getSecurity();
483-
if (securities == null) {
484+
if (securities == null && swagger.getSecurity() != null) {
485+
securities = new ArrayList<Map<String, List<String>>>();
486+
for (SecurityRequirement sr : swagger.getSecurity()) {
487+
securities.add(sr.getRequirements());
488+
}
489+
}
490+
if (securities == null || securities.isEmpty()) {
484491
continue;
485492
}
486493
Map<String, SecuritySchemeDefinition> authMethods = new HashMap<String, SecuritySchemeDefinition>();
487-
for (Map<String, List<String>> security : securities) {
488-
if (security.size() != 1) {
489-
//Not sure what to do
490-
continue;
491-
}
492-
String securityName = security.keySet().iterator().next();
494+
// NOTE: Use only the first security requirement for now.
495+
// See the "security" field of "Swagger Object":
496+
// https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#swagger-object
497+
// "there is a logical OR between the security requirements"
498+
if (securities.size() > 1) {
499+
LOGGER.warn("More than 1 security requirements are found, using only the first one");
500+
}
501+
Map<String, List<String>> security = securities.get(0);
502+
for (String securityName : security.keySet()) {
493503
SecuritySchemeDefinition securityDefinition = fromSecurity(securityName);
494504
if (securityDefinition != null) {
495505
if(securityDefinition instanceof OAuth2Definition) {
@@ -500,7 +510,7 @@ public void processOperation(String resourcePath, String httpMethod, Operation o
500510
oauth2Operation.setFlow(oauth2Definition.getFlow());
501511
oauth2Operation.setTokenUrl(oauth2Definition.getTokenUrl());
502512
oauth2Operation.setScopes(new HashMap<String, String>());
503-
for (String scope : security.values().iterator().next()) {
513+
for (String scope : security.get(securityName)) {
504514
if (oauth2Definition.getScopes().containsKey(scope)) {
505515
oauth2Operation.addScope(scope, oauth2Definition.getScopes().get(scope));
506516
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CSharpClientCodegen.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,13 @@ public void processOpts() {
104104
}
105105

106106
additionalProperties.put("clientPackage", clientPackage);
107-
107+
108108
supportingFiles.add(new SupportingFile("Configuration.mustache",
109-
(sourceFolder + File.separator + clientPackage).replace(".", java.io.File.separator), "Configuration.cs"));
109+
sourceFolder + File.separator + clientPackage.replace(".", java.io.File.separator), "Configuration.cs"));
110110
supportingFiles.add(new SupportingFile("ApiClient.mustache",
111-
(sourceFolder + File.separator + clientPackage).replace(".", java.io.File.separator), "ApiClient.cs"));
111+
sourceFolder + File.separator + clientPackage.replace(".", java.io.File.separator), "ApiClient.cs"));
112112
supportingFiles.add(new SupportingFile("ApiException.mustache",
113-
(sourceFolder + File.separator + clientPackage).replace(".", java.io.File.separator), "ApiException.cs"));
113+
sourceFolder + File.separator + clientPackage.replace(".", java.io.File.separator), "ApiException.cs"));
114114
supportingFiles.add(new SupportingFile("Newtonsoft.Json.dll", "bin", "Newtonsoft.Json.dll"));
115115
supportingFiles.add(new SupportingFile("RestSharp.dll", "bin", "RestSharp.dll"));
116116
supportingFiles.add(new SupportingFile("compile.mustache", "", "compile.bat"));
@@ -137,12 +137,11 @@ public String escapeReservedWord(String name) {
137137

138138
@Override
139139
public String apiFileFolder() {
140-
141-
return outputFolder + File.separator + (sourceFolder + File.separator + apiPackage()).replace('.', File.separatorChar);
140+
return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar);
142141
}
143142

144143
public String modelFileFolder() {
145-
return outputFolder + File.separator + (sourceFolder + File.separator + modelPackage()).replace('.', File.separatorChar);
144+
return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar);
146145
}
147146

148147
@Override

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CsharpDotNet2ClientCodegen.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ public void processOpts() {
108108
}
109109

110110
supportingFiles.add(new SupportingFile("Configuration.mustache",
111-
(sourceFolder + File.separator + clientPackage).replace(".", java.io.File.separator), "Configuration.cs"));
111+
sourceFolder + File.separator + clientPackage.replace(".", java.io.File.separator), "Configuration.cs"));
112112
supportingFiles.add(new SupportingFile("ApiClient.mustache",
113-
(sourceFolder + File.separator + clientPackage).replace(".", java.io.File.separator), "ApiClient.cs"));
113+
sourceFolder + File.separator + clientPackage.replace(".", java.io.File.separator), "ApiClient.cs"));
114114
supportingFiles.add(new SupportingFile("ApiException.mustache",
115-
(sourceFolder + File.separator + clientPackage).replace(".", java.io.File.separator), "ApiException.cs"));
115+
sourceFolder + File.separator + clientPackage.replace(".", java.io.File.separator), "ApiException.cs"));
116116
supportingFiles.add(new SupportingFile("packages.config.mustache", "vendor", "packages.config"));
117117
supportingFiles.add(new SupportingFile("compile-mono.sh.mustache", "", "compile-mono.sh"));
118118
supportingFiles.add(new SupportingFile("README.md", "", "README.md"));
@@ -142,11 +142,11 @@ public String escapeReservedWord(String name) {
142142

143143
@Override
144144
public String apiFileFolder() {
145-
return (outputFolder + File.separator + sourceFolder + File.separator + apiPackage()).replace('.', File.separatorChar);
145+
return outputFolder + File.separator + sourceFolder + File.separator + apiPackage().replace('.', File.separatorChar);
146146
}
147147

148148
public String modelFileFolder() {
149-
return (outputFolder + File.separator + sourceFolder + File.separator + modelPackage()).replace('.', File.separatorChar);
149+
return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar);
150150
}
151151

152152
@Override

0 commit comments

Comments
 (0)