Skip to content

Commit

Permalink
add C# Net Framework 4.7.1+ / Netstandard generator as default
Browse files Browse the repository at this point in the history
  • Loading branch information
frantuma committed Aug 20, 2024
1 parent f6cea77 commit 21bce53
Show file tree
Hide file tree
Showing 58 changed files with 4,739 additions and 42 deletions.
18 changes: 9 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-generators</artifactId>
<version>1.0.51</version>
<version>1.0.52-SNAPSHOT</version>
<packaging>jar</packaging>

<build>
Expand Down Expand Up @@ -256,28 +256,28 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.11.0</version>
<version>5.12.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.release>8</maven.compiler.release>
<swagger-codegen-version>3.0.61</swagger-codegen-version>
<swagger-codegen-version>3.0.62-SNAPSHOT</swagger-codegen-version>
<swagger-parser-version>2.1.22</swagger-parser-version>
<swagger-core-version>2.2.21</swagger-core-version>
<jackson-version>2.17.0</jackson-version>
<jackson-databind-version>2.17.0</jackson-databind-version>
<swagger-core-version>2.2.22</swagger-core-version>
<jackson-version>2.17.2</jackson-version>
<jackson-databind-version>2.17.2</jackson-databind-version>
<scala-version>2.11.1</scala-version>
<felix-version>3.3.0</felix-version>
<commons-io-version>2.16.1</commons-io-version>
<commons-cli-version>1.7.0</commons-cli-version>
<commons-cli-version>1.8.0</commons-cli-version>
<junit-version>4.13.2</junit-version>
<maven-plugin-version>1.0.0</maven-plugin-version>
<commons-lang-version>3.14.0</commons-lang-version>
<slf4j-version>1.7.36</slf4j-version>
<scala-maven-plugin-version>3.2.1</scala-maven-plugin-version>
<testng-version>7.10.1</testng-version>
<surefire-version>3.2.5</surefire-version>
<testng-version>7.10.2</testng-version>
<surefire-version>3.3.0</surefire-version>
<jmockit-version>1.49</jmockit-version>
<reflections-version>0.10.2</reflections-version>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.swagger.codegen.v3.generators.DefaultCodegenConfig;
import io.swagger.codegen.v3.generators.handlebars.csharp.CsharpHelper;
import io.swagger.codegen.v3.generators.handlebars.lambda.CamelCaseLambda;
import io.swagger.codegen.v3.generators.handlebars.lambda.CapitaliseLambda;
import io.swagger.codegen.v3.generators.handlebars.lambda.IndentedLambda;
import io.swagger.codegen.v3.generators.handlebars.lambda.LowercaseLambda;
import io.swagger.codegen.v3.generators.handlebars.lambda.TitlecaseLambda;
Expand Down Expand Up @@ -350,6 +351,7 @@ private void addHandlebarsLambdas(Map<String, Object> objs) {
.put("titlecase", new TitlecaseLambda())
.put("camelcase", new CamelCaseLambda().generator(this))
.put("camelcase_param", new CamelCaseLambda().generator(this).escapeAsParamName(true))
.put("capitalise", new CapitaliseLambda())
.put("indented", new IndentedLambda())
.put("indented_8", new IndentedLambda(8, " "))
.put("indented_12", new IndentedLambda(12, " "))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
public class CSharpClientCodegen extends AbstractCSharpCodegen {
@SuppressWarnings({"hiding"})
private static final Logger LOGGER = LoggerFactory.getLogger(CSharpClientCodegen.class);
private static final String NET471 = "v4.7.1";
private static final String NET45 = "v4.5";
private static final String NET40 = "v4.0";
private static final String NET35 = "v3.5";
Expand All @@ -48,10 +49,10 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
protected String modelDocPath = "docs/";

// Defines TargetFrameworkVersion in csproj files
protected String targetFramework = NET45;
protected String targetFramework = NET471;

// Defines nuget identifiers for target framework
protected String targetFrameworkNuget = "net45";
protected String targetFrameworkNuget = "net471";
protected boolean supportsAsync = Boolean.TRUE;
protected boolean supportsUWP = Boolean.FALSE;
protected boolean netStandard = Boolean.FALSE;
Expand Down Expand Up @@ -106,6 +107,7 @@ public CSharpClientCodegen() {
.put(NET35, ".NET Framework 3.5 compatible")
.put(NET40, ".NET Framework 4.0 compatible")
.put(NET45, ".NET Framework 4.5+ compatible")
.put(NET471, ".NET Framework 4.71+ compatible")
.put(NETSTANDARD, ".NET Standard 1.3 compatible")
.put(UWP, "Universal Windows Platform (IMPORTANT: this will be decommissioned and replaced by v5.0)")
.build();
Expand Down Expand Up @@ -186,6 +188,16 @@ public CSharpClientCodegen() {

@Override
public void processOpts() {

// process targetFramework first as it is used to get Template Dir
if (additionalProperties.containsKey(CodegenConstants.DOTNET_FRAMEWORK)) {
setTargetFramework((String) additionalProperties.get(CodegenConstants.DOTNET_FRAMEWORK));
} else {
// Ensure default is set.
setTargetFramework(NET471);
additionalProperties.put(CodegenConstants.DOTNET_FRAMEWORK, this.targetFramework);
}

super.processOpts();

/*
Expand Down Expand Up @@ -221,14 +233,6 @@ public void processOpts() {
additionalProperties.put(CodegenConstants.VALIDATABLE, validatable);
}

if (additionalProperties.containsKey(CodegenConstants.DOTNET_FRAMEWORK)) {
setTargetFramework((String) additionalProperties.get(CodegenConstants.DOTNET_FRAMEWORK));
} else {
// Ensure default is set.
setTargetFramework(NET45);
additionalProperties.put(CodegenConstants.DOTNET_FRAMEWORK, this.targetFramework);
}

if (NET35.equals(this.targetFramework)) {
// This is correct, mono will require you build .NET 3.5 sources using 4.0 SDK
additionalProperties.put(MCS_NET_VERSION_KEY, "4");
Expand Down Expand Up @@ -273,10 +277,14 @@ public void processOpts() {

setTargetFrameworkNuget("net40");
setSupportsAsync(Boolean.FALSE);
} else {
} else if (NET45.equals(this.targetFramework)) {
additionalProperties.put(MCS_NET_VERSION_KEY, "4.5.2-api");
setTargetFrameworkNuget("net45");
setSupportsAsync(Boolean.TRUE);
} else {
additionalProperties.put(MCS_NET_VERSION_KEY, "4.7.1-api");
setTargetFrameworkNuget("net471");
setSupportsAsync(Boolean.TRUE);
}

if (additionalProperties.containsKey(CodegenConstants.GENERATE_PROPERTY_CHANGED)) {
Expand Down Expand Up @@ -375,15 +383,17 @@ public void processOpts() {
clientPackageDir, "ReadOnlyDictionary.cs"));
}

if (Boolean.FALSE.equals(this.netStandard) && Boolean.FALSE.equals(this.netCoreProjectFileFlag)) {
if (Boolean.FALSE.equals(this.netStandard) && Boolean.FALSE.equals(this.netCoreProjectFileFlag) && !NET471.equals(this.targetFramework)) {
supportingFiles.add(new SupportingFile("compile.mustache", "", "build.bat"));
supportingFiles.add(new SupportingFile("compile-mono.sh.mustache", "", "build.sh"));

// copy package.config to nuget's standard location for project-level installs
supportingFiles.add(new SupportingFile("packages.config.mustache", packageFolder + File.separator, "packages.config"));
if (!NET471.equals(this.targetFramework)) {
// copy package.config to nuget's standard location for project-level installs
supportingFiles.add(new SupportingFile("packages.config.mustache", packageFolder + File.separator, "packages.config"));
}
// .travis.yml for travis-ci.org CI
supportingFiles.add(new SupportingFile("travis.mustache", "", ".travis.yml"));
} else if (Boolean.FALSE.equals(this.netCoreProjectFileFlag)) {
} else if (Boolean.FALSE.equals(this.netCoreProjectFileFlag) && !NET471.equals(this.targetFramework)) {
supportingFiles.add(new SupportingFile("project.json.mustache", packageFolder + File.separator, "project.json"));
}

Expand Down Expand Up @@ -420,7 +430,7 @@ public void processOpts() {
supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh"));
supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore"));

if (optionalAssemblyInfoFlag && Boolean.FALSE.equals(this.netCoreProjectFileFlag)) {
if (optionalAssemblyInfoFlag && Boolean.FALSE.equals(this.netCoreProjectFileFlag) && !NET471.equals(this.targetFramework)) {
supportingFiles.add(new SupportingFile("AssemblyInfo.mustache", packageFolder + File.separator + "Properties", "AssemblyInfo.cs"));
}
if (optionalProjectFileFlag) {
Expand Down Expand Up @@ -501,6 +511,13 @@ public String getName() {
return "csharp";
}

public String getDefaultTemplateDir() {
if (NET471.equals(this.targetFramework)) {
return "csharp-471";
}
return "csharp";
}

@Override
public String getHelp() {
return "Generates a CSharp client library.";
Expand Down
Loading

0 comments on commit 21bce53

Please sign in to comment.