Skip to content

Commit ae95d26

Browse files
authored
Merge branch 'master' into fix/javascript-supporting-files
2 parents cd1a14d + f33129f commit ae95d26

Some content is hidden

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

52 files changed

+3425
-44
lines changed

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2173,9 +2173,7 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
21732173
} else if (param instanceof CookieParameter || "cookie".equalsIgnoreCase(param.getIn())) {
21742174
cookieParams.add(codegenParameter.copy());
21752175
}
2176-
if (!codegenParameter.required) {
2177-
codegenOperation.getVendorExtensions().put(CodegenConstants.HAS_OPTIONAL_PARAMS_EXT_NAME, Boolean.TRUE);
2178-
} else {
2176+
if (codegenParameter.required) {
21792177
requiredParams.add(codegenParameter.copy());
21802178
}
21812179
}
@@ -2222,6 +2220,10 @@ public int compare(CodegenParameter one, CodegenParameter another) {
22222220
boolean hasRequiredParams = codegenOperation.requiredParams.size() > 0;
22232221
codegenOperation.getVendorExtensions().put(CodegenConstants.HAS_REQUIRED_PARAMS_EXT_NAME, hasRequiredParams);
22242222

2223+
boolean hasOptionalParams = codegenOperation.allParams.stream()
2224+
.anyMatch(codegenParameter -> !codegenParameter.required);
2225+
codegenOperation.getVendorExtensions().put(CodegenConstants.HAS_OPTIONAL_PARAMS_EXT_NAME, hasOptionalParams);
2226+
22252227
// set Restful Flag
22262228
codegenOperation.getVendorExtensions().put(CodegenConstants.IS_RESTFUL_SHOW_EXT_NAME, codegenOperation.getIsRestfulShow());
22272229
codegenOperation.getVendorExtensions().put(CodegenConstants.IS_RESTFUL_INDEX_EXT_NAME, codegenOperation.getIsRestfulIndex());

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import io.swagger.codegen.v3.CodegenModel;
99
import io.swagger.codegen.v3.CodegenOperation;
1010
import io.swagger.codegen.v3.CodegenProperty;
11-
import io.swagger.codegen.v3.ISchemaHandler;
1211
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
1312
import io.swagger.codegen.v3.generators.handlebars.csharp.CsharpHelper;
1413
import io.swagger.codegen.v3.generators.handlebars.lambda.CamelCaseLambda;

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

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

33
import com.fasterxml.jackson.core.JsonProcessingException;
44
import com.samskivert.mustache.Mustache;
5-
import io.swagger.codegen.v3.CodegenArgument;
65
import io.swagger.codegen.v3.CodegenConstants;
76
import io.swagger.codegen.v3.CodegenContent;
87
import io.swagger.codegen.v3.CodegenOperation;
98
import io.swagger.codegen.v3.CodegenSecurity;
109
import io.swagger.codegen.v3.CodegenType;
1110
import io.swagger.codegen.v3.SupportingFile;
12-
import io.swagger.codegen.v3.generators.handlebars.ExtensionHelper;
13-
import io.swagger.codegen.v3.utils.URLPathUtil;
1411
import io.swagger.v3.core.util.Json;
1512
import io.swagger.v3.oas.models.OpenAPI;
1613
import io.swagger.v3.oas.models.security.SecurityScheme;
@@ -19,11 +16,9 @@
1916
import org.slf4j.LoggerFactory;
2017

2118
import java.io.File;
22-
import java.net.URL;
2319
import java.util.Arrays;
2420
import java.util.List;
2521
import java.util.Map;
26-
import java.util.Optional;
2722
import java.util.stream.Collectors;
2823

2924
import static io.swagger.codegen.v3.generators.handlebars.ExtensionHelper.getBooleanValue;
@@ -35,7 +30,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
3530
private static final String ASP_NET_CORE_VERSION_OPTION = "--aspnet-core-version";
3631
private static final String INTERFACE_ONLY_OPTION = "--interface-only";
3732
private static final String INTERFACE_CONTROLLER_OPTION = "--interface-controller";
38-
private final String DEFAULT_ASP_NET_CORE_VERSION = "2.2";
33+
private final String DEFAULT_ASP_NET_CORE_VERSION = "3.0";
3934
private String aspNetCoreVersion;
4035

4136
@SuppressWarnings("hiding")
@@ -151,13 +146,30 @@ public void processOpts() {
151146
supportingFiles.add(new SupportingFile("Program.mustache", packageFolder, "Program.cs"));
152147
supportingFiles.add(new SupportingFile("Project.csproj.mustache", packageFolder, this.packageName + ".csproj"));
153148
supportingFiles.add(new SupportingFile("Dockerfile.mustache", packageFolder, "Dockerfile"));
154-
} else{
149+
supportingFiles.add(new SupportingFile("Filters" + File.separator + "BasePathFilter.mustache", packageFolder + File.separator + "Filters", "BasePathFilter.cs"));
150+
supportingFiles.add(new SupportingFile("Filters" + File.separator + "GeneratePathParamsValidationFilter.mustache", packageFolder + File.separator + "Filters", "GeneratePathParamsValidationFilter.cs"));
151+
supportingFiles.add(new SupportingFile("Startup.mustache", packageFolder, "Startup.cs"));
152+
} else if (aspNetCoreVersion.equals("2.1")) {
155153
apiTemplateFiles.put("2.1/controller.mustache", ".cs");
156154
addInterfaceControllerTemplate();
157155

158156
supportingFiles.add(new SupportingFile("2.1/Program.mustache", packageFolder, "Program.cs"));
159157
supportingFiles.add(new SupportingFile("2.1/Project.csproj.mustache", packageFolder, this.packageName + ".csproj"));
160158
supportingFiles.add(new SupportingFile("2.1/Dockerfile.mustache", packageFolder, "Dockerfile"));
159+
supportingFiles.add(new SupportingFile("Filters" + File.separator + "BasePathFilter.mustache", packageFolder + File.separator + "Filters", "BasePathFilter.cs"));
160+
supportingFiles.add(new SupportingFile("Filters" + File.separator + "GeneratePathParamsValidationFilter.mustache", packageFolder + File.separator + "Filters", "GeneratePathParamsValidationFilter.cs"));
161+
supportingFiles.add(new SupportingFile("Startup.mustache", packageFolder, "Startup.cs"));
162+
} else {
163+
apiTemplateFiles.put("3.0/controller.mustache", ".cs");
164+
addInterfaceControllerTemplate();
165+
166+
supportingFiles.add(new SupportingFile("3.0" + File.separator + "Filters" + File.separator + "BasePathFilter.mustache", packageFolder + File.separator + "Filters", "BasePathFilter.cs"));
167+
supportingFiles.add(new SupportingFile("3.0" + File.separator + "Filters" + File.separator + "GeneratePathParamsValidationFilter.mustache", packageFolder + File.separator + "Filters", "GeneratePathParamsValidationFilter.cs"));
168+
169+
supportingFiles.add(new SupportingFile("3.0/Startup.mustache", packageFolder, "Startup.cs"));
170+
supportingFiles.add(new SupportingFile("3.0/Program.mustache", packageFolder, "Program.cs"));
171+
supportingFiles.add(new SupportingFile("3.0/Project.csproj.mustache", packageFolder, this.packageName + ".csproj"));
172+
supportingFiles.add(new SupportingFile("3.0/Dockerfile.mustache", packageFolder, "Dockerfile"));
161173
}
162174

163175
if (!additionalProperties.containsKey(CodegenConstants.API_PACKAGE)) {
@@ -178,15 +190,15 @@ public void processOpts() {
178190
supportingFiles.add(new SupportingFile("gitignore", packageFolder, ".gitignore"));
179191
supportingFiles.add(new SupportingFile("appsettings.json", packageFolder, "appsettings.json"));
180192

181-
supportingFiles.add(new SupportingFile("Startup.mustache", packageFolder, "Startup.cs"));
193+
//supportingFiles.add(new SupportingFile("Startup.mustache", packageFolder, "Startup.cs"));
182194

183195
supportingFiles.add(new SupportingFile("validateModel.mustache", packageFolder + File.separator + "Attributes", "ValidateModelStateAttribute.cs"));
184196
supportingFiles.add(new SupportingFile("web.config", packageFolder, "web.config"));
185197

186198
supportingFiles.add(new SupportingFile("Properties" + File.separator + "launchSettings.json", packageFolder + File.separator + "Properties", "launchSettings.json"));
187199

188-
supportingFiles.add(new SupportingFile("Filters" + File.separator + "BasePathFilter.mustache", packageFolder + File.separator + "Filters", "BasePathFilter.cs"));
189-
supportingFiles.add(new SupportingFile("Filters" + File.separator + "GeneratePathParamsValidationFilter.mustache", packageFolder + File.separator + "Filters", "GeneratePathParamsValidationFilter.cs"));
200+
// supportingFiles.add(new SupportingFile("Filters" + File.separator + "BasePathFilter.mustache", packageFolder + File.separator + "Filters", "BasePathFilter.cs"));
201+
// supportingFiles.add(new SupportingFile("Filters" + File.separator + "GeneratePathParamsValidationFilter.mustache", packageFolder + File.separator + "Filters", "GeneratePathParamsValidationFilter.cs"));
190202

191203
supportingFiles.add(new SupportingFile("wwwroot" + File.separator + "README.md", packageFolder + File.separator + "wwwroot", "README.md"));
192204
supportingFiles.add(new SupportingFile("wwwroot" + File.separator + "index.html", packageFolder + File.separator + "wwwroot", "index.html"));

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

Lines changed: 60 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package io.swagger.codegen.v3.generators.go;
22

33
import io.swagger.codegen.v3.CliOption;
4-
import io.swagger.codegen.v3.CodegenConfig;
54
import io.swagger.codegen.v3.CodegenConstants;
5+
import io.swagger.codegen.v3.CodegenContent;
66
import io.swagger.codegen.v3.CodegenModel;
77
import io.swagger.codegen.v3.CodegenOperation;
88
import io.swagger.codegen.v3.CodegenParameter;
99
import io.swagger.codegen.v3.CodegenProperty;
10+
import io.swagger.codegen.v3.ISchemaHandler;
1011
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
12+
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
1113
import io.swagger.v3.core.util.Yaml;
1214
import io.swagger.v3.oas.models.OpenAPI;
1315
import io.swagger.v3.oas.models.media.ArraySchema;
@@ -77,6 +79,7 @@ public AbstractGoCodegen() {
7779
typeMapping.put("number", "float32");
7880
typeMapping.put("float", "float32");
7981
typeMapping.put("double", "float64");
82+
typeMapping.put("BigDecimal", "float64");
8083
typeMapping.put("boolean", "bool");
8184
typeMapping.put("string", "string");
8285
typeMapping.put("UUID", "string");
@@ -265,6 +268,14 @@ public String getTypeDeclaration(Schema schema) {
265268
@Override
266269
public String getSchemaType(Schema schema) {
267270
String schemaType = super.getSchemaType(schema);
271+
272+
if (schema.get$ref() != null) {
273+
final Schema refSchema = OpenAPIUtil.getSchemaFromName(schemaType, this.openAPI);
274+
if (refSchema != null && !isObjectSchema(refSchema)) {
275+
schemaType = super.getSchemaType(refSchema);
276+
}
277+
}
278+
268279
String type;
269280
if(typeMapping.containsKey(schemaType)) {
270281
type = typeMapping.get(schemaType);
@@ -325,34 +336,36 @@ public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
325336
boolean addedTimeImport = false;
326337
boolean addedOSImport = false;
327338
for (CodegenOperation operation : operations) {
328-
for (CodegenParameter param : operation.allParams) {
329-
// import "os" if the operation uses files
330-
if (!addedOSImport && param.dataType == "*os.File") {
331-
imports.add(createMapping("import", "os"));
332-
addedOSImport = true;
333-
}
334-
335-
// import "time" if the operation has a required time parameter.
336-
if (param.required) {
337-
if (!addedTimeImport && param.dataType == "time.Time") {
338-
imports.add(createMapping("import", "time"));
339-
addedTimeImport = true;
339+
for (CodegenContent codegenContent : operation.getContents()) {
340+
for (CodegenParameter param : codegenContent.getParameters()) {
341+
// import "os" if the operation uses files
342+
if (!addedOSImport && param.dataType == "*os.File") {
343+
imports.add(createMapping("import", "os"));
344+
addedOSImport = true;
340345
}
341-
}
342346

343-
// import "optionals" package if the parameter is primitive and optional
344-
if (!param.required && getBooleanValue(param, CodegenConstants.IS_PRIMITIVE_TYPE_EXT_NAME)) {
345-
if (!addedOptionalImport) {
346-
imports.add(createMapping("import", "github.com/antihax/optional"));
347-
addedOptionalImport = true;
347+
// import "time" if the operation has a required time parameter.
348+
if (param.required) {
349+
if (!addedTimeImport && param.dataType == "time.Time") {
350+
imports.add(createMapping("import", "time"));
351+
addedTimeImport = true;
352+
}
348353
}
349-
// We need to specially map Time type to the optionals package
350-
if (param.dataType == "time.Time") {
351-
param.vendorExtensions.put("x-optionalDataType", "Time");
352-
continue;
354+
355+
// import "optionals" package if the parameter is primitive and optional
356+
if (!param.required && param.getIsPrimitiveType()) {
357+
if (!addedOptionalImport) {
358+
imports.add(createMapping("import", "github.com/antihax/optional"));
359+
addedOptionalImport = true;
360+
}
361+
// We need to specially map Time type to the optionals package
362+
if (param.dataType == "time.Time") {
363+
param.vendorExtensions.put("x-optionalDataType", "Time");
364+
continue;
365+
}
366+
// Map optional type to dataType
367+
param.vendorExtensions.put("x-optionalDataType", param.dataType.substring(0, 1).toUpperCase() + param.dataType.substring(1));
353368
}
354-
// Map optional type to dataType
355-
param.vendorExtensions.put("x-optionalDataType", param.dataType.substring(0, 1).toUpperCase() + param.dataType.substring(1));
356369
}
357370
}
358371
}
@@ -426,7 +439,7 @@ public Map<String, Object> postProcessModels(Map<String, Object> objs) {
426439

427440
@Override
428441
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
429-
OpenAPI openAPI = (OpenAPI)objs.get("openapi");
442+
OpenAPI openAPI = (OpenAPI)objs.get("openAPI");
430443
if(openAPI != null) {
431444
try {
432445
objs.put("swagger-yaml", Yaml.mapper().writeValueAsString(openAPI));
@@ -527,4 +540,25 @@ public String toEnumName(CodegenProperty property) {
527540
public void setWithXml(boolean withXml) {
528541
this.withXml = withXml;
529542
}
543+
544+
@Override
545+
public CodegenModel fromModel(String name, Schema schema, Map<String, Schema> allDefinitions) {
546+
final CodegenModel codegenModel = super.fromModel(name, schema, allDefinitions);
547+
if (!getBooleanValue(codegenModel, CodegenConstants.IS_ALIAS_EXT_NAME)) {
548+
boolean isAlias = schema instanceof ArraySchema
549+
|| schema instanceof MapSchema
550+
|| (!isObjectSchema(schema));
551+
552+
codegenModel.getVendorExtensions().put(CodegenConstants.IS_ALIAS_EXT_NAME, isAlias);
553+
}
554+
555+
556+
557+
return codegenModel;
558+
}
559+
560+
@Override
561+
public ISchemaHandler getSchemaHandler() {
562+
return new GoSchemaHandler(this);
563+
}
530564
}

0 commit comments

Comments
 (0)