Skip to content

Commit f333f71

Browse files
committed
composed enums
1 parent df1d562 commit f333f71

File tree

245 files changed

+13791
-4
lines changed

Some content is hidden

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

245 files changed

+13791
-4
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,6 +653,14 @@ public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs)
653653
property.isNullable = true;
654654
patchPropertyVendorExtensions(property);
655655
property.vendorExtensions.put("x-base-name", model.name.substring(model.name.lastIndexOf('_') + 1));
656+
657+
if (!property.isEnum) {
658+
CodegenModel composedOf = ModelUtils.getModelByName(property.name, processed);
659+
if (composedOf != null) {
660+
property.isEnum = composedOf.isEnum;
661+
patchPropertyVendorExtensions(property);
662+
}
663+
}
656664
}
657665
}
658666
}

modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,9 @@
299299
{{^composedSchemas.oneOf}}
300300
{{^required}}
301301
{{#model.composedSchemas.anyOf}}
302-
Option<{{baseType}}{{>NullConditionalProperty}}> {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} == null
302+
Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}> {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue = {{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} == null
303303
? default
304-
: new Option<{{baseType}}{{>NullConditionalProperty}}>({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}});
304+
: new Option<{{{datatypeWithEnum}}}{{>NullConditionalProperty}}>({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}});
305305
{{/model.composedSchemas.anyOf}}
306306
{{#-last}}
307307

@@ -397,7 +397,7 @@
397397
{{^isPrimitiveType}}
398398
{
399399
{{datatypeWithEnum}}JsonConverter {{datatypeWithEnum}}JsonConverter = ({{datatypeWithEnum}}JsonConverter) jsonSerializerOptions.Converters.First(c => c.CanConvert({{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{/required}}.GetType()));
400-
{{datatypeWithEnum}}JsonConverter.WriteProperties(writer, {{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{/required}}, jsonSerializerOptions);
400+
{{datatypeWithEnum}}JsonConverter.Write{{^isEnumRef}}Properties{{/isEnumRef}}(writer, {{#lambda.camelcase_sanitize_param}}{{model.classname}}{{/lambda.camelcase_sanitize_param}}.{{name}}{{^required}}Option.Value{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}}{{/required}}, jsonSerializerOptions);
401401
}
402402
{{/isPrimitiveType}}
403403

modules/openapi-generator/src/main/resources/csharp/libraries/generichost/modelGeneric.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
{{^composedSchemas.anyOf}}
6363
[JsonConstructor]
6464
{{/composedSchemas.anyOf}}
65-
{{#model.vendorExtensions.x-model-is-mutable}}{{>visibility}}{{/model.vendorExtensions.x-model-is-mutable}}{{^model.vendorExtensions.x-model-is-mutable}}internal{{/model.vendorExtensions.x-model-is-mutable}} {{classname}}({{#lambda.joinWithComma}}{{#composedSchemas.anyOf}}{{^required}}Option<{{/required}}{{{baseType}}}{{>NullConditionalProperty}}{{^required}}>{{/required}} {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}} {{/composedSchemas.anyOf}}{{>ModelSignature}}{{/lambda.joinWithComma}}){{#parent}} : base({{#lambda.joinWithComma}}{{>ModelBaseSignature}}{{/lambda.joinWithComma}}){{/parent}}
65+
{{#model.vendorExtensions.x-model-is-mutable}}{{>visibility}}{{/model.vendorExtensions.x-model-is-mutable}}{{^model.vendorExtensions.x-model-is-mutable}}internal{{/model.vendorExtensions.x-model-is-mutable}} {{classname}}({{#lambda.joinWithComma}}{{#composedSchemas.anyOf}}{{^required}}Option<{{/required}}{{{datatypeWithEnum}}}{{>NullConditionalProperty}}{{^required}}>{{/required}} {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}} {{/composedSchemas.anyOf}}{{>ModelSignature}}{{/lambda.joinWithComma}}){{#parent}} : base({{#lambda.joinWithComma}}{{>ModelBaseSignature}}{{/lambda.joinWithComma}}){{/parent}}
6666
{
6767
{{#composedSchemas.anyOf}}
6868
{{#lambda.titlecase}}{{name}}{{/lambda.titlecase}}{{^required}}Option{{/required}} = {{#lambda.escape_reserved_word}}{{#lambda.camel_case}}{{name}}{{/lambda.camel_case}}{{/lambda.escape_reserved_word}};

modules/openapi-generator/src/test/resources/3_0/csharp/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2948,3 +2948,17 @@ components:
29482948
enum:
29492949
- APPROVED
29502950
- MANUAL_APPROVAL_REQUIRED
2951+
AreaCode:
2952+
oneOf:
2953+
- $ref: '#/components/schemas/StateTerritoryCode'
2954+
- $ref: '#/components/schemas/MarineAreaCode'
2955+
StateTerritoryCode:
2956+
enum:
2957+
- AL
2958+
- AK
2959+
type: string
2960+
MarineAreaCode:
2961+
enum:
2962+
- AM
2963+
- AN
2964+
type: string

samples/client/petstore/csharp/generichost/net4.7/FormModels/.openapi-generator/FILES

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ docs/models/Animal.md
1717
docs/models/ApiResponse.md
1818
docs/models/Apple.md
1919
docs/models/AppleReq.md
20+
docs/models/AreaCode.md
2021
docs/models/ArrayOfArrayOfNumberOnly.md
2122
docs/models/ArrayOfNumberOnly.md
2223
docs/models/ArrayTest.md
@@ -66,6 +67,7 @@ docs/models/LiteralStringClass.md
6667
docs/models/Mammal.md
6768
docs/models/MapTest.md
6869
docs/models/MapTestMapOfEnumStringValue.md
70+
docs/models/MarineAreaCode.md
6971
docs/models/MixedAnyOf.md
7072
docs/models/MixedAnyOfContent.md
7173
docs/models/MixedOneOf.md
@@ -115,6 +117,7 @@ docs/models/ShapeInterface.md
115117
docs/models/ShapeOrNull.md
116118
docs/models/SimpleQuadrilateral.md
117119
docs/models/SpecialModelName.md
120+
docs/models/StateTerritoryCode.md
118121
docs/models/Tag.md
119122
docs/models/TestCollectionEndingWithWordList.md
120123
docs/models/TestCollectionEndingWithWordListObject.md
@@ -140,6 +143,9 @@ docs/models/ZeroBasedEnumClassZeroBasedEnum.md
140143
docs/scripts/git_push.ps1
141144
docs/scripts/git_push.sh
142145
src/Org.OpenAPITools.Test/Api/DependencyInjectionTests.cs
146+
src/Org.OpenAPITools.Test/Model/AreaCodeTests.cs
147+
src/Org.OpenAPITools.Test/Model/MarineAreaCodeTests.cs
148+
src/Org.OpenAPITools.Test/Model/StateTerritoryCodeTests.cs
143149
src/Org.OpenAPITools.Test/Org.OpenAPITools.Test.csproj
144150
src/Org.OpenAPITools.Test/README.md
145151
src/Org.OpenAPITools/Api/AnotherFakeApi.cs
@@ -182,6 +188,7 @@ src/Org.OpenAPITools/Model/Animal.cs
182188
src/Org.OpenAPITools/Model/ApiResponse.cs
183189
src/Org.OpenAPITools/Model/Apple.cs
184190
src/Org.OpenAPITools/Model/AppleReq.cs
191+
src/Org.OpenAPITools/Model/AreaCode.cs
185192
src/Org.OpenAPITools/Model/ArrayOfArrayOfNumberOnly.cs
186193
src/Org.OpenAPITools/Model/ArrayOfNumberOnly.cs
187194
src/Org.OpenAPITools/Model/ArrayTest.cs
@@ -231,6 +238,7 @@ src/Org.OpenAPITools/Model/LiteralStringClass.cs
231238
src/Org.OpenAPITools/Model/Mammal.cs
232239
src/Org.OpenAPITools/Model/MapTest.cs
233240
src/Org.OpenAPITools/Model/MapTestMapOfEnumStringValue.cs
241+
src/Org.OpenAPITools/Model/MarineAreaCode.cs
234242
src/Org.OpenAPITools/Model/MixedAnyOf.cs
235243
src/Org.OpenAPITools/Model/MixedAnyOfContent.cs
236244
src/Org.OpenAPITools/Model/MixedOneOf.cs
@@ -280,6 +288,7 @@ src/Org.OpenAPITools/Model/ShapeInterface.cs
280288
src/Org.OpenAPITools/Model/ShapeOrNull.cs
281289
src/Org.OpenAPITools/Model/SimpleQuadrilateral.cs
282290
src/Org.OpenAPITools/Model/SpecialModelName.cs
291+
src/Org.OpenAPITools/Model/StateTerritoryCode.cs
283292
src/Org.OpenAPITools/Model/Tag.cs
284293
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordList.cs
285294
src/Org.OpenAPITools/Model/TestCollectionEndingWithWordListObject.cs

samples/client/petstore/csharp/generichost/net4.7/FormModels/api/openapi.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2700,6 +2700,20 @@ components:
27002700
- APPROVED
27012701
- MANUAL_APPROVAL_REQUIRED
27022702
type: string
2703+
AreaCode:
2704+
oneOf:
2705+
- $ref: "#/components/schemas/StateTerritoryCode"
2706+
- $ref: "#/components/schemas/MarineAreaCode"
2707+
StateTerritoryCode:
2708+
enum:
2709+
- AL
2710+
- AK
2711+
type: string
2712+
MarineAreaCode:
2713+
enum:
2714+
- AM
2715+
- AN
2716+
type: string
27032717
_foo_get_default_response:
27042718
example:
27052719
string:
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Org.OpenAPITools.Model.AreaCode
2+
3+
## Properties
4+
5+
Name | Type | Description | Notes
6+
------------ | ------------- | ------------- | -------------
7+
8+
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)
9+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Org.OpenAPITools.Model.MarineAreaCode
2+
3+
## Properties
4+
5+
Name | Type | Description | Notes
6+
------------ | ------------- | ------------- | -------------
7+
8+
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)
9+
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Org.OpenAPITools.Model.StateTerritoryCode
2+
3+
## Properties
4+
5+
Name | Type | Description | Notes
6+
------------ | ------------- | ------------- | -------------
7+
8+
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)
9+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* OpenAPI Petstore
3+
*
4+
* This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
5+
*
6+
* The version of the OpenAPI document: 1.0.0
7+
* Generated by: https://github.com/openapitools/openapi-generator.git
8+
*/
9+
10+
11+
using Xunit;
12+
13+
using System;
14+
using System.Linq;
15+
using System.IO;
16+
using System.Collections.Generic;
17+
using Org.OpenAPITools.Model;
18+
using Org.OpenAPITools.Client;
19+
using System.Reflection;
20+
21+
namespace Org.OpenAPITools.Test.Model
22+
{
23+
/// <summary>
24+
/// Class for testing AreaCode
25+
/// </summary>
26+
/// <remarks>
27+
/// This file is automatically generated by OpenAPI Generator (https://openapi-generator.tech).
28+
/// Please update the test case below to test the model.
29+
/// </remarks>
30+
public class AreaCodeTests : IDisposable
31+
{
32+
// TODO uncomment below to declare an instance variable for AreaCode
33+
//private AreaCode instance;
34+
35+
public AreaCodeTests()
36+
{
37+
// TODO uncomment below to create an instance of AreaCode
38+
//instance = new AreaCode();
39+
}
40+
41+
public void Dispose()
42+
{
43+
// Cleanup when everything is done.
44+
}
45+
46+
/// <summary>
47+
/// Test an instance of AreaCode
48+
/// </summary>
49+
[Fact]
50+
public void AreaCodeInstanceTest()
51+
{
52+
// TODO uncomment below to test "IsType" AreaCode
53+
//Assert.IsType<AreaCode>(instance);
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)