|
21 | 21 | import io.swagger.v3.oas.models.OpenAPI; |
22 | 22 | import io.swagger.v3.oas.models.media.Schema; |
23 | 23 | import io.swagger.v3.parser.util.SchemaTypeUtil; |
| 24 | +import lombok.Getter; |
24 | 25 | import lombok.Setter; |
25 | 26 | import org.openapitools.codegen.*; |
26 | 27 | import org.openapitools.codegen.meta.features.*; |
@@ -64,8 +65,8 @@ public class AspNetServerCodegen extends AbstractCSharpCodegen { |
64 | 65 | public static final String USE_NEWTONSOFT = "useNewtonsoft"; |
65 | 66 | public static final String USE_DEFAULT_ROUTING = "useDefaultRouting"; |
66 | 67 | public static final String NEWTONSOFT_VERSION = "newtonsoftVersion"; |
67 | | - public static final String USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT = "useCentralizedPackageVersionManagement"; |
68 | | - public static final String CENTRALIZED_PACKAGE_VERSION_MANAGEMENT_OPT_OUT = "centralizedPackageVersionManagementOptOut"; |
| 68 | + public static final String CENTRALIZED_PACKAGE_VERSION_MANAGEMENT = "centralizedPackageVersionManagement"; |
| 69 | + public static final String USE_PACKAGE_VERSIONS = "usePackageVersions"; |
69 | 70 |
|
70 | 71 | @Setter |
71 | 72 | private String packageGuid = "{" + randomUUID().toString().toUpperCase(Locale.ROOT) + "}"; |
@@ -94,8 +95,27 @@ public class AspNetServerCodegen extends AbstractCSharpCodegen { |
94 | 95 | private boolean useNewtonsoft = true; |
95 | 96 | private boolean useDefaultRouting = true; |
96 | 97 | private String newtonsoftVersion = "3.0.0"; |
97 | | - private boolean useCentralizedPackageVersionManagement = false; |
98 | | - private boolean centralizedPackageVersionManagementOptOut = false; |
| 98 | + protected CliOption centralizedPackageVersionManagement = new CliOption(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT,"Option to control the usage of centralized package version management. https://devblogs.microsoft.com/nuget/introducing-central-package-management/#disabling-central-package-management"); |
| 99 | + |
| 100 | + |
| 101 | + @Getter |
| 102 | + private enum CentralizedPackageVersionOptions { |
| 103 | + Default("default","Property in project wont be used"), |
| 104 | + Use("use","Centralized package version management will be used"), |
| 105 | + OptOut("optout","Opt out of centralized package version management. Set this if you have a Directory.Packages.pros file but want this project to ignore it. https://devblogs.microsoft.com/nuget/introducing-central-package-management/#disabling-central-package-management"); |
| 106 | + |
| 107 | + private final String Value; |
| 108 | + private final String Description; |
| 109 | + |
| 110 | + CentralizedPackageVersionOptions(String Value,String Description) { |
| 111 | + this.Value = Value; |
| 112 | + this.Description = Description; |
| 113 | + } |
| 114 | + |
| 115 | + public String GetDescription(){ |
| 116 | + return this.Description; |
| 117 | + } |
| 118 | + } |
99 | 119 |
|
100 | 120 | public AspNetServerCodegen() { |
101 | 121 | super(); |
@@ -254,13 +274,7 @@ public AspNetServerCodegen() { |
254 | 274 | "Uses the Newtonsoft JSON library.", |
255 | 275 | useNewtonsoft); |
256 | 276 |
|
257 | | - addSwitch(USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT, |
258 | | - "Uses centralized package version management. https://devblogs.microsoft.com/nuget/introducing-central-package-management/#disabling-central-package-management", |
259 | | - useCentralizedPackageVersionManagement); |
260 | | - |
261 | | - addSwitch(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT_OPT_OUT, |
262 | | - "Opt out of centralized package version management. Set this if you have a Directory.Packages.pros file but want this project to ignore it. https://devblogs.microsoft.com/nuget/introducing-central-package-management/#disabling-central-package-management", |
263 | | - centralizedPackageVersionManagementOptOut); |
| 277 | + addCentralizedPackageVersionManagementOption(); |
264 | 278 |
|
265 | 279 | addOption(NEWTONSOFT_VERSION, |
266 | 280 | "Version for Microsoft.AspNetCore.Mvc.NewtonsoftJson for ASP.NET Core 3.0+", |
@@ -316,6 +330,16 @@ public AspNetServerCodegen() { |
316 | 330 | addOption(modelClassModifier.getOpt(), modelClassModifier.getDescription(), modelClassModifier.getOptValue()); |
317 | 331 | } |
318 | 332 |
|
| 333 | + private void addCentralizedPackageVersionManagementOption(){ |
| 334 | + centralizedPackageVersionManagement.setType("String"); |
| 335 | + for (CentralizedPackageVersionOptions option : CentralizedPackageVersionOptions.values() ) { |
| 336 | + centralizedPackageVersionManagement.addEnum(option.Value, option.GetDescription()); |
| 337 | + } |
| 338 | + centralizedPackageVersionManagement.setDefault(CentralizedPackageVersionOptions.Default.Value); |
| 339 | + centralizedPackageVersionManagement.setOptValue(centralizedPackageVersionManagement.getDefault()); |
| 340 | + cliOptions.add(centralizedPackageVersionManagement); |
| 341 | + } |
| 342 | + |
319 | 343 | @Deprecated |
320 | 344 | @Override |
321 | 345 | protected Set<String> getNullableTypes() { |
@@ -700,11 +724,21 @@ private void setBuildTarget() { |
700 | 724 | */ |
701 | 725 | private void setCentralizedPackageVersionManagementSettings() { |
702 | 726 |
|
703 | | - additionalProperties.putIfAbsent(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT_OPT_OUT, centralizedPackageVersionManagementOptOut); |
| 727 | + additionalProperties.put(USE_PACKAGE_VERSIONS, true); |
| 728 | + |
| 729 | + if(additionalProperties.containsKey(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT)) { |
| 730 | + var chosenOption = additionalProperties.get(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT); |
704 | 731 |
|
705 | | - // If opt out is true then the package versions should always be added regardless of USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT value |
706 | | - if ((boolean) additionalProperties.get(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT_OPT_OUT) && additionalProperties.containsKey(USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT)) { |
707 | | - additionalProperties.replace(USE_CENTRALIZED_PACKAGE_VERSION_MANAGEMENT, false); |
| 732 | + if (chosenOption == CentralizedPackageVersionOptions.Default) { |
| 733 | + additionalProperties.remove(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT); |
| 734 | + } |
| 735 | + if (chosenOption == CentralizedPackageVersionOptions.Use) { |
| 736 | + additionalProperties.replace(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT,"true"); |
| 737 | + additionalProperties.put(USE_PACKAGE_VERSIONS, false); |
| 738 | + } |
| 739 | + if (chosenOption == CentralizedPackageVersionOptions.OptOut) { |
| 740 | + additionalProperties.replace(CENTRALIZED_PACKAGE_VERSION_MANAGEMENT,"false"); |
| 741 | + } |
708 | 742 | } |
709 | 743 | } |
710 | 744 |
|
|
0 commit comments