Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[csharp-netcore] Composed primitives support in generichost #11924

Merged
merged 64 commits into from Apr 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
d71105a
Merge pull request #1 from OpenAPITools/master
devhl-labs Jun 2, 2021
36c514b
Merge pull request #2 from OpenAPITools/master
devhl-labs Jun 8, 2021
a0c6107
Merge branch 'OpenAPITools:master' into master
devhl-labs Jun 12, 2021
ece89e5
Merge branch 'OpenAPITools:master' into master
devhl-labs Jul 3, 2021
d2a46f6
Merge branch 'OpenAPITools:master' into master
devhl-labs Jul 5, 2021
3ca0921
Merge branch 'OpenAPITools:master' into master
devhl-labs Jul 15, 2021
c2a1a4c
Merge branch 'OpenAPITools:master' into master
devhl-labs Aug 3, 2021
3456183
Merge branch 'OpenAPITools:master' into master
devhl-labs Oct 15, 2021
f786322
Merge branch 'OpenAPITools:master' into master
devhl-labs Nov 7, 2021
31f9629
Merge branch 'OpenAPITools:master' into master
devhl-labs Jan 3, 2022
976d702
Merge branch 'OpenAPITools:master' into master
devhl-labs Jan 29, 2022
9438a4c
Merge branch 'OpenAPITools:master' into master
devhl-labs Jan 29, 2022
152e90f
refactor nrt annotation
devhl-labs Jan 29, 2022
766a102
enable nrt by default in .net6.0+
devhl-labs Jan 29, 2022
9369884
use shorter nrt annotation
devhl-labs Jan 29, 2022
674a44e
build samples
devhl-labs Jan 29, 2022
c0633de
removed debugging lines
devhl-labs Jan 29, 2022
b1a8fd2
fixed model and operatoin constructors
devhl-labs Feb 3, 2022
6b7c188
reverted a commented line for comparison
devhl-labs Feb 3, 2022
15759e4
Merge branch 'OpenAPITools:master' into master
devhl-labs Feb 5, 2022
d278a82
Merge branch 'OpenAPITools:master' into master
devhl-labs Feb 14, 2022
8da28ed
Merge branch 'OpenAPITools:master' into master
devhl-labs Feb 19, 2022
48cdc13
resolved conflicts
devhl-labs Feb 19, 2022
2208cd6
upgraded to System.Text.Json
devhl-labs Feb 28, 2022
b2c7db5
build samples
devhl-labs Feb 28, 2022
2374670
Merge branch 'OpenAPITools:master' into master
devhl-labs Feb 28, 2022
b2f26df
resolved conflict
devhl-labs Feb 28, 2022
a84e531
Merge branch 'OpenAPITools:master' into master
devhl-labs Feb 28, 2022
f678901
Merge branch 'master' into stj
devhl-labs Feb 28, 2022
64ad596
build samples
devhl-labs Feb 28, 2022
d2ba260
Merge branch 'OpenAPITools:master' into master
devhl-labs Feb 28, 2022
a0e713f
resolve conflict
devhl-labs Feb 28, 2022
678b726
deleted samples to remove old files
devhl-labs Feb 28, 2022
c3fbbc8
bug fixes
devhl-labs Mar 1, 2022
64e4d77
bug fixes
devhl-labs Mar 1, 2022
8c97cea
Merge branch 'OpenAPITools:master' into master
devhl-labs Mar 5, 2022
d786008
added cumpulsory property to codegen
devhl-labs Mar 5, 2022
b73d528
build samples
devhl-labs Mar 5, 2022
cd0c4b8
fixed bug
devhl-labs Mar 6, 2022
4ec4e7e
fixed bug
devhl-labs Mar 6, 2022
c85270f
Merge branch 'OpenAPITools:master' into master
devhl-labs Mar 12, 2022
d8a1488
resolved conflicts
devhl-labs Mar 12, 2022
d6976d4
fixes
devhl-labs Mar 12, 2022
c656ab7
removed bugged code that wasnt needed
devhl-labs Mar 12, 2022
206353a
build samples
devhl-labs Mar 12, 2022
b61ca93
restored sorting and default values for required params
devhl-labs Mar 12, 2022
72fa231
fixed bugs in comparison
devhl-labs Mar 12, 2022
fdd96c2
fixed sort comparators
devhl-labs Mar 12, 2022
ce504ca
recreate tests
devhl-labs Mar 12, 2022
0935b2d
build samples...again...
devhl-labs Mar 12, 2022
51d6d68
removed debugging line breaks
devhl-labs Mar 12, 2022
11bc2c1
simplified constructor signature
devhl-labs Mar 12, 2022
132cbb2
inject json options
devhl-labs Mar 13, 2022
e0f5d7f
build samples...again...
devhl-labs Mar 13, 2022
7034229
Merge branch 'OpenAPITools:master' into master
devhl-labs Mar 15, 2022
320f5d2
resolved conflicts
devhl-labs Mar 16, 2022
5d6f4ad
build samples
devhl-labs Mar 16, 2022
8d1d55a
add support for composed primitives
devhl-labs Mar 20, 2022
4d8f9da
Merge branch 'OpenAPITools:master' into master
devhl-labs Mar 20, 2022
6b1d14b
Merge branch 'master' into composed-primitives
devhl-labs Mar 20, 2022
eaca66c
build samples
devhl-labs Mar 20, 2022
0be1555
build all samples
devhl-labs Mar 20, 2022
58d28c1
Merge branch 'OpenAPITools:master' into master
devhl-labs Apr 2, 2022
56f51c4
resolved convlicts
devhl-labs Apr 2, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -1,7 +1,7 @@
# for csharp-netcore generichost
generatorName: csharp-netcore
outputDir: samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0-nrt
inputSpec: modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature-generichost.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml
library: generichost
templateDir: modules/openapi-generator/src/main/resources/csharp-netcore
additionalProperties:
Expand Down
@@ -1,7 +1,7 @@
# for csharp-netcore generichost
generatorName: csharp-netcore
outputDir: samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-net6.0
inputSpec: modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature-generichost.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml
library: generichost
templateDir: modules/openapi-generator/src/main/resources/csharp-netcore
additionalProperties:
Expand Down
@@ -1,7 +1,7 @@
# for csharp-netcore generichost
generatorName: csharp-netcore
outputDir: samples/client/petstore/csharp-netcore/OpenAPIClient-generichost-netstandard2.0
inputSpec: modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature-generichost.yaml
inputSpec: modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml
library: generichost
templateDir: modules/openapi-generator/src/main/resources/csharp-netcore
additionalProperties:
Expand Down
Expand Up @@ -1349,6 +1349,14 @@ public ModelsMap postProcessModels(ModelsMap objs) {
cm.anyOf.remove("Null");
}

