Skip to content

Commit e1d27b3

Browse files
committed
Merge branch 'change-sorting-default' of https://github.com/devhl-labs/openapi-generator into devhl-labs-change-sorting-default
2 parents 6da3dc5 + 7027a40 commit e1d27b3

File tree

108 files changed

+3573
-3559
lines changed

Some content is hidden

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

108 files changed

+3573
-3559
lines changed

docs/generators/csharp.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ These options may be applied as additional-properties (cli) or configOptions (pl
3131
|library|HTTP library template (sub-template) to use|<dl><dt>**generichost**</dt><dd>HttpClient with Generic Host dependency injection (https://docs.microsoft.com/en-us/dotnet/core/extensions/generic-host) (Experimental. Subject to breaking changes without notice.)</dd><dt>**httpclient**</dt><dd>HttpClient (https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient) (Experimental. Subject to breaking changes without notice.)</dd><dt>**unityWebRequest**</dt><dd>UnityWebRequest (...) (Experimental. Subject to breaking changes without notice.)</dd><dt>**restsharp**</dt><dd>RestSharp (https://github.com/restsharp/RestSharp)</dd></dl>|restsharp|
3232
|licenseId|The identifier of the license| |null|
3333
|modelPropertyNaming|Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name| |PascalCase|
34-
|modelPropertySorting|One of legacy, alphabetical, default (only `generichost` library supports this option).| |legacy|
34+
|modelPropertySorting|One of legacy, alphabetical, default.| |default|
3535
|netCoreProjectFile|Use the new format (.NET Core) for .NET project files (.csproj).| |false|
3636
|nonPublicApi|Generates code with reduced access modifiers; allows embedding elsewhere without exposing non-public API calls to consumers.| |false|
3737
|nullableReferenceTypes|Use nullable annotations in the project. Only supported on C# 8 / ASP.NET Core 3.1 or newer. Starting in .NET 6.0 the default is true.| |false|
38-
|operationParameterSorting|One of legacy, alphabetical, default (only `generichost` library supports this option).| |legacy|
38+
|operationParameterSorting|One of legacy, alphabetical, default.| |default|
3939
|optionalAssemblyInfo|Generate AssemblyInfo.cs.| |true|
4040
|optionalEmitDefaultValues|Set DataMember's EmitDefaultValue.| |false|
4141
|optionalMethodArgument|C# Optional method argument, e.g. void square(int x=10) (.net 4.0+ only).| |true|

modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java

+29-21
Original file line numberDiff line numberDiff line change
@@ -3092,16 +3092,7 @@ public CodegenModel fromModel(String name, Schema schema) {
30923092
}
30933093

30943094
if (sortModelPropertiesByRequiredFlag) {
3095-
Comparator<CodegenProperty> comparator = new Comparator<CodegenProperty>() {
3096-
@Override
3097-
public int compare(CodegenProperty one, CodegenProperty another) {
3098-
if (one.required == another.required) return 0;
3099-
else if (one.required) return -1;
3100-
else return 1;
3101-
}
3102-
};
3103-
Collections.sort(m.vars, comparator);
3104-
Collections.sort(m.allVars, comparator);
3095+
SortModelPropertiesByRequiredFlag(m);
31053096
}
31063097

31073098
// post process model properties
@@ -3120,6 +3111,19 @@ public int compare(CodegenProperty one, CodegenProperty another) {
31203111
return m;
31213112
}
31223113

3114+
protected void SortModelPropertiesByRequiredFlag(CodegenModel model) {
3115+
Comparator<CodegenProperty> comparator = new Comparator<CodegenProperty>() {
3116+
@Override
3117+
public int compare(CodegenProperty one, CodegenProperty another) {
3118+
if (one.required == another.required) return 0;
3119+
else if (one.required) return -1;
3120+
else return 1;
3121+
}
3122+
};
3123+
Collections.sort(model.vars, comparator);
3124+
Collections.sort(model.allVars, comparator);
3125+
}
3126+
31233127
protected void setAddProps(Schema schema, IJsonSchemaValidationProperties property) {
31243128
if (schema.equals(new Schema())) {
31253129
// if we are trying to set additionalProperties on an empty schema stop recursing
@@ -4729,17 +4733,7 @@ public CodegenOperation fromOperation(String path,
47294733

47304734
// move "required" parameters in front of "optional" parameters
47314735
if (sortParamsByRequiredFlag) {
4732-
Collections.sort(allParams, new Comparator<CodegenParameter>() {
4733-
@Override
4734-
public int compare(CodegenParameter one, CodegenParameter another) {
4735-
if (one.required == another.required)
4736-
return 0;
4737-
else if (one.required)
4738-
return -1;
4739-
else
4740-
return 1;
4741-
}
4742-
});
4736+
SortParametersByRequiredFlag(allParams);
47434737
}
47444738

47454739
op.allParams = allParams;
@@ -4773,6 +4767,20 @@ else if (one.required)
47734767
return op;
47744768
}
47754769

4770+
public void SortParametersByRequiredFlag(List<CodegenParameter> parameters) {
4771+
Collections.sort(parameters, new Comparator<CodegenParameter>() {
4772+
@Override
4773+
public int compare(CodegenParameter one, CodegenParameter another) {
4774+
if (one.required == another.required)
4775+
return 0;
4776+
else if (one.required)
4777+
return -1;
4778+
else
4779+
return 1;
4780+
}
4781+
});
4782+
}
4783+
47764784
public boolean isParameterNameUnique(CodegenParameter p, List<CodegenParameter> parameters) {
47774785
for (CodegenParameter parameter : parameters) {
47784786
if (System.identityHashCode(p) == System.identityHashCode(parameter)) {

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java

+83-80
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ enum SortingMethod {
125125
ALPHABETICAL,
126126
LEGACY
127127
}
128-
private SortingMethod operationParameterSorting = SortingMethod.LEGACY;
129-
private SortingMethod modelPropertySorting = SortingMethod.LEGACY;
128+
private SortingMethod operationParameterSorting = SortingMethod.DEFAULT;
129+
private SortingMethod modelPropertySorting = SortingMethod.DEFAULT;
130130

131131
protected boolean caseInsensitiveResponseHeaders = Boolean.FALSE;
132132
protected String releaseNote = "Minor update";
@@ -229,11 +229,11 @@ public CSharpClientCodegen() {
229229
null);
230230

231231
addOption(CSharpClientCodegen.OPERATION_PARAMETER_SORTING_KEY,
232-
"One of legacy, alphabetical, default (only `generichost` library supports this option).",
232+
"One of legacy, alphabetical, default.",
233233
this.operationParameterSorting.toString().toLowerCase(Locale.ROOT));
234234

235235
addOption(CSharpClientCodegen.MODEL_PROPERTY_SORTING_KEY,
236-
"One of legacy, alphabetical, default (only `generichost` library supports this option).",
236+
"One of legacy, alphabetical, default.",
237237
this.modelPropertySorting.toString().toLowerCase(Locale.ROOT));
238238

239239
CliOption framework = new CliOption(
@@ -468,45 +468,48 @@ public CodegenModel fromModel(String name, Schema model) {
468468
}
469469
}
470470

471-
// avoid breaking changes
472-
if (GENERICHOST.equals(getLibrary()) && codegenModel != null) {
473-
474-
if (this.modelPropertySorting == SortingMethod.LEGACY) {
471+
if (codegenModel != null) {
472+
if (this.modelPropertySorting == SortingMethod.ALPHABETICAL) {
475473
Collections.sort(codegenModel.vars, propertyComparatorByName);
476474
Collections.sort(codegenModel.allVars, propertyComparatorByName);
477475
Collections.sort(codegenModel.requiredVars, propertyComparatorByName);
478476
Collections.sort(codegenModel.optionalVars, propertyComparatorByName);
479477
Collections.sort(codegenModel.readOnlyVars, propertyComparatorByName);
480478
Collections.sort(codegenModel.readWriteVars, propertyComparatorByName);
481479
Collections.sort(codegenModel.parentVars, propertyComparatorByName);
482-
483-
Collections.sort(codegenModel.vars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
484-
Collections.sort(codegenModel.allVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
485-
Collections.sort(codegenModel.requiredVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
486-
Collections.sort(codegenModel.optionalVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
487-
Collections.sort(codegenModel.readOnlyVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
488-
Collections.sort(codegenModel.readWriteVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
489-
Collections.sort(codegenModel.parentVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
490480
}
491-
else {
492-
if (this.modelPropertySorting == SortingMethod.ALPHABETICAL) {
481+
482+
if (GENERICHOST.equals(getLibrary())) {
483+
484+
if (this.modelPropertySorting == SortingMethod.LEGACY) {
493485
Collections.sort(codegenModel.vars, propertyComparatorByName);
494486
Collections.sort(codegenModel.allVars, propertyComparatorByName);
495487
Collections.sort(codegenModel.requiredVars, propertyComparatorByName);
496488
Collections.sort(codegenModel.optionalVars, propertyComparatorByName);
497489
Collections.sort(codegenModel.readOnlyVars, propertyComparatorByName);
498490
Collections.sort(codegenModel.readWriteVars, propertyComparatorByName);
499491
Collections.sort(codegenModel.parentVars, propertyComparatorByName);
500-
}
501492

502-
Collections.sort(codegenModel.vars, propertyComparatorByNotNullableRequiredNoDefault);
503-
Collections.sort(codegenModel.allVars, propertyComparatorByNotNullableRequiredNoDefault);
504-
Collections.sort(codegenModel.requiredVars, propertyComparatorByNotNullableRequiredNoDefault);
505-
Collections.sort(codegenModel.optionalVars, propertyComparatorByNotNullableRequiredNoDefault);
506-
Collections.sort(codegenModel.readOnlyVars, propertyComparatorByNotNullableRequiredNoDefault);
507-
Collections.sort(codegenModel.readWriteVars, propertyComparatorByNotNullableRequiredNoDefault);
508-
Collections.sort(codegenModel.parentVars, propertyComparatorByNotNullableRequiredNoDefault);
493+
Collections.sort(codegenModel.vars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
494+
Collections.sort(codegenModel.allVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
495+
Collections.sort(codegenModel.requiredVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
496+
Collections.sort(codegenModel.optionalVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
497+
Collections.sort(codegenModel.readOnlyVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
498+
Collections.sort(codegenModel.readWriteVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
499+
Collections.sort(codegenModel.parentVars, propertyComparatorByNotNullableRequiredNoDefaultLegacy);
500+
}
501+
else {
502+
Collections.sort(codegenModel.vars, propertyComparatorByNotNullableRequiredNoDefault);
503+
Collections.sort(codegenModel.allVars, propertyComparatorByNotNullableRequiredNoDefault);
504+
Collections.sort(codegenModel.requiredVars, propertyComparatorByNotNullableRequiredNoDefault);
505+
Collections.sort(codegenModel.optionalVars, propertyComparatorByNotNullableRequiredNoDefault);
506+
Collections.sort(codegenModel.readOnlyVars, propertyComparatorByNotNullableRequiredNoDefault);
507+
Collections.sort(codegenModel.readWriteVars, propertyComparatorByNotNullableRequiredNoDefault);
508+
Collections.sort(codegenModel.parentVars, propertyComparatorByNotNullableRequiredNoDefault);
509+
}
509510
}
511+
} else {
512+
SortModelPropertiesByRequiredFlag(codegenModel);
510513
}
511514

512515
return codegenModel;
@@ -924,61 +927,61 @@ public CodegenOperation fromOperation(String path,
924927
List<Server> servers) {
925928
CodegenOperation op = super.fromOperation(path, httpMethod, operation, servers);
926929

927-
if (!GENERICHOST.equals(getLibrary())) {
928-
return op;
929-
}
930-
931-
if (this.operationParameterSorting == SortingMethod.LEGACY) {
932-
Collections.sort(op.allParams, parameterComparatorByDataType);
933-
Collections.sort(op.bodyParams, parameterComparatorByDataType);
934-
Collections.sort(op.pathParams, parameterComparatorByDataType);
935-
Collections.sort(op.queryParams, parameterComparatorByDataType);
936-
Collections.sort(op.headerParams, parameterComparatorByDataType);
937-
Collections.sort(op.implicitHeadersParams, parameterComparatorByDataType);
938-
Collections.sort(op.formParams, parameterComparatorByDataType);
939-
Collections.sort(op.cookieParams, parameterComparatorByDataType);
940-
Collections.sort(op.requiredParams, parameterComparatorByDataType);
941-
Collections.sort(op.optionalParams, parameterComparatorByDataType);
942-
Collections.sort(op.notNullableParams, parameterComparatorByDataType);
943-
944-
Comparator<CodegenParameter> comparator = parameterComparatorByRequired.thenComparing(parameterComparatorByDefaultValue);
945-
Collections.sort(op.allParams, comparator);
946-
Collections.sort(op.bodyParams, comparator);
947-
Collections.sort(op.pathParams, comparator);
948-
Collections.sort(op.queryParams, comparator);
949-
Collections.sort(op.headerParams, comparator);
950-
Collections.sort(op.implicitHeadersParams, comparator);
951-
Collections.sort(op.formParams, comparator);
952-
Collections.sort(op.cookieParams, comparator);
953-
Collections.sort(op.requiredParams, comparator);
954-
Collections.sort(op.optionalParams, comparator);
955-
Collections.sort(op.notNullableParams, comparator);
956-
} else {
957-
if (this.operationParameterSorting == SortingMethod.ALPHABETICAL) {
958-
Collections.sort(op.allParams, parameterComparatorByName);
959-
Collections.sort(op.bodyParams, parameterComparatorByName);
960-
Collections.sort(op.pathParams, parameterComparatorByName);
961-
Collections.sort(op.queryParams, parameterComparatorByName);
962-
Collections.sort(op.headerParams, parameterComparatorByName);
963-
Collections.sort(op.implicitHeadersParams, parameterComparatorByName);
964-
Collections.sort(op.formParams, parameterComparatorByName);
965-
Collections.sort(op.cookieParams, parameterComparatorByName);
966-
Collections.sort(op.requiredParams, parameterComparatorByName);
967-
Collections.sort(op.optionalParams, parameterComparatorByName);
968-
Collections.sort(op.notNullableParams, parameterComparatorByName);
969-
}
930+
if (this.operationParameterSorting == SortingMethod.ALPHABETICAL) {
931+
Collections.sort(op.allParams, parameterComparatorByName);
932+
Collections.sort(op.bodyParams, parameterComparatorByName);
933+
Collections.sort(op.pathParams, parameterComparatorByName);
934+
Collections.sort(op.queryParams, parameterComparatorByName);
935+
Collections.sort(op.headerParams, parameterComparatorByName);
936+
Collections.sort(op.implicitHeadersParams, parameterComparatorByName);
937+
Collections.sort(op.formParams, parameterComparatorByName);
938+
Collections.sort(op.cookieParams, parameterComparatorByName);
939+
Collections.sort(op.requiredParams, parameterComparatorByName);
940+
Collections.sort(op.optionalParams, parameterComparatorByName);
941+
Collections.sort(op.notNullableParams, parameterComparatorByName);
942+
}
970943

971-
Collections.sort(op.allParams, parameterComparatorByNotNullableRequiredNoDefault);
972-
Collections.sort(op.bodyParams, parameterComparatorByNotNullableRequiredNoDefault);
973-
Collections.sort(op.pathParams, parameterComparatorByNotNullableRequiredNoDefault);
974-
Collections.sort(op.queryParams, parameterComparatorByNotNullableRequiredNoDefault);
975-
Collections.sort(op.headerParams, parameterComparatorByNotNullableRequiredNoDefault);
976-
Collections.sort(op.implicitHeadersParams, parameterComparatorByNotNullableRequiredNoDefault);
977-
Collections.sort(op.formParams, parameterComparatorByNotNullableRequiredNoDefault);
978-
Collections.sort(op.cookieParams, parameterComparatorByNotNullableRequiredNoDefault);
979-
Collections.sort(op.requiredParams, parameterComparatorByNotNullableRequiredNoDefault);
980-
Collections.sort(op.optionalParams, parameterComparatorByNotNullableRequiredNoDefault);
981-
Collections.sort(op.notNullableParams, parameterComparatorByNotNullableRequiredNoDefault);
944+
if (GENERICHOST.equals(getLibrary())) {
945+
if (this.operationParameterSorting == SortingMethod.LEGACY) {
946+
Collections.sort(op.allParams, parameterComparatorByDataType);
947+
Collections.sort(op.bodyParams, parameterComparatorByDataType);
948+
Collections.sort(op.pathParams, parameterComparatorByDataType);
949+
Collections.sort(op.queryParams, parameterComparatorByDataType);
950+
Collections.sort(op.headerParams, parameterComparatorByDataType);
951+
Collections.sort(op.implicitHeadersParams, parameterComparatorByDataType);
952+
Collections.sort(op.formParams, parameterComparatorByDataType);
953+
Collections.sort(op.cookieParams, parameterComparatorByDataType);
954+
Collections.sort(op.requiredParams, parameterComparatorByDataType);
955+
Collections.sort(op.optionalParams, parameterComparatorByDataType);
956+
Collections.sort(op.notNullableParams, parameterComparatorByDataType);
957+
958+
Comparator<CodegenParameter> comparator = parameterComparatorByRequired.thenComparing(parameterComparatorByDefaultValue);
959+
Collections.sort(op.allParams, comparator);
960+
Collections.sort(op.bodyParams, comparator);
961+
Collections.sort(op.pathParams, comparator);
962+
Collections.sort(op.queryParams, comparator);
963+
Collections.sort(op.headerParams, comparator);
964+
Collections.sort(op.implicitHeadersParams, comparator);
965+
Collections.sort(op.formParams, comparator);
966+
Collections.sort(op.cookieParams, comparator);
967+
Collections.sort(op.requiredParams, comparator);
968+
Collections.sort(op.optionalParams, comparator);
969+
Collections.sort(op.notNullableParams, comparator);
970+
} else {
971+
Collections.sort(op.allParams, parameterComparatorByNotNullableRequiredNoDefault);
972+
Collections.sort(op.bodyParams, parameterComparatorByNotNullableRequiredNoDefault);
973+
Collections.sort(op.pathParams, parameterComparatorByNotNullableRequiredNoDefault);
974+
Collections.sort(op.queryParams, parameterComparatorByNotNullableRequiredNoDefault);
975+
Collections.sort(op.headerParams, parameterComparatorByNotNullableRequiredNoDefault);
976+
Collections.sort(op.implicitHeadersParams, parameterComparatorByNotNullableRequiredNoDefault);
977+
Collections.sort(op.formParams, parameterComparatorByNotNullableRequiredNoDefault);
978+
Collections.sort(op.cookieParams, parameterComparatorByNotNullableRequiredNoDefault);
979+
Collections.sort(op.requiredParams, parameterComparatorByNotNullableRequiredNoDefault);
980+
Collections.sort(op.optionalParams, parameterComparatorByNotNullableRequiredNoDefault);
981+
Collections.sort(op.notNullableParams, parameterComparatorByNotNullableRequiredNoDefault);
982+
}
983+
} else {
984+
SortParametersByRequiredFlag(op.allParams);
982985
}
983986

984987
return op;

0 commit comments

Comments
 (0)