Skip to content

Commit cde4ff6

Browse files
authored
Merge pull request #746 from swagger-api/codegen-issue-10209
added support for aspnet core 3.1
2 parents b57f523 + 8825422 commit cde4ff6

File tree

7 files changed

+88
-7
lines changed

7 files changed

+88
-7
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@
253253
</dependencies>
254254
<properties>
255255
<swagger-codegen-version>3.0.22-SNAPSHOT</swagger-codegen-version>
256-
<swagger-parser-version>2.0.21</swagger-parser-version>
256+
<swagger-parser-version>2.0.22-SNAPSHOT</swagger-parser-version>
257257
<swagger-core-version>2.1.4</swagger-core-version>
258258
<jackson-version>2.10.3</jackson-version>
259259
<scala-version>2.11.1</scala-version>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ public SchemaHandler(DefaultCodegenConfig codegenConfig) {
3333
public void processComposedSchemas(CodegenModel codegenModel, Schema schema, Map<String, CodegenModel> allModels) {
3434
if (schema instanceof ComposedSchema) {
3535
this.addComposedModel(this.processComposedSchema(codegenModel, (ComposedSchema) schema, allModels));
36-
return;
3736
}
3837
if (schema instanceof ArraySchema) {
3938
this.addComposedModel(this.processArrayItemSchema(codegenModel, (ArraySchema) schema, allModels));

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.swagger.codegen.v3.generators.handlebars.lambda.LowercaseLambda;
1616
import io.swagger.codegen.v3.generators.handlebars.lambda.TitlecaseLambda;
1717
import io.swagger.codegen.v3.generators.handlebars.lambda.UppercaseLambda;
18+
import io.swagger.codegen.v3.generators.util.OpenAPIUtil;
1819
import io.swagger.codegen.v3.utils.ModelUtils;
1920
import io.swagger.codegen.v3.utils.URLPathUtil;
2021
import io.swagger.v3.oas.models.OpenAPI;
@@ -31,6 +32,7 @@
3132
import io.swagger.v3.oas.models.responses.ApiResponse;
3233
import io.swagger.v3.parser.util.SchemaTypeUtil;
3334
import org.apache.commons.lang3.StringUtils;
35+
import org.apache.commons.lang3.math.NumberUtils;
3436
import org.slf4j.Logger;
3537
import org.slf4j.LoggerFactory;
3638

@@ -437,7 +439,6 @@ private void postProcessEnumRefs(final Map<String, Object> models) {
437439

438440
// We do these after updateCodegenPropertyEnum to avoid generalities that don't mesh with C#.
439441
var.getVendorExtensions().put(CodegenConstants.IS_PRIMITIVE_TYPE_EXT_NAME, Boolean.TRUE);
440-
var.getVendorExtensions().put(IS_ENUM_EXT_NAME, Boolean.TRUE);
441442
}
442443
}
443444

@@ -748,6 +749,14 @@ protected boolean isReservedWord(String word) {
748749
@Override
749750
public String getSchemaType(Schema propertySchema) {
750751
String swaggerType = super.getSchemaType(propertySchema);
752+
753+
if (propertySchema.get$ref() != null) {
754+
final Schema refSchema = OpenAPIUtil.getSchemaFromName(swaggerType, this.openAPI);
755+
if (refSchema != null && !isObjectSchema(refSchema) && refSchema.getEnum() == null) {
756+
swaggerType = super.getSchemaType(refSchema);
757+
}
758+
}
759+
751760
String type;
752761

753762
if (swaggerType == null) {
@@ -938,6 +947,12 @@ public String toEnumVarName(String name, String datatype) {
938947
// for symbol, e.g. $, #
939948
if (getSymbolName(name) != null) {
940949
return camelize(getSymbolName(name));
950+
}
951+
952+
if (NumberUtils.isNumber(name)) {
953+
return "NUMBER_" + name.replaceAll("-", "MINUS_")
954+
.replaceAll("\\+", "PLUS_")
955+
.replaceAll("\\.", "_DOT_");
941956
}
942957

943958
String enumName = sanitizeName(name);

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
3030
private static final String ASP_NET_CORE_VERSION_OPTION = "--aspnet-core-version";
3131
private static final String INTERFACE_ONLY_OPTION = "--interface-only";
3232
private static final String INTERFACE_CONTROLLER_OPTION = "--interface-controller";
33-
private final String DEFAULT_ASP_NET_CORE_VERSION = "3.0";
33+
private final String DEFAULT_ASP_NET_CORE_VERSION = "3.1";
3434
private String aspNetCoreVersion;
3535

3636
@SuppressWarnings("hiding")
@@ -139,6 +139,8 @@ public void processOpts() {
139139

140140
String packageFolder = sourceFolder + File.separator + packageName;
141141

142+
boolean isThreeDotOneVersion = aspNetCoreVersion.equals("3.1");
143+
142144
if (aspNetCoreVersion.equals("2.0")) {
143145
apiTemplateFiles.put("controller.mustache", ".cs");
144146
addInterfaceControllerTemplate();
@@ -168,7 +170,11 @@ public void processOpts() {
168170

169171
supportingFiles.add(new SupportingFile("3.0/Startup.mustache", packageFolder, "Startup.cs"));
170172
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"));
173+
if (isThreeDotOneVersion) {
174+
supportingFiles.add(new SupportingFile("3.1/Project.csproj.mustache", packageFolder, this.packageName + ".csproj"));
175+
} else {
176+
supportingFiles.add(new SupportingFile("3.0/Project.csproj.mustache", packageFolder, this.packageName + ".csproj"));
177+
}
172178
supportingFiles.add(new SupportingFile("3.0/Dockerfile.mustache", packageFolder, "Dockerfile"));
173179
}
174180

@@ -193,7 +199,11 @@ public void processOpts() {
193199
supportingFiles.add(new SupportingFile("validateModel.mustache", packageFolder + File.separator + "Attributes", "ValidateModelStateAttribute.cs"));
194200
supportingFiles.add(new SupportingFile("web.config", packageFolder, "web.config"));
195201

196-
supportingFiles.add(new SupportingFile("Properties" + File.separator + "launchSettings.json", packageFolder + File.separator + "Properties", "launchSettings.json"));
202+
if (isThreeDotOneVersion) {
203+
supportingFiles.add(new SupportingFile("3.1/Properties" + File.separator + "launchSettings.json", packageFolder + File.separator + "Properties", "launchSettings.json"));
204+
} else {
205+
supportingFiles.add(new SupportingFile("Properties" + File.separator + "launchSettings.json", packageFolder + File.separator + "Properties", "launchSettings.json"));
206+
}
197207

198208
supportingFiles.add(new SupportingFile("wwwroot" + File.separator + "README.md", packageFolder + File.separator + "wwwroot", "README.md"));
199209
supportingFiles.add(new SupportingFile("wwwroot" + File.separator + "index.html", packageFolder + File.separator + "wwwroot", "index.html"));
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
2+
<PropertyGroup>
3+
<Description>{{packageName}}</Description>
4+
<Copyright>{{packageName}}</Copyright>
5+
<TargetFramework>netcoreapp{{aspNetCoreVersion}}</TargetFramework>
6+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
7+
<PreserveCompilationContext>true</PreserveCompilationContext>
8+
<AssemblyName>{{packageName}}</AssemblyName>
9+
<PackageId>{{packageName}}</PackageId>
10+
</PropertyGroup>
11+
<ItemGroup>
12+
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.5.1"/>
13+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="5.5.1"/>
14+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.5.1"/>
15+
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="5.5.1" />
16+
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="5.5.1"/>
17+
</ItemGroup>
18+
<ItemGroup>
19+
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
20+
</ItemGroup>
21+
</Project>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
{
2+
"iisSettings": {
3+
"windowsAuthentication": false,
4+
"anonymousAuthentication": true,
5+
"iisExpress": {
6+
"applicationUrl": "http://localhost:50352/",
7+
"sslPort": 0
8+
}
9+
},
10+
"profiles": {
11+
"IIS Express": {
12+
"commandName": "IISExpress",
13+
"launchBrowser": true,
14+
"launchUrl": "swagger/",
15+
"environmentVariables": {
16+
"ASPNETCORE_ENVIRONMENT": "Development"
17+
}
18+
},
19+
"web": {
20+
"commandName": "Project",
21+
"launchBrowser": true,
22+
"launchUrl": "swagger",
23+
"applicationUrl": "https://localhost:5001;http://localhost:5000",
24+
"environmentVariables": {
25+
"ASPNETCORE_ENVIRONMENT": "Development"
26+
}
27+
},
28+
"Docker": {
29+
"commandName": "Docker",
30+
"launchBrowser": true,
31+
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
32+
"publishAllPorts": true,
33+
"useSSL": true
34+
}
35+
}
36+
}

src/main/resources/handlebars/aspnetcore/model.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace {{packageName}}.Models
1919
/// </summary>
2020
[DataContract]
2121
public partial class {{classname}} : {{#parent}}{{{parent}}}, {{/parent}}IEquatable<{{classname}}>
22-
{ {{#vars}}{{#isEnum}}{{^complexType}}{{>enumClass}}{{/complexType}}{{/isEnum}}{{#items.isEnum}}{{#items}}{{^complexType}}{{>enumClass}}{{/complexType}}{{/items}}{{/items.isEnum}}
22+
{ {{#vars}}{{#isEnum}}{{^isContainer}}{{>enumClass}}{{/isContainer}}{{/isEnum}}{{#items.isEnum}}{{#items}}{{^isContainer}}{{>enumClass}}{{/isContainer}}{{/items}}{{/items.isEnum}}
2323
/// <summary>
2424
/// {{^description}}Gets or Sets {{{name}}}{{/description}}{{#description}}{{description}}{{/description}}
2525
/// </summary>

0 commit comments

Comments
 (0)