Skip to content

Commit b884c48

Browse files
authored
Merge pull request #1187 from swagger-api/aspnetcore-version-update
added support for aspnetcore 5, 6 and 7 versions
2 parents 6ead997 + 6cfb67e commit b884c48

File tree

3 files changed

+33
-14
lines changed

3 files changed

+33
-14
lines changed

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

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import io.swagger.codegen.v3.CodegenSecurity;
99
import io.swagger.codegen.v3.CodegenType;
1010
import io.swagger.codegen.v3.SupportingFile;
11+
import io.swagger.codegen.v3.utils.SemVer;
1112
import io.swagger.v3.core.util.Json;
1213
import io.swagger.v3.oas.models.OpenAPI;
1314
import io.swagger.v3.oas.models.security.SecurityScheme;
@@ -30,7 +31,9 @@ public class AspNetCoreServerCodegen extends AbstractCSharpCodegen {
3031
private static final String ASP_NET_CORE_VERSION_OPTION = "--aspnet-core-version";
3132
private static final String INTERFACE_ONLY_OPTION = "--interface-only";
3233
private static final String INTERFACE_CONTROLLER_OPTION = "--interface-controller";
33-
private final String DEFAULT_ASP_NET_CORE_VERSION = "3.1";
34+
private static final String SWASH_BUCKLE_VERSION_OPTION = "swashBuckleVersion";
35+
private static final String TARGET_FRAMEWORK = "targetFramework";
36+
private final String DEFAULT_ASP_NET_CORE_VERSION = "7.0";
3437
private String aspNetCoreVersion;
3538

3639
@SuppressWarnings("hiding")
@@ -162,6 +165,7 @@ public void processOpts() {
162165
supportingFiles.add(new SupportingFile("Filters" + File.separator + "GeneratePathParamsValidationFilter.mustache", packageFolder + File.separator + "Filters", "GeneratePathParamsValidationFilter.cs"));
163166
supportingFiles.add(new SupportingFile("Startup.mustache", packageFolder, "Startup.cs"));
164167
} else {
168+
final SemVer semVer = new SemVer(aspNetCoreVersion);
165169
apiTemplateFiles.put("3.0/controller.mustache", ".cs");
166170
addInterfaceControllerTemplate();
167171

@@ -170,7 +174,20 @@ public void processOpts() {
170174

171175
supportingFiles.add(new SupportingFile("3.0/Startup.mustache", packageFolder, "Startup.cs"));
172176
supportingFiles.add(new SupportingFile("3.0/Program.mustache", packageFolder, "Program.cs"));
173-
if (isThreeDotOneVersion) {
177+
178+
if (semVer.atLeast("5.0")) {
179+
additionalProperties.put(SWASH_BUCKLE_VERSION_OPTION, "6.4.0");
180+
supportingFiles.add(new SupportingFile("3.1/Project.csproj.mustache", packageFolder, this.packageName + ".csproj"));
181+
}
182+
if (semVer.atLeast("7.0")) {
183+
additionalProperties.put(TARGET_FRAMEWORK, "net7.0");
184+
} else if (semVer.atLeast("6.0")) {
185+
additionalProperties.put(TARGET_FRAMEWORK, "net6.0");
186+
} else if (semVer.atLeast("5.0")) {
187+
additionalProperties.put(TARGET_FRAMEWORK, "net5.0");
188+
} else if (semVer.atLeast("3.1")) {
189+
additionalProperties.put(SWASH_BUCKLE_VERSION_OPTION, "5.5.1");
190+
additionalProperties.put(TARGET_FRAMEWORK, "netcoreapp3.1");
174191
supportingFiles.add(new SupportingFile("3.1/Project.csproj.mustache", packageFolder, this.packageName + ".csproj"));
175192
} else {
176193
supportingFiles.add(new SupportingFile("3.0/Project.csproj.mustache", packageFolder, this.packageName + ".csproj"));
@@ -284,7 +301,8 @@ protected void processOperation(CodegenOperation operation) {
284301
List <CodegenContent> contents = operation.getContents()
285302
.stream()
286303
.filter(codegenContent -> !codegenContent.getIsForm())
287-
.collect(Collectors.toList());
304+
.collect(
305+
Collectors.toList());
288306
operation.getContents().clear();
289307
operation.getContents().addAll(contents);
290308
}
@@ -345,7 +363,7 @@ private void addInterfaceControllerTemplate() {
345363
boolean interfaceController = false;
346364
if (StringUtils.isNotBlank(interfaceControllerOption)) {
347365
interfaceController = Boolean.valueOf(getOptionValue(INTERFACE_CONTROLLER_OPTION));
348-
} else {
366+
} else {
349367
if (additionalProperties.get(INTERFACE_CONTROLLER_OPTION.substring(2)) != null) {
350368
interfaceController = Boolean.valueOf(additionalProperties.get(INTERFACE_CONTROLLER_OPTION.substring(2)).toString());
351369
}
@@ -378,7 +396,8 @@ private void setAspNetCoreVersion() {
378396
} else {
379397
this.aspNetCoreVersion = optionValue;
380398
}
381-
if (!this.aspNetCoreVersion.equals("2.0") && !this.aspNetCoreVersion.equals("2.1") && !this.aspNetCoreVersion.equals("2.2") && !this.aspNetCoreVersion.equals("3.0")) {
399+
final SemVer semVer = new SemVer(this.aspNetCoreVersion);
400+
if (semVer.compareTo(new SemVer("2.0")) < 0) {
382401
LOGGER.error("version '" + this.aspNetCoreVersion + "' is not supported, switching to default version: '" + DEFAULT_ASP_NET_CORE_VERSION + "'");
383402
this.aspNetCoreVersion = DEFAULT_ASP_NET_CORE_VERSION;
384403
}

src/main/resources/handlebars/aspnetcore/3.0/Project.csproj.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
</PropertyGroup>
1111
<ItemGroup>
1212
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-rc4"/>
13-
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="5.0.0-rc4"/>
14-
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.0.0-rc4"/>
15-
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="5.0.0-rc4" />
13+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="5.0.0"/>
14+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="5.0.0"/>
15+
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="5.0.0" />
1616
</ItemGroup>
1717
<ItemGroup>
1818
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />

src/main/resources/handlebars/aspnetcore/3.1/Project.csproj.mustache

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
<PropertyGroup>
33
<Description>{{packageName}}</Description>
44
<Copyright>{{packageName}}</Copyright>
5-
<TargetFramework>netcoreapp{{aspNetCoreVersion}}</TargetFramework>
5+
<TargetFramework>{{targetFramework}}</TargetFramework>
66
<GenerateDocumentationFile>true</GenerateDocumentationFile>
77
<PreserveCompilationContext>true</PreserveCompilationContext>
88
<AssemblyName>{{packageName}}</AssemblyName>
99
<PackageId>{{packageName}}</PackageId>
1010
</PropertyGroup>
1111
<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"/>
12+
<PackageReference Include="Swashbuckle.AspNetCore" Version="{{swashBuckleVersion}}"/>`
13+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="{{swashBuckleVersion}}"/>
14+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="{{swashBuckleVersion}}"/>
15+
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="{{swashBuckleVersion}}" />
16+
<PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="{{swashBuckleVersion}}"/>
1717
</ItemGroup>
1818
<ItemGroup>
1919
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />

0 commit comments

Comments
 (0)