Skip to content

Commit 3e577d5

Browse files
[BUG][CSHARP][GENERICHOST] Write enum values in expected JSON format (#21698)
* Use ValueConverter method for enums to output in the correct JSON format * Fix doc comment * Update samples * Call ToString on return value of converter * Update samples * Update samples * Add test
1 parent 89a108a commit 3e577d5

File tree

204 files changed

+618
-609
lines changed

Some content is hidden

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

204 files changed

+618
-609
lines changed

modules/openapi-generator/src/main/resources/csharp/modelEnum.mustache

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@
141141
/// <param name="options"></param>
142142
public override void Write(Utf8JsonWriter writer, {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} {{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}, JsonSerializerOptions options)
143143
{
144-
writer.WriteStringValue({{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}.ToString());
144+
writer.WriteStringValue({{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}).ToString());
145145
}
146146
}
147147

@@ -172,14 +172,14 @@
172172
}
173173

174174
/// <summary>
175-
/// Writes the DateTime to the json writer
175+
/// Writes the {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} to the json writer
176176
/// </summary>
177177
/// <param name="writer"></param>
178178
/// <param name="{{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}"></param>
179179
/// <param name="options"></param>
180180
public override void Write(Utf8JsonWriter writer, {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? {{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}, JsonSerializerOptions options)
181181
{
182-
writer.WriteStringValue({{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}?.ToString() ?? "null");
182+
writer.WriteStringValue({{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}.HasValue ? {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}ValueConverter.ToJsonValue({{#lambda.camelcase_sanitize_param}}{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}{{/lambda.camelcase_sanitize_param}}.Value).ToString() : "null");
183183
}
184184
}
185185
{{/useGenericHost}}

samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Model/MarineAreaCode.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public override MarineAreaCode Read(ref Utf8JsonReader reader, Type typeToConver
131131
/// <param name="options"></param>
132132
public override void Write(Utf8JsonWriter writer, MarineAreaCode marineAreaCode, JsonSerializerOptions options)
133133
{
134-
writer.WriteStringValue(marineAreaCode.ToString());
134+
writer.WriteStringValue(MarineAreaCodeValueConverter.ToJsonValue(marineAreaCode).ToString());
135135
}
136136
}
137137

@@ -162,14 +162,14 @@ public class MarineAreaCodeNullableJsonConverter : JsonConverter<MarineAreaCode?
162162
}
163163

164164
/// <summary>
165-
/// Writes the DateTime to the json writer
165+
/// Writes the MarineAreaCode to the json writer
166166
/// </summary>
167167
/// <param name="writer"></param>
168168
/// <param name="marineAreaCode"></param>
169169
/// <param name="options"></param>
170170
public override void Write(Utf8JsonWriter writer, MarineAreaCode? marineAreaCode, JsonSerializerOptions options)
171171
{
172-
writer.WriteStringValue(marineAreaCode?.ToString() ?? "null");
172+
writer.WriteStringValue(marineAreaCode.HasValue ? MarineAreaCodeValueConverter.ToJsonValue(marineAreaCode.Value).ToString() : "null");
173173
}
174174
}
175175
}

samples/client/petstore/csharp/generichost/latest/ComposedEnum/src/Org.OpenAPITools/Model/StateTerritoryCode.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public override StateTerritoryCode Read(ref Utf8JsonReader reader, Type typeToCo
131131
/// <param name="options"></param>
132132
public override void Write(Utf8JsonWriter writer, StateTerritoryCode stateTerritoryCode, JsonSerializerOptions options)
133133
{
134-
writer.WriteStringValue(stateTerritoryCode.ToString());
134+
writer.WriteStringValue(StateTerritoryCodeValueConverter.ToJsonValue(stateTerritoryCode).ToString());
135135
}
136136
}
137137

@@ -162,14 +162,14 @@ public class StateTerritoryCodeNullableJsonConverter : JsonConverter<StateTerrit
162162
}
163163

164164
/// <summary>
165-
/// Writes the DateTime to the json writer
165+
/// Writes the StateTerritoryCode to the json writer
166166
/// </summary>
167167
/// <param name="writer"></param>
168168
/// <param name="stateTerritoryCode"></param>
169169
/// <param name="options"></param>
170170
public override void Write(Utf8JsonWriter writer, StateTerritoryCode? stateTerritoryCode, JsonSerializerOptions options)
171171
{
172-
writer.WriteStringValue(stateTerritoryCode?.ToString() ?? "null");
172+
writer.WriteStringValue(stateTerritoryCode.HasValue ? StateTerritoryCodeValueConverter.ToJsonValue(stateTerritoryCode.Value).ToString() : "null");
173173
}
174174
}
175175
}

samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/ChildCatAllOfPetType.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public override ChildCatAllOfPetType Read(ref Utf8JsonReader reader, Type typeTo
116116
/// <param name="options"></param>
117117
public override void Write(Utf8JsonWriter writer, ChildCatAllOfPetType childCatAllOfPetType, JsonSerializerOptions options)
118118
{
119-
writer.WriteStringValue(childCatAllOfPetType.ToString());
119+
writer.WriteStringValue(ChildCatAllOfPetTypeValueConverter.ToJsonValue(childCatAllOfPetType).ToString());
120120
}
121121
}
122122

@@ -147,14 +147,14 @@ public class ChildCatAllOfPetTypeNullableJsonConverter : JsonConverter<ChildCatA
147147
}
148148

149149
/// <summary>
150-
/// Writes the DateTime to the json writer
150+
/// Writes the ChildCatAllOfPetType to the json writer
151151
/// </summary>
152152
/// <param name="writer"></param>
153153
/// <param name="childCatAllOfPetType"></param>
154154
/// <param name="options"></param>
155155
public override void Write(Utf8JsonWriter writer, ChildCatAllOfPetType? childCatAllOfPetType, JsonSerializerOptions options)
156156
{
157-
writer.WriteStringValue(childCatAllOfPetType?.ToString() ?? "null");
157+
writer.WriteStringValue(childCatAllOfPetType.HasValue ? ChildCatAllOfPetTypeValueConverter.ToJsonValue(childCatAllOfPetType.Value).ToString() : "null");
158158
}
159159
}
160160
}

samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/EnumArraysArrayEnumInner.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public override EnumArraysArrayEnumInner Read(ref Utf8JsonReader reader, Type ty
130130
/// <param name="options"></param>
131131
public override void Write(Utf8JsonWriter writer, EnumArraysArrayEnumInner enumArraysArrayEnumInner, JsonSerializerOptions options)
132132
{
133-
writer.WriteStringValue(enumArraysArrayEnumInner.ToString());
133+
writer.WriteStringValue(EnumArraysArrayEnumInnerValueConverter.ToJsonValue(enumArraysArrayEnumInner).ToString());
134134
}
135135
}
136136

@@ -161,14 +161,14 @@ public class EnumArraysArrayEnumInnerNullableJsonConverter : JsonConverter<EnumA
161161
}
162162

163163
/// <summary>
164-
/// Writes the DateTime to the json writer
164+
/// Writes the EnumArraysArrayEnumInner to the json writer
165165
/// </summary>
166166
/// <param name="writer"></param>
167167
/// <param name="enumArraysArrayEnumInner"></param>
168168
/// <param name="options"></param>
169169
public override void Write(Utf8JsonWriter writer, EnumArraysArrayEnumInner? enumArraysArrayEnumInner, JsonSerializerOptions options)
170170
{
171-
writer.WriteStringValue(enumArraysArrayEnumInner?.ToString() ?? "null");
171+
writer.WriteStringValue(enumArraysArrayEnumInner.HasValue ? EnumArraysArrayEnumInnerValueConverter.ToJsonValue(enumArraysArrayEnumInner.Value).ToString() : "null");
172172
}
173173
}
174174
}

samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/EnumArraysJustSymbol.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public override EnumArraysJustSymbol Read(ref Utf8JsonReader reader, Type typeTo
130130
/// <param name="options"></param>
131131
public override void Write(Utf8JsonWriter writer, EnumArraysJustSymbol enumArraysJustSymbol, JsonSerializerOptions options)
132132
{
133-
writer.WriteStringValue(enumArraysJustSymbol.ToString());
133+
writer.WriteStringValue(EnumArraysJustSymbolValueConverter.ToJsonValue(enumArraysJustSymbol).ToString());
134134
}
135135
}
136136

@@ -161,14 +161,14 @@ public class EnumArraysJustSymbolNullableJsonConverter : JsonConverter<EnumArray
161161
}
162162

163163
/// <summary>
164-
/// Writes the DateTime to the json writer
164+
/// Writes the EnumArraysJustSymbol to the json writer
165165
/// </summary>
166166
/// <param name="writer"></param>
167167
/// <param name="enumArraysJustSymbol"></param>
168168
/// <param name="options"></param>
169169
public override void Write(Utf8JsonWriter writer, EnumArraysJustSymbol? enumArraysJustSymbol, JsonSerializerOptions options)
170170
{
171-
writer.WriteStringValue(enumArraysJustSymbol?.ToString() ?? "null");
171+
writer.WriteStringValue(enumArraysJustSymbol.HasValue ? EnumArraysJustSymbolValueConverter.ToJsonValue(enumArraysJustSymbol.Value).ToString() : "null");
172172
}
173173
}
174174
}

samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/EnumClass.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ public override EnumClass Read(ref Utf8JsonReader reader, Type typeToConvert, Js
144144
/// <param name="options"></param>
145145
public override void Write(Utf8JsonWriter writer, EnumClass enumClass, JsonSerializerOptions options)
146146
{
147-
writer.WriteStringValue(enumClass.ToString());
147+
writer.WriteStringValue(EnumClassValueConverter.ToJsonValue(enumClass).ToString());
148148
}
149149
}
150150

@@ -175,14 +175,14 @@ public class EnumClassNullableJsonConverter : JsonConverter<EnumClass?>
175175
}
176176

177177
/// <summary>
178-
/// Writes the DateTime to the json writer
178+
/// Writes the EnumClass to the json writer
179179
/// </summary>
180180
/// <param name="writer"></param>
181181
/// <param name="enumClass"></param>
182182
/// <param name="options"></param>
183183
public override void Write(Utf8JsonWriter writer, EnumClass? enumClass, JsonSerializerOptions options)
184184
{
185-
writer.WriteStringValue(enumClass?.ToString() ?? "null");
185+
writer.WriteStringValue(enumClass.HasValue ? EnumClassValueConverter.ToJsonValue(enumClass.Value).ToString() : "null");
186186
}
187187
}
188188
}

samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/EnumTestEnumInteger.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public override EnumTestEnumInteger Read(ref Utf8JsonReader reader, Type typeToC
124124
/// <param name="options"></param>
125125
public override void Write(Utf8JsonWriter writer, EnumTestEnumInteger enumTestEnumInteger, JsonSerializerOptions options)
126126
{
127-
writer.WriteStringValue(enumTestEnumInteger.ToString());
127+
writer.WriteStringValue(EnumTestEnumIntegerValueConverter.ToJsonValue(enumTestEnumInteger).ToString());
128128
}
129129
}
130130

@@ -155,14 +155,14 @@ public class EnumTestEnumIntegerNullableJsonConverter : JsonConverter<EnumTestEn
155155
}
156156

157157
/// <summary>
158-
/// Writes the DateTime to the json writer
158+
/// Writes the EnumTestEnumInteger to the json writer
159159
/// </summary>
160160
/// <param name="writer"></param>
161161
/// <param name="enumTestEnumInteger"></param>
162162
/// <param name="options"></param>
163163
public override void Write(Utf8JsonWriter writer, EnumTestEnumInteger? enumTestEnumInteger, JsonSerializerOptions options)
164164
{
165-
writer.WriteStringValue(enumTestEnumInteger?.ToString() ?? "null");
165+
writer.WriteStringValue(enumTestEnumInteger.HasValue ? EnumTestEnumIntegerValueConverter.ToJsonValue(enumTestEnumInteger.Value).ToString() : "null");
166166
}
167167
}
168168
}

samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/EnumTestEnumIntegerOnly.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public override EnumTestEnumIntegerOnly Read(ref Utf8JsonReader reader, Type typ
124124
/// <param name="options"></param>
125125
public override void Write(Utf8JsonWriter writer, EnumTestEnumIntegerOnly enumTestEnumIntegerOnly, JsonSerializerOptions options)
126126
{
127-
writer.WriteStringValue(enumTestEnumIntegerOnly.ToString());
127+
writer.WriteStringValue(EnumTestEnumIntegerOnlyValueConverter.ToJsonValue(enumTestEnumIntegerOnly).ToString());
128128
}
129129
}
130130

@@ -155,14 +155,14 @@ public class EnumTestEnumIntegerOnlyNullableJsonConverter : JsonConverter<EnumTe
155155
}
156156

157157
/// <summary>
158-
/// Writes the DateTime to the json writer
158+
/// Writes the EnumTestEnumIntegerOnly to the json writer
159159
/// </summary>
160160
/// <param name="writer"></param>
161161
/// <param name="enumTestEnumIntegerOnly"></param>
162162
/// <param name="options"></param>
163163
public override void Write(Utf8JsonWriter writer, EnumTestEnumIntegerOnly? enumTestEnumIntegerOnly, JsonSerializerOptions options)
164164
{
165-
writer.WriteStringValue(enumTestEnumIntegerOnly?.ToString() ?? "null");
165+
writer.WriteStringValue(enumTestEnumIntegerOnly.HasValue ? EnumTestEnumIntegerOnlyValueConverter.ToJsonValue(enumTestEnumIntegerOnly.Value).ToString() : "null");
166166
}
167167
}
168168
}

samples/client/petstore/csharp/generichost/net4.7/FormModels/src/Org.OpenAPITools/Model/EnumTestEnumString.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ public override EnumTestEnumString Read(ref Utf8JsonReader reader, Type typeToCo
214214
/// <param name="options"></param>
215215
public override void Write(Utf8JsonWriter writer, EnumTestEnumString enumTestEnumString, JsonSerializerOptions options)
216216
{
217-
writer.WriteStringValue(enumTestEnumString.ToString());
217+
writer.WriteStringValue(EnumTestEnumStringValueConverter.ToJsonValue(enumTestEnumString).ToString());
218218
}
219219
}
220220

@@ -245,14 +245,14 @@ public class EnumTestEnumStringNullableJsonConverter : JsonConverter<EnumTestEnu
245245
}
246246

247247
/// <summary>
248-
/// Writes the DateTime to the json writer
248+
/// Writes the EnumTestEnumString to the json writer
249249
/// </summary>
250250
/// <param name="writer"></param>
251251
/// <param name="enumTestEnumString"></param>
252252
/// <param name="options"></param>
253253
public override void Write(Utf8JsonWriter writer, EnumTestEnumString? enumTestEnumString, JsonSerializerOptions options)
254254
{
255-
writer.WriteStringValue(enumTestEnumString?.ToString() ?? "null");
255+
writer.WriteStringValue(enumTestEnumString.HasValue ? EnumTestEnumStringValueConverter.ToJsonValue(enumTestEnumString.Value).ToString() : "null");
256256
}
257257
}
258258
}

0 commit comments

Comments
 (0)