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][generichost] Added value converter class #15970

Merged
merged 1 commit into from
Jul 2, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ using System.Runtime.CompilerServices;
{{#isEnum}}
if (obj is {{classname}} {{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}})
{{! below has #isNumeric as a work around but should probably have ^isString instead https://github.com/OpenAPITools/openapi-generator/issues/15038}}
return {{classname}}Converter.{{#isInnerEnum}}{{classname}}.{{/isInnerEnum}}{{{datatypeWithEnum}}}ToJsonValue({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}){{#isNumeric}}.ToString(){{/isNumeric}};
return {{classname}}ValueConverter.{{#isInnerEnum}}{{classname}}.{{/isInnerEnum}}{{{datatypeWithEnum}}}ToJsonValue({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}){{#isNumeric}}.ToString(){{/isNumeric}};
{{/isEnum}}
{{^isEnum}}
{{#vars}}
Expand All @@ -158,7 +158,7 @@ using System.Runtime.CompilerServices;
{{/models}}
if (obj is ICollection collection)
{
List<string{{nrt?}}> entries = new List<string{{nrt?}}>();
List<string{{nrt?}}> entries = new{{^net70OrLater}} List<string{{nrt?}}>{{/net70OrLater}}();
foreach (var entry in collection)
entries.Add(ParameterToString(entry));
return string.Join(",", entries);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ namespace {{packageName}}.{{clientPackage}}
{{#models}}
{{#model}}
{{#isEnum}}
_jsonOptions.Converters.Add(new {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}Converter());
_jsonOptions.Converters.Add(new {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}NullableConverter());
_jsonOptions.Converters.Add(new {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}JsonConverter());
_jsonOptions.Converters.Add(new {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}NullableJsonConverter());
{{/isEnum}}
{{^isEnum}}
_jsonOptions.Converters.Add(new {{classname}}JsonConverter());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@
{{^isInnerEnum}}
{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} = {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}RawValue == null
? null
: {{{datatypeWithEnum}}}Converter.FromStringOrDefault({{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}RawValue);
: {{{datatypeWithEnum}}}ValueConverter.FromStringOrDefault({{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}RawValue);
{{/isInnerEnum}}
{{#isInnerEnum}}
{{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}} = {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}RawValue == null
Expand Down Expand Up @@ -439,7 +439,7 @@
writer.WriteNull("{{baseName}}");
else
{
var {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}RawValue = {{{datatypeWithEnum}}}Converter.ToJsonValue({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}{{#isNullable}}.Value{{/isNullable}});
var {{#lambda.camelcase_param}}{{name}}{{/lambda.camelcase_param}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}{{#isNullable}}.Value{{/isNullable}});
{{#allowableValues}}
{{#enumVars}}
{{#-first}}
Expand All @@ -459,7 +459,7 @@

{{/isNullable}}
{{^isNullable}}
var {{#lambda.camelcase_param}}{{nameInCamelCase}}{{/lambda.camelcase_param}}RawValue = {{{datatypeWithEnum}}}Converter.ToJsonValue({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}{{#isNullable}}.Value{{/isNullable}});
var {{#lambda.camelcase_param}}{{nameInCamelCase}}{{/lambda.camelcase_param}}RawValue = {{{datatypeWithEnum}}}ValueConverter.ToJsonValue({{#lambda.camelcase_param}}{{classname}}{{/lambda.camelcase_param}}.{{name}}{{#isNullable}}.Value{{/isNullable}});
{{#allowableValues}}
{{#enumVars}}
{{#-first}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,9 @@
{{#useGenericHost}}

/// <summary>
/// A Json converter for type <see cref="{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}"/>
/// Converts <see cref="{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}"/> to and from the JSON value
/// </summary>
/// <exception cref="NotImplementedException"></exception>
public class {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}Converter : JsonConverter<{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}>
public static class {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}ValueConverter
{
/// <summary>
/// Parses a given value to <see cref="{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}"/>
Expand Down Expand Up @@ -105,7 +104,14 @@
throw new NotImplementedException($"Value could not be handled: '{value}'");
{{/isString}}
}
}

/// <summary>
/// A Json converter for type <see cref="{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}"/>
/// </summary>
/// <exception cref="NotImplementedException"></exception>
public class {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}JsonConverter : JsonConverter<{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}>
{
/// <summary>
/// Returns a {{datatypeWithEnum}} from the Json object
/// </summary>
Expand All @@ -119,7 +125,7 @@

{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? result = rawValue == null
? null
: {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}Converter.FromStringOrDefault(rawValue);
: {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}ValueConverter.FromStringOrDefault(rawValue);

if (result != null)
return result.Value;
Expand All @@ -142,7 +148,7 @@
/// <summary>
/// A Json converter for type <see cref="{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}"/>
/// </summary>
public class {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}NullableConverter : JsonConverter<{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}?>
public class {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}NullableJsonConverter : JsonConverter<{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}?>
{
/// <summary>
/// Returns a {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}} from the Json object
Expand All @@ -157,7 +163,7 @@

{{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}? result = rawValue == null
? null
: {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}Converter.FromStringOrDefault(rawValue);
: {{datatypeWithEnum}}{{^datatypeWithEnum}}{{classname}}{{/datatypeWithEnum}}ValueConverter.FromStringOrDefault(rawValue);

if (result != null)
return result.Value;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ public static string SanitizeFilename(string filename)
if (obj is EnumArrays.JustSymbolEnum enumArraysJustSymbolEnum)
return EnumArrays.JustSymbolEnumToJsonValue(enumArraysJustSymbolEnum);
if (obj is EnumClass enumClass)
return EnumClassConverter.ToJsonValue(enumClass);
return EnumClassValueConverter.ToJsonValue(enumClass);
if (obj is EnumTest.EnumIntegerEnum enumTestEnumIntegerEnum)
return EnumTest.EnumIntegerEnumToJsonValue(enumTestEnumIntegerEnum).ToString();
if (obj is EnumTest.EnumIntegerOnlyEnum enumTestEnumIntegerOnlyEnum)
Expand All @@ -156,24 +156,24 @@ public static string SanitizeFilename(string filename)
if (obj is Order.StatusEnum orderStatusEnum)
return Order.StatusEnumToJsonValue(orderStatusEnum);
if (obj is OuterEnum outerEnum)
return OuterEnumConverter.ToJsonValue(outerEnum);
return OuterEnumValueConverter.ToJsonValue(outerEnum);
if (obj is OuterEnumDefaultValue outerEnumDefaultValue)
return OuterEnumDefaultValueConverter.ToJsonValue(outerEnumDefaultValue);
return OuterEnumDefaultValueValueConverter.ToJsonValue(outerEnumDefaultValue);
if (obj is OuterEnumInteger outerEnumInteger)
return OuterEnumIntegerConverter.ToJsonValue(outerEnumInteger).ToString();
return OuterEnumIntegerValueConverter.ToJsonValue(outerEnumInteger).ToString();
if (obj is OuterEnumIntegerDefaultValue outerEnumIntegerDefaultValue)
return OuterEnumIntegerDefaultValueConverter.ToJsonValue(outerEnumIntegerDefaultValue).ToString();
return OuterEnumIntegerDefaultValueValueConverter.ToJsonValue(outerEnumIntegerDefaultValue).ToString();
if (obj is Pet.StatusEnum petStatusEnum)
return Pet.StatusEnumToJsonValue(petStatusEnum);
if (obj is Zebra.TypeEnum zebraTypeEnum)
return Zebra.TypeEnumToJsonValue(zebraTypeEnum);
if (obj is ZeroBasedEnum zeroBasedEnum)
return ZeroBasedEnumConverter.ToJsonValue(zeroBasedEnum);
return ZeroBasedEnumValueConverter.ToJsonValue(zeroBasedEnum);
if (obj is ZeroBasedEnumClass.ZeroBasedEnumEnum zeroBasedEnumClassZeroBasedEnumEnum)
return ZeroBasedEnumClass.ZeroBasedEnumEnumToJsonValue(zeroBasedEnumClassZeroBasedEnumEnum);
if (obj is ICollection collection)
{
List<string?> entries = new List<string?>();
List<string?> entries = new();
foreach (var entry in collection)
entries.Add(ParameterToString(entry));
return string.Join(",", entries);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ public HostConfiguration(IServiceCollection services)
_jsonOptions.Converters.Add(new DogJsonConverter());
_jsonOptions.Converters.Add(new DrawingJsonConverter());
_jsonOptions.Converters.Add(new EnumArraysJsonConverter());
_jsonOptions.Converters.Add(new EnumClassConverter());
_jsonOptions.Converters.Add(new EnumClassNullableConverter());
_jsonOptions.Converters.Add(new EnumClassJsonConverter());
_jsonOptions.Converters.Add(new EnumClassNullableJsonConverter());
_jsonOptions.Converters.Add(new EnumTestJsonConverter());
_jsonOptions.Converters.Add(new EquilateralTriangleJsonConverter());
_jsonOptions.Converters.Add(new FileJsonConverter());
Expand Down Expand Up @@ -99,14 +99,14 @@ public HostConfiguration(IServiceCollection services)
_jsonOptions.Converters.Add(new OneOfStringJsonConverter());
_jsonOptions.Converters.Add(new OrderJsonConverter());
_jsonOptions.Converters.Add(new OuterCompositeJsonConverter());
_jsonOptions.Converters.Add(new OuterEnumConverter());
_jsonOptions.Converters.Add(new OuterEnumNullableConverter());
_jsonOptions.Converters.Add(new OuterEnumDefaultValueConverter());
_jsonOptions.Converters.Add(new OuterEnumDefaultValueNullableConverter());
_jsonOptions.Converters.Add(new OuterEnumIntegerConverter());
_jsonOptions.Converters.Add(new OuterEnumIntegerNullableConverter());
_jsonOptions.Converters.Add(new OuterEnumIntegerDefaultValueConverter());
_jsonOptions.Converters.Add(new OuterEnumIntegerDefaultValueNullableConverter());
_jsonOptions.Converters.Add(new OuterEnumJsonConverter());
_jsonOptions.Converters.Add(new OuterEnumNullableJsonConverter());
_jsonOptions.Converters.Add(new OuterEnumDefaultValueJsonConverter());
_jsonOptions.Converters.Add(new OuterEnumDefaultValueNullableJsonConverter());
_jsonOptions.Converters.Add(new OuterEnumIntegerJsonConverter());
_jsonOptions.Converters.Add(new OuterEnumIntegerNullableJsonConverter());
_jsonOptions.Converters.Add(new OuterEnumIntegerDefaultValueJsonConverter());
_jsonOptions.Converters.Add(new OuterEnumIntegerDefaultValueNullableJsonConverter());
_jsonOptions.Converters.Add(new ParentPetJsonConverter());
_jsonOptions.Converters.Add(new PetJsonConverter());
_jsonOptions.Converters.Add(new PigJsonConverter());
Expand All @@ -129,8 +129,8 @@ public HostConfiguration(IServiceCollection services)
_jsonOptions.Converters.Add(new UserJsonConverter());
_jsonOptions.Converters.Add(new WhaleJsonConverter());
_jsonOptions.Converters.Add(new ZebraJsonConverter());
_jsonOptions.Converters.Add(new ZeroBasedEnumConverter());
_jsonOptions.Converters.Add(new ZeroBasedEnumNullableConverter());
_jsonOptions.Converters.Add(new ZeroBasedEnumJsonConverter());
_jsonOptions.Converters.Add(new ZeroBasedEnumNullableJsonConverter());
_jsonOptions.Converters.Add(new ZeroBasedEnumClassJsonConverter());
_services.AddSingleton(new JsonSerializerOptionsProvider(_jsonOptions));
_services.AddSingleton<IApiFactory, ApiFactory>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,9 @@ public enum EnumClass
}

/// <summary>
/// A Json converter for type <see cref="EnumClass"/>
/// Converts <see cref="EnumClass"/> to and from the JSON value
/// </summary>
/// <exception cref="NotImplementedException"></exception>
public class EnumClassConverter : JsonConverter<EnumClass>
public static class EnumClassValueConverter
{
/// <summary>
/// Parses a given value to <see cref="EnumClass"/>
Expand Down Expand Up @@ -109,7 +108,14 @@ public static string ToJsonValue(EnumClass value)

throw new NotImplementedException($"Value could not be handled: '{value}'");
}
}

/// <summary>
/// A Json converter for type <see cref="EnumClass"/>
/// </summary>
/// <exception cref="NotImplementedException"></exception>
public class EnumClassJsonConverter : JsonConverter<EnumClass>
{
/// <summary>
/// Returns a from the Json object
/// </summary>
Expand All @@ -123,7 +129,7 @@ public override EnumClass Read(ref Utf8JsonReader reader, Type typeToConvert, Js

EnumClass? result = rawValue == null
? null
: EnumClassConverter.FromStringOrDefault(rawValue);
: EnumClassValueConverter.FromStringOrDefault(rawValue);

if (result != null)
return result.Value;
Expand All @@ -146,7 +152,7 @@ public override void Write(Utf8JsonWriter writer, EnumClass enumClass, JsonSeria
/// <summary>
/// A Json converter for type <see cref="EnumClass"/>
/// </summary>
public class EnumClassNullableConverter : JsonConverter<EnumClass?>
public class EnumClassNullableJsonConverter : JsonConverter<EnumClass?>
{
/// <summary>
/// Returns a EnumClass from the Json object
Expand All @@ -161,7 +167,7 @@ public class EnumClassNullableConverter : JsonConverter<EnumClass?>

EnumClass? result = rawValue == null
? null
: EnumClassConverter.FromStringOrDefault(rawValue);
: EnumClassValueConverter.FromStringOrDefault(rawValue);

if (result != null)
return result.Value;
Expand Down
Loading
Loading