if (cm.getComposedSchemas() != null && cm.getComposedSchemas().getOneOf() != null && !cm.getComposedSchemas().getOneOf().isEmpty()) {
cm.getComposedSchemas().getOneOf().removeIf(o -> o.dataType.equals("Null"));
}

if (cm.getComposedSchemas() != null && cm.getComposedSchemas().getAnyOf() != null && !cm.getComposedSchemas().getAnyOf().isEmpty()) {
cm.getComposedSchemas().getAnyOf().removeIf(o -> o.dataType.equals("Null"));
}

for (CodegenProperty cp : cm.readWriteVars) {
// ISSUE: https://github.com/OpenAPITools/openapi-generator/issues/11844
// allVars may not have all properties
Expand Down Expand Up @@ -1385,7 +1393,7 @@ public ModelsMap postProcessModels(ModelsMap objs) {
* Check modules\openapi-generator\src\test\resources\3_0\java\petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml
* Without this method, property petType in GrandparentAnimal will not make it through ParentPet and into ChildCat
*/
private void EnsureInheritedVariablesArePresent(CodegenModel derivedModel) {
private void EnsureInheritedPropertiesArePresent(CodegenModel derivedModel) {
// every c# generator should definetly want this, or we should fix the issue
// still, lets avoid breaking changes :(
if (Boolean.FALSE.equals(GENERICHOST.equals(getLibrary()))){
Expand All @@ -1405,7 +1413,7 @@ private void EnsureInheritedVariablesArePresent(CodegenModel derivedModel) {
}
}

EnsureInheritedVariablesArePresent(derivedModel.parentModel);
EnsureInheritedPropertiesArePresent(derivedModel.parentModel);
}

/**
Expand All @@ -1430,19 +1438,19 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
}

for (CodegenModel cm : allModels) {
if (cm.parent != null){
// remove the parent CodegenProperty from the model
// we need it gone so we can use allOf/oneOf/anyOf in the constructor
cm.allOf.removeIf(item -> item.equals(cm.parent));
cm.oneOf.removeIf(item -> item.equals(cm.parent));
cm.anyOf.removeIf(item -> item.equals(cm.parent));
}

cm.anyOf.forEach(anyOf -> removePropertiesDeclaredInComposedClass(anyOf, allModels, cm));
cm.oneOf.forEach(oneOf -> removePropertiesDeclaredInComposedClass(oneOf, allModels, cm));
cm.allOf.forEach(allOf -> removePropertiesDeclaredInComposedClass(allOf, allModels, cm));

EnsureInheritedVariablesArePresent(cm);
if (cm.getComposedSchemas() != null && cm.getComposedSchemas().getAllOf() != null && !cm.getComposedSchemas().getAllOf().isEmpty()) {
cm.getComposedSchemas().getAllOf().forEach(allOf -> {
if (allOf.dataType.equals(cm.parent)){
allOf.isInherited = true;
}
});
}

EnsureInheritedPropertiesArePresent(cm);
}

return objs;
Expand Down
Expand Up @@ -25,20 +25,23 @@
if (reader.TokenType != JsonTokenType.StartObject)
throw new JsonException();

{{#anyOf}}
Utf8JsonReader {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}}Reader = reader;
Client.ClientUtils.TryDeserialize<{{.}}>(ref {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}}Reader, options, out {{.}}{{nrt?}} {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}});
{{#composedSchemas.anyOf}}
Utf8JsonReader {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Reader = reader;
bool {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Deserialized = Client.ClientUtils.TryDeserialize<{{{dataType}}}>(ref {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Reader, options, out {{{dataType}}}{{^isBoolean}}{{nrt?}}{{/isBoolean}} {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}});

{{/anyOf}}
{{#oneOf}}
Utf8JsonReader {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}}Reader = reader;
Client.ClientUtils.TryDeserialize<{{.}}>(ref {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}}Reader, options, out {{.}}{{nrt?}} {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}});
{{/composedSchemas.anyOf}}
{{#composedSchemas.oneOf}}
Utf8JsonReader {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Reader = reader;
bool {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Deserialized = Client.ClientUtils.TryDeserialize<{{{dataType}}}>(ref {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Reader, options, out {{{dataType}}}{{^isBoolean}}{{nrt?}}{{/isBoolean}} {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}});

{{/oneOf}}
{{#allOf}}
Utf8JsonReader {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}}Reader = reader;
Client.ClientUtils.TryDeserialize<{{.}}>(ref {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}}Reader, options, out {{.}}{{nrt?}} {{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}});
{{/allOf}}
{{/composedSchemas.oneOf}}
{{#composedSchemas.allOf}}
{{^isInherited}}
Utf8JsonReader {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Reader = reader;
bool {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Deserialized = Client.ClientUtils.TryDeserialize<{{{dataType}}}>(ref {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Reader, options, out {{{dataType}}}{{^isBoolean}}{{nrt?}}{{/isBoolean}} {{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}});

{{/isInherited}}
{{/composedSchemas.allOf}}
{{#allVars}}
{{#lambda.optional}}{{{datatypeWithEnum}}}{{/lambda.optional}} {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} = default;
{{/allVars}}
Expand Down Expand Up @@ -104,17 +107,17 @@
}
}

{{#oneOf}}
if ({{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}} != null)
return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}} {{#allOf}}{{#lambda.camelcase_param}}{{.}} {{/lambda.camelcase_param}}{{/allOf}}{{#anyOf}}{{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}} {{/anyOf}}{{#allVars}}{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} {{/allVars}}{{/lambda.joinWithComma}});
{{#composedSchemas.oneOf}}
if ({{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}Deserialized)
return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_param}}{{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}{{/lambda.camelcase_param}} {{#model.composedSchemas.allOf}}{{^isInherited}}{{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}{{/isInherited}}{{/model.composedSchemas.allOf}}{{#model.composedSchemas.anyOf}}{{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} {{/allVars}}{{/lambda.joinWithComma}});

{{#-last}}
throw new JsonException();
{{/-last}}
{{/oneOf}}
{{^oneOf}}
return new {{classname}}({{#lambda.joinWithComma}}{{#anyOf}}{{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}} {{/anyOf}}{{#allOf}}{{#lambda.camelcase_param}}{{.}}{{/lambda.camelcase_param}} {{/allOf}}{{#allVars}}{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} {{/allVars}}{{/lambda.joinWithComma}});
{{/oneOf}}
{{/composedSchemas.oneOf}}
{{^composedSchemas.oneOf}}
return new {{classname}}({{#lambda.joinWithComma}}{{#model.composedSchemas.anyOf}}{{#lambda.camelcase_param}}{{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}{{/lambda.camelcase_param}} {{/model.composedSchemas.anyOf}}{{#model.composedSchemas.allOf}}{{^isInherited}}{{#lambda.camelcase_param}}{{#lambda.camelcase_param}}{{baseType}}{{#isArray}}{{{dataFormat}}}{{/isArray}}{{/lambda.camelcase_param}}{{/lambda.camelcase_param}} {{/isInherited}}{{/model.composedSchemas.allOf}}{{#allVars}}{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} {{/allVars}}{{/lambda.joinWithComma}});
{{/composedSchemas.oneOf}}
}

/// <summary>
Expand Down