diff --git a/src/Refitter.Core/CSharpClientGeneratorFactory.cs b/src/Refitter.Core/CSharpClientGeneratorFactory.cs index 2a819b5ff..ed259c4a7 100644 --- a/src/Refitter.Core/CSharpClientGeneratorFactory.cs +++ b/src/Refitter.Core/CSharpClientGeneratorFactory.cs @@ -29,6 +29,7 @@ public CustomCSharpClientGenerator Create() { Namespace = settings.ContractsNamespace ?? settings.Namespace, JsonLibrary = CSharpJsonLibrary.SystemTextJson, + JsonPolymorphicSerializationStyle = settings.UsePolymorphicSerialization ? CSharpJsonPolymorphicSerializationStyle.SystemTextJson : CSharpJsonPolymorphicSerializationStyle.NJsonSchema, TypeAccessModifier = settings.TypeAccessibility.ToString().ToLowerInvariant(), ClassStyle = settings.ImmutableRecords || @@ -46,18 +47,11 @@ public CustomCSharpClientGenerator Create() csharpClientGeneratorSettings.ParameterNameGenerator = settings.ParameterNameGenerator; } - csharpClientGeneratorSettings.CSharpGeneratorSettings.TemplateFactory = new CustomTemplateFactory( - csharpClientGeneratorSettings.CSharpGeneratorSettings, - [ - typeof(CSharpGenerator).Assembly, - typeof(CSharpGeneratorBaseSettings).Assembly, - typeof(CustomTemplateFactory).Assembly, - ]); + csharpClientGeneratorSettings.CSharpGeneratorSettings.TemplateFactory = new CustomTemplateFactory(csharpClientGeneratorSettings.CSharpGeneratorSettings); var generator = new CustomCSharpClientGenerator( document, - csharpClientGeneratorSettings, - settings.UsePolymorphicSerialization); + csharpClientGeneratorSettings); MapCSharpGeneratorSettings( settings.CodeGeneratorSettings, @@ -102,39 +96,30 @@ private static void MapCSharpGeneratorSettings( /// /// custom template factory - /// solely for the purpose of supporting UsePolymorphicSerialization - /// This class and its templates should be removed when NSwag supports this feature. + /// solely for the purpose of tweaking the JsonPolymorphic attribute with UnknownDerivedTypeHandling = FallBackToBaseType and IgnoreUnrecognizedTypeDiscriminators = true + /// This class should be removed if NSwag eventually supports setting UnknownDerivedTypeHandling and IgnoreUnrecognizedTypeDiscriminators. /// private class CustomTemplateFactory : NSwag.CodeGeneration.DefaultTemplateFactory { - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// The settings. - /// The assemblies. - public CustomTemplateFactory(CodeGeneratorSettingsBase settings, Assembly[] assemblies) - : base(settings, assemblies) + public CustomTemplateFactory(CodeGeneratorSettingsBase settings) + : base(settings, [typeof(CSharpGenerator).Assembly, typeof(CSharpGeneratorBaseSettings).Assembly]) { } - /// Tries to load an embedded Liquid template. - /// The language. - /// The template name. - /// The template. + /// protected override string GetEmbeddedLiquidTemplate(string language, string template) { - template = template.TrimEnd('!'); - var assembly = Assembly.GetExecutingAssembly(); // this code is running in Refitter.Core and Refitter.SourceGenerator - var resourceName = $"{assembly.GetName().Name}.Templates.{template}.liquid"; - - var resource = assembly.GetManifestResourceStream(resourceName); - if (resource != null) + var templateText = base.GetEmbeddedLiquidTemplate(language, template); + return template switch { - using (var reader = new StreamReader(resource)) - { - return reader.ReadToEnd(); - } - } - - return base.GetEmbeddedLiquidTemplate(language, template); + "Class" => templateText + .Replace( + "[System.Text.Json.Serialization.JsonPolymorphic(TypeDiscriminatorPropertyName = \"{{ Discriminator }}\")]", + "[System.Text.Json.Serialization.JsonPolymorphic(TypeDiscriminatorPropertyName = \"{{ Discriminator }}\", UnknownDerivedTypeHandling = System.Text.Json.Serialization.JsonUnknownDerivedTypeHandling.FallBackToBaseType, IgnoreUnrecognizedTypeDiscriminators = true)]"), + _ => templateText, + }; } } } diff --git a/src/Refitter.Core/CustomCSharpClientGenerator.cs b/src/Refitter.Core/CustomCSharpClientGenerator.cs index 94a3f20a0..622e8f9d9 100644 --- a/src/Refitter.Core/CustomCSharpClientGenerator.cs +++ b/src/Refitter.Core/CustomCSharpClientGenerator.cs @@ -1,139 +1,12 @@ -using NJsonSchema; -using NJsonSchema.CodeGeneration; -using NJsonSchema.CodeGeneration.CSharp; -using NJsonSchema.CodeGeneration.CSharp.Models; using NSwag; using NSwag.CodeGeneration.CSharp; using NSwag.CodeGeneration.CSharp.Models; namespace Refitter.Core; -internal class CustomCSharpClientGenerator(OpenApiDocument document, CSharpClientGeneratorSettings settings, bool usePolymorphicSerialization) -#pragma warning disable CS9107 // Parameter is captured into the state of the enclosing type and its value is also passed to the base constructor. The value might be captured by the base class as well. +internal class CustomCSharpClientGenerator(OpenApiDocument document, CSharpClientGeneratorSettings settings) : CSharpClientGenerator(document, settings) -#pragma warning restore CS9107 // Parameter is captured into the state of the enclosing type and its value is also passed to the base constructor. The value might be captured by the base class as well. { internal CSharpOperationModel CreateOperationModel(OpenApiOperation operation) => - CreateOperationModel(operation, Settings); - - /// - /// override to generate DTO types with our custom CSharpGenerator - /// This code should be removed when NSwag supports STJ polymorphic serialization - /// - protected override IEnumerable GenerateDtoTypes() - { - var generator = new CCustomSharpGenerator(document, Settings.CSharpGeneratorSettings, (CSharpTypeResolver)Resolver, usePolymorphicSerialization); - return generator.GenerateTypes(); - } - - private class CCustomSharpGenerator(OpenApiDocument document, CSharpGeneratorSettings settings, CSharpTypeResolver resolver, bool usePolymorphicSerialization) -#pragma warning disable CS9107 // Parameter is captured into the state of the enclosing type and its value is also passed to the base constructor. The value might be captured by the base class as well. - : CSharpGenerator(document, settings, resolver) -#pragma warning restore CS9107 // Parameter is captured into the state of the enclosing type and its value is also passed to the base constructor. The value might be captured by the base class as well. - { - /// - /// override to generate Class with our custom ClassTemplateModel - /// code is taken from NJsonSchema.CodeGeneration.CSharp.CSharpGenerator.GenerateType - /// - protected override CodeArtifact GenerateType(JsonSchema schema, string typeNameHint) - { - var typeName = resolver.GetOrGenerateTypeName(schema, typeNameHint); - - if (schema.IsEnumeration) - { - return base.GenerateType(schema, typeName); - } - else - { - return GenerateClass(schema, typeName); - } - } - - /// - /// override to generate JsonInheritanceAttribute, JsonInheritanceConverter with our custom template models - /// code is taken from NJsonSchema.CodeGeneration.CSharp.CSharpGenerator.GenerateTypes - /// - public override IEnumerable GenerateTypes() - { - var baseArtifacts = base.GenerateTypes(); - var artifacts = new List(); - - if (baseArtifacts.Any(r => r.Code.Contains("JsonInheritanceConverter"))) - { - if (Settings.ExcludedTypeNames?.Contains("JsonInheritanceAttribute") != true) - { - var template = Settings.TemplateFactory.CreateTemplate("CSharp", "JsonInheritanceAttribute", new CustomJsonInheritanceConverterTemplateModel(Settings, usePolymorphicSerialization)); - artifacts.Add(new CodeArtifact("JsonInheritanceAttribute", CodeArtifactType.Class, CodeArtifactLanguage.CSharp, CodeArtifactCategory.Utility, template)); - } - - if (Settings.ExcludedTypeNames?.Contains("JsonInheritanceConverter") != true) - { - var template = Settings.TemplateFactory.CreateTemplate("CSharp", "JsonInheritanceConverter", new CustomJsonInheritanceConverterTemplateModel(Settings, usePolymorphicSerialization)); - artifacts.Add(new CodeArtifact("JsonInheritanceConverter", CodeArtifactType.Class, CodeArtifactLanguage.CSharp, CodeArtifactCategory.Utility, template)); - } - } - - return baseArtifacts.Concat(artifacts); - } - - /// - /// Code is taken from NJsonSchema.CodeGeneration.CSharp.CSharpGenerator.GenerateClass - /// to instantiate our custom ClassTemplateModel - /// - private CodeArtifact GenerateClass(JsonSchema schema, string typeName) - { - var model = new CustomClassTemplateModel(typeName, Settings, resolver, schema, RootObject, usePolymorphicSerialization); - - RenamePropertyWithSameNameAsClass(typeName, model.Properties); - - var template = Settings.TemplateFactory.CreateTemplate("CSharp", "Class", model); - return new CodeArtifact(typeName, model.BaseClassName, CodeArtifactType.Class, CodeArtifactLanguage.CSharp, CodeArtifactCategory.Contract, template); - } - - /// - /// Code is taken from NJsonSchema.CodeGeneration.CSharp.CSharpGenerator.RenamePropertyWithSameNameAsClass - /// - private static void RenamePropertyWithSameNameAsClass(string typeName, IEnumerable properties) - { - var propertyModels = properties as PropertyModel[] ?? properties.ToArray(); - PropertyModel? propertyWithSameNameAsClass = null; - foreach (var p in propertyModels) - { - if (p.PropertyName == typeName) - { - propertyWithSameNameAsClass = p; - break; - } - } - - if (propertyWithSameNameAsClass != null) - { - var number = 1; - var candidate = typeName + number; - while (propertyModels.Any(p => p.PropertyName == candidate)) - { - number++; - } - - propertyWithSameNameAsClass.PropertyName = propertyWithSameNameAsClass.PropertyName + number; - } - } - - /// - /// finally, our custom ClassTemplateModel and CustomJsonInheritanceConverterTemplateModel - /// to have access to UsePolymorphicSerialization - /// This code should be removed when NSwag supports STJ polymorphic serialization - /// - private class CustomClassTemplateModel(string typeName, CSharpGeneratorSettings settings, CSharpTypeResolver resolver, JsonSchema schema, object rootObject, bool usePolymorphicSerialization) - : ClassTemplateModel(typeName, settings, resolver, schema, rootObject) - { - public bool UsePolymorphicSerialization => usePolymorphicSerialization; - } - - private class CustomJsonInheritanceConverterTemplateModel(CSharpGeneratorSettings settings, bool usePolymorphicSerialization) - : JsonInheritanceConverterTemplateModel(settings) - { - public bool UsePolymorphicSerialization => usePolymorphicSerialization; - } - } + base.CreateOperationModel(operation, Settings); } diff --git a/src/Refitter.Core/Refitter.Core.csproj b/src/Refitter.Core/Refitter.Core.csproj index 3ddc02caa..30cde72bd 100644 --- a/src/Refitter.Core/Refitter.Core.csproj +++ b/src/Refitter.Core/Refitter.Core.csproj @@ -12,8 +12,8 @@ - - + + @@ -23,8 +23,4 @@ - - - - diff --git a/src/Refitter.Core/Templates/Class.liquid b/src/Refitter.Core/Templates/Class.liquid deleted file mode 100644 index 7d6dacb9e..000000000 --- a/src/Refitter.Core/Templates/Class.liquid +++ /dev/null @@ -1,154 +0,0 @@ -{%- if HasDescription -%} -/// -/// {{ Description | csharpdocs }} -/// -{%- endif -%} -{%- if HasDiscriminator -%} -{%- if UseSystemTextJson -%} -{%- if UsePolymorphicSerialization -%} -[System.Text.Json.Serialization.JsonPolymorphic(TypeDiscriminatorPropertyName = "{{ Discriminator }}", UnknownDerivedTypeHandling = System.Text.Json.Serialization.JsonUnknownDerivedTypeHandling.FallBackToBaseType, IgnoreUnrecognizedTypeDiscriminators = true)] -{%- else -%} -[JsonInheritanceConverter(typeof({{ ClassName }}), "{{ Discriminator }}")] -{%- endif -%} -{%- else -%} -[Newtonsoft.Json.JsonConverter(typeof(JsonInheritanceConverter), "{{ Discriminator }}")] -{%- endif -%} -{%- for derivedClass in DerivedClasses -%} -{%- if derivedClass.IsAbstract != true -%} -{%- if UseSystemTextJson and UsePolymorphicSerialization -%} -[System.Text.Json.Serialization.JsonDerivedType(typeof({{ derivedClass.ClassName }}), typeDiscriminator: "{{ derivedClass.Discriminator }}")] -{%- else -%} -[JsonInheritanceAttribute("{{ derivedClass.Discriminator }}", typeof({{ derivedClass.ClassName }}))] -{%- endif -%} -{%- endif -%} -{%- endfor -%} -{%- endif -%} -[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "{{ ToolchainVersion }}")] -{%- if InheritsExceptionSchema -%} -{%- if UseSystemTextJson -%} -// TODO(system.text.json): What to do here? -{%- else -%} -[Newtonsoft.Json.JsonObjectAttribute] -{%- endif -%} -{%- endif -%} -{%- if IsDeprecated -%} -[System.Obsolete{% if HasDeprecatedMessage %}({{ DeprecatedMessage | literal }}){% endif %}] -{% endif -%} -{%- template Class.Annotations -%} -{{ TypeAccessModifier }} {% if IsAbstract %}abstract {% endif %}partial {% if GenerateNativeRecords %}record{% else %}class{% endif %} {{ClassName}} {%- template Class.Inheritance %} -{ -{%- if IsTuple -%} - public {{ ClassName }}({%- for tupleType in TupleTypes %}{{ tupleType }} item{{ forloop.index }}{%- if forloop.last == false %}, {% endif %}{% endfor %}) : base({%- for tupleType in TupleTypes %}item{{ forloop.index }}{%- if forloop.last == false %}, {% endif %}{% endfor %}) - { - } - -{%- endif -%} -{%- if RenderInpc or RenderPrism -%} -{%- for property in Properties -%} - private {{ property.Type }} {{ property.FieldName }}{%- if property.HasDefaultValue %} = {{ property.DefaultValue }}{% elsif GenerateNullableReferenceTypes %} = default!{%- endif %}; -{%- endfor -%} - -{%- endif -%} - {%- template Class.Constructor -%} -{%- if RenderRecord -%} - {% template Class.Constructor.Record -%} -{%- endif -%} -{%- for property in Properties -%} -{%- if property.HasDescription -%} - /// - /// {{ property.Description | csharpdocs }} - /// -{%- endif -%} -{%- if UseSystemTextJson %} - [System.Text.Json.Serialization.JsonPropertyName("{{ property.Name }}")] -{%- if property.IsStringEnumArray %} - // TODO(system.text.json): Add string enum item converter -{%- endif -%} -{%- else -%} - [Newtonsoft.Json.JsonProperty("{{ property.Name }}", Required = {{ property.JsonPropertyRequiredCode }}{% if property.IsStringEnumArray %}, ItemConverterType = typeof(Newtonsoft.Json.Converters.StringEnumConverter){% endif %})] -{%- endif -%} -{%- if property.RenderRequiredAttribute -%} - [System.ComponentModel.DataAnnotations.Required{% if property.AllowEmptyStrings %}(AllowEmptyStrings = true){% endif %}] -{%- endif -%} -{%- if property.RenderRangeAttribute -%} - [System.ComponentModel.DataAnnotations.Range({{ property.RangeMinimumValue }}, {{ property.RangeMaximumValue }})] -{%- endif -%} -{%- if property.RenderStringLengthAttribute -%} - [System.ComponentModel.DataAnnotations.StringLength({{ property.StringLengthMaximumValue }}{% if property.StringLengthMinimumValue > 0 %}, MinimumLength = {{ property.StringLengthMinimumValue }}{% endif %})] -{%- endif -%} -{%- if property.RenderMinLengthAttribute -%} - [System.ComponentModel.DataAnnotations.MinLength({{ property.MinLengthAttribute }})] -{%- endif -%} -{%- if property.RenderMaxLengthAttribute -%} - [System.ComponentModel.DataAnnotations.MaxLength({{ property.MaxLengthAttribute }})] -{%- endif -%} -{%- if property.RenderRegularExpressionAttribute -%} - [System.ComponentModel.DataAnnotations.RegularExpression(@"{{ property.RegularExpressionValue }}")] -{%- endif -%} -{%- if property.IsStringEnum -%} -{%- if UseSystemTextJson -%} - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] -{%- else -%} - [Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] -{%- endif -%} -{%- endif -%} -{%- if property.IsDate and UseDateFormatConverter -%} -{%- if UseSystemTextJson -%} - [System.Text.Json.Serialization.JsonConverter(typeof(DateFormatConverter))] -{%- else -%} - [Newtonsoft.Json.JsonConverter(typeof(DateFormatConverter))] -{%- endif -%} -{%- endif -%} -{%- if property.IsDeprecated -%} - [System.Obsolete{% if property.HasDeprecatedMessage %}({{ property.DeprecatedMessage | literal }}){% endif %}] -{%- endif -%} - {%- template Class.Property.Annotations -%} - public {{ property.Type }} {{ property.PropertyName }}{% if RenderInpc == false and RenderPrism == false %} { get; {% if property.HasSetter and RenderRecord == false %}set; {% elsif RenderRecord and GenerateNativeRecords %}init; {% endif %}}{% if property.HasDefaultValue and RenderRecord == false %} = {{ property.DefaultValue }};{% elsif GenerateNullableReferenceTypes and RenderRecord == false %} = default!;{% endif %} -{% else %} - { - get { return {{ property.FieldName }}; } - -{%- if property.HasSetter -%} -{%- if RenderInpc -%} - {{PropertySetterAccessModifier}}set - { - if ({{ property.FieldName }} != value) - { - {{ property.FieldName }} = value; - RaisePropertyChanged(); - } - } -{%- else -%} - {{PropertySetterAccessModifier}}set { SetProperty(ref {{ property.FieldName }}, value); } -{%- endif -%} -{%- endif -%} - } -{%- endif %} -{%- endfor -%} - -{%- if GenerateAdditionalPropertiesProperty -%} - - private System.Collections.Generic.IDictionary{% if GenerateNullableReferenceTypes %}?{% endif %} _additionalProperties; - -{%- if UseSystemTextJson -%} - [System.Text.Json.Serialization.JsonExtensionData] -{%- else -%} - [Newtonsoft.Json.JsonExtensionData] -{%- endif -%} - public System.Collections.Generic.IDictionary AdditionalProperties - { - get { return _additionalProperties ?? (_additionalProperties = new System.Collections.Generic.Dictionary()); } - {{PropertySetterAccessModifier}}set { _additionalProperties = value; } - } - -{%- endif -%} -{%- if GenerateJsonMethods -%} - {% template Class.ToJson %} - {% template Class.FromJson %} - -{%- endif -%} -{%- if RenderInpc -%} - {% template Class.Inpc %} -{%- endif -%} - {% template Class.Body %} -} diff --git a/src/Refitter.Core/Templates/JsonInheritanceAttribute.liquid b/src/Refitter.Core/Templates/JsonInheritanceAttribute.liquid deleted file mode 100644 index 1160e9210..000000000 --- a/src/Refitter.Core/Templates/JsonInheritanceAttribute.liquid +++ /dev/null @@ -1,16 +0,0 @@ -{%- if UsePolymorphicSerialization == false -%} -[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "{{ ToolchainVersion }}")] -[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface, AllowMultiple = true)] -internal class JsonInheritanceAttribute : System.Attribute -{ - public JsonInheritanceAttribute(string key, System.Type type) - { - Key = key; - Type = type; - } - - public string Key { get; } - - public System.Type Type { get; } -} -{%- endif -%} diff --git a/src/Refitter.Core/Templates/JsonInheritanceConverter.liquid b/src/Refitter.Core/Templates/JsonInheritanceConverter.liquid deleted file mode 100644 index 798ff71e7..000000000 --- a/src/Refitter.Core/Templates/JsonInheritanceConverter.liquid +++ /dev/null @@ -1,240 +0,0 @@ -{%- if UsePolymorphicSerialization == false -%} -[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "{{ ToolchainVersion }}")] -{%- if UseSystemTextJson -%} -internal class JsonInheritanceConverterAttribute : System.Text.Json.Serialization.JsonConverterAttribute -{ - public string DiscriminatorName { get; } - - public JsonInheritanceConverterAttribute(System.Type baseType, string discriminatorName = "discriminator") - : base(typeof(JsonInheritanceConverter<>).MakeGenericType(baseType)) - { - DiscriminatorName = discriminatorName; - } -} - -public class JsonInheritanceConverter : System.Text.Json.Serialization.JsonConverter -{ - private readonly string _discriminatorName; - - public JsonInheritanceConverter() - { - var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(typeof(TBase)); - _discriminatorName = attribute?.DiscriminatorName ?? "discriminator"; - } - - public JsonInheritanceConverter(string discriminatorName) - { - _discriminatorName = discriminatorName; - } - - public string DiscriminatorName { get { return _discriminatorName; } } - - public override TBase Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) - { - var document = System.Text.Json.JsonDocument.ParseValue(ref reader); - var hasDiscriminator = document.RootElement.TryGetProperty(_discriminatorName, out var discriminator); - var subtype = GetDiscriminatorType(document.RootElement, typeToConvert, hasDiscriminator ? discriminator.GetString() : null); - - var bufferWriter = new System.IO.MemoryStream(); - using (var writer = new System.Text.Json.Utf8JsonWriter(bufferWriter)) - { - document.RootElement.WriteTo(writer); - } - - return (TBase)System.Text.Json.JsonSerializer.Deserialize(bufferWriter.ToArray(), subtype, options); - } - - public override void Write(System.Text.Json.Utf8JsonWriter writer, TBase value, System.Text.Json.JsonSerializerOptions options) - { - writer.WriteStartObject(); - writer.WriteString(_discriminatorName, GetDiscriminatorValue(value.GetType())); - - var bytes = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes((object)value, options); - var document = System.Text.Json.JsonDocument.Parse(bytes); - foreach (var property in document.RootElement.EnumerateObject()) - { - property.WriteTo(writer); - } - - writer.WriteEndObject(); - } - - public string GetDiscriminatorValue(System.Type type) - { - var jsonInheritanceAttributeDiscriminator = GetSubtypeDiscriminator(type); - if (jsonInheritanceAttributeDiscriminator != null) - { - return jsonInheritanceAttributeDiscriminator; - } - - return type.Name; - } - - protected System.Type GetDiscriminatorType(System.Text.Json.JsonElement jObject, System.Type objectType, string discriminatorValue) - { - var jsonInheritanceAttributeSubtype = GetObjectSubtype(objectType, discriminatorValue); - if (jsonInheritanceAttributeSubtype != null) - { - return jsonInheritanceAttributeSubtype; - } - - if (objectType.Name == discriminatorValue) - { - return objectType; - } - - var typeName = objectType.Namespace + "." + discriminatorValue; - var subtype = System.Reflection.IntrospectionExtensions.GetTypeInfo(objectType).Assembly.GetType(typeName); - if (subtype != null) - { - return subtype; - } - - throw new System.InvalidOperationException("Could not find subtype of '" + objectType.Name + "' with discriminator '" + discriminatorValue + "'."); - } - - private System.Type GetObjectSubtype(System.Type objectType, string discriminator) - { - foreach (var attribute in System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.IntrospectionExtensions.GetTypeInfo(objectType), true)) - { - if (attribute.Key == discriminator) - return attribute.Type; - } - - return objectType; - } - - private string GetSubtypeDiscriminator(System.Type objectType) - { - foreach (var attribute in System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.IntrospectionExtensions.GetTypeInfo(objectType), true)) - { - if (attribute.Type == objectType) - return attribute.Key; - } - - return objectType.Name; - } -} -{%- else -%} -public class JsonInheritanceConverter : Newtonsoft.Json.JsonConverter -{ - internal static readonly string DefaultDiscriminatorName = "discriminator"; - - private readonly string _discriminatorName; - - [System.ThreadStatic] - private static bool _isReading; - - [System.ThreadStatic] - private static bool _isWriting; - - public JsonInheritanceConverter() - { - _discriminatorName = DefaultDiscriminatorName; - } - - public JsonInheritanceConverter(string discriminatorName) - { - _discriminatorName = discriminatorName; - } - - public string DiscriminatorName { get { return _discriminatorName; } } - - public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) - { - try - { - _isWriting = true; - - var jObject = Newtonsoft.Json.Linq.JObject.FromObject(value, serializer); - jObject.AddFirst(new Newtonsoft.Json.Linq.JProperty(_discriminatorName, GetSubtypeDiscriminator(value.GetType()))); - writer.WriteToken(jObject.CreateReader()); - } - finally - { - _isWriting = false; - } - } - - public override bool CanWrite - { - get - { - if (_isWriting) - { - _isWriting = false; - return false; - } - return true; - } - } - - public override bool CanRead - { - get - { - if (_isReading) - { - _isReading = false; - return false; - } - return true; - } - } - - public override bool CanConvert(System.Type objectType) - { - return true; - } - - public override object ReadJson(Newtonsoft.Json.JsonReader reader, System.Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer) - { - var jObject = serializer.Deserialize(reader); - if (jObject == null) - return null; - - var discriminatorValue = jObject.GetValue(_discriminatorName); - var discriminator = discriminatorValue != null ? Newtonsoft.Json.Linq.Extensions.Value(discriminatorValue) : null; - var subtype = GetObjectSubtype(objectType, discriminator); - - var objectContract = serializer.ContractResolver.ResolveContract(subtype) as Newtonsoft.Json.Serialization.JsonObjectContract; - if (objectContract == null || System.Linq.Enumerable.All(objectContract.Properties, p => p.PropertyName != _discriminatorName)) - { - jObject.Remove(_discriminatorName); - } - - try - { - _isReading = true; - return serializer.Deserialize(jObject.CreateReader(), subtype); - } - finally - { - _isReading = false; - } - } - - private System.Type GetObjectSubtype(System.Type objectType, string discriminator) - { - foreach (var attribute in System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.IntrospectionExtensions.GetTypeInfo(objectType), true)) - { - if (attribute.Key == discriminator) - return attribute.Type; - } - - return null; - } - - private string GetSubtypeDiscriminator(System.Type objectType) - { - foreach (var attribute in System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.IntrospectionExtensions.GetTypeInfo(objectType), true)) - { - if (attribute.Type == objectType) - return attribute.Key; - } - - return objectType.Name; - } -} -{%- endif -%} -{%- endif -%} diff --git a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/Refitter.g.cs b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/Refitter.g.cs index d6620f7c9..c86a1ec5a 100644 --- a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/Refitter.g.cs +++ b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/Refitter.g.cs @@ -379,7 +379,7 @@ public partial interface ISwaggerPetstore //---------------------- // -// Generated using the NSwag toolchain v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// Generated using the NSwag toolchain v14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) // //---------------------- @@ -405,7 +405,7 @@ namespace Refitter.Tests.AdditionalFiles.NoFilename - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Order { @@ -424,7 +424,6 @@ public partial class Order /// /// Order Status /// - [JsonPropertyName("status")] [JsonConverter(typeof(JsonStringEnumConverter))] public OrderStatus Status { get; set; } @@ -443,7 +442,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Customer { @@ -467,7 +466,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Address { @@ -494,7 +493,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Category { @@ -515,7 +514,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class User { @@ -543,7 +542,6 @@ public partial class User /// /// User Status /// - [JsonPropertyName("userStatus")] public int UserStatus { get; set; } @@ -558,7 +556,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Tag { @@ -579,7 +577,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Pet { @@ -603,7 +601,6 @@ public partial class Pet /// /// pet status in the store /// - [JsonPropertyName("status")] [JsonConverter(typeof(JsonStringEnumConverter))] public PetStatus Status { get; set; } @@ -619,7 +616,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class ApiResponse { @@ -643,7 +640,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum Status { @@ -658,7 +655,7 @@ public enum Status } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum OrderStatus { @@ -673,7 +670,7 @@ public enum OrderStatus } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum PetStatus { @@ -688,7 +685,7 @@ public enum PetStatus } - [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class FileParameter { public FileParameter(System.IO.Stream data) @@ -722,6 +719,7 @@ public FileParameter(System.IO.Stream data, string fileName, string contentType) #pragma warning restore 114 #pragma warning restore 472 #pragma warning restore 612 +#pragma warning restore 649 #pragma warning restore 1573 #pragma warning restore 1591 #pragma warning restore 8073 @@ -730,4 +728,5 @@ public FileParameter(System.IO.Stream data, string fileName, string contentType) #pragma warning restore 8602 #pragma warning restore 8603 #pragma warning restore 8604 -#pragma warning restore 8625 \ No newline at end of file +#pragma warning restore 8625 +#pragma warning restore 8765 \ No newline at end of file diff --git a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreOptionalParameters.g.cs b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreOptionalParameters.g.cs index 7583053fc..95912af8b 100644 --- a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreOptionalParameters.g.cs +++ b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreOptionalParameters.g.cs @@ -379,7 +379,7 @@ public partial interface ISwaggerPetstoreWithOptionalParameters //---------------------- // -// Generated using the NSwag toolchain v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// Generated using the NSwag toolchain v14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) // //---------------------- @@ -405,7 +405,7 @@ namespace Refitter.Tests.AdditionalFiles.OptionalParameters - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Order { @@ -424,7 +424,6 @@ public partial class Order /// /// Order Status /// - [JsonPropertyName("status")] [JsonConverter(typeof(JsonStringEnumConverter))] public OrderStatus Status { get; set; } @@ -443,7 +442,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Customer { @@ -467,7 +466,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Address { @@ -494,7 +493,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Category { @@ -515,7 +514,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class User { @@ -543,7 +542,6 @@ public partial class User /// /// User Status /// - [JsonPropertyName("userStatus")] public int UserStatus { get; set; } @@ -558,7 +556,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Tag { @@ -579,7 +577,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Pet { @@ -603,7 +601,6 @@ public partial class Pet /// /// pet status in the store /// - [JsonPropertyName("status")] [JsonConverter(typeof(JsonStringEnumConverter))] public PetStatus Status { get; set; } @@ -619,7 +616,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class ApiResponse { @@ -643,7 +640,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum Status { @@ -658,7 +655,7 @@ public enum Status } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum OrderStatus { @@ -673,7 +670,7 @@ public enum OrderStatus } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum PetStatus { @@ -688,7 +685,7 @@ public enum PetStatus } - [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class FileParameter { public FileParameter(System.IO.Stream data) @@ -722,6 +719,7 @@ public FileParameter(System.IO.Stream data, string fileName, string contentType) #pragma warning restore 114 #pragma warning restore 472 #pragma warning restore 612 +#pragma warning restore 649 #pragma warning restore 1573 #pragma warning restore 1591 #pragma warning restore 8073 @@ -730,4 +728,5 @@ public FileParameter(System.IO.Stream data, string fileName, string contentType) #pragma warning restore 8602 #pragma warning restore 8603 #pragma warning restore 8604 -#pragma warning restore 8625 \ No newline at end of file +#pragma warning restore 8625 +#pragma warning restore 8765 \ No newline at end of file diff --git a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreSingleInterfaceWithHttpResilience.g.cs b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreSingleInterfaceWithHttpResilience.g.cs index c63092e37..4a68efea2 100644 --- a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreSingleInterfaceWithHttpResilience.g.cs +++ b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreSingleInterfaceWithHttpResilience.g.cs @@ -379,7 +379,7 @@ public partial interface ISwaggerPetstoreInterfaceWithHttpResilience //---------------------- // -// Generated using the NSwag toolchain v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// Generated using the NSwag toolchain v14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) // //---------------------- @@ -405,7 +405,7 @@ namespace Refitter.Tests.AdditionalFiles.SingeInterfaceWithHttpResilience - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Order { @@ -424,7 +424,6 @@ public partial class Order /// /// Order Status /// - [JsonPropertyName("status")] [JsonConverter(typeof(JsonStringEnumConverter))] public OrderStatus Status { get; set; } @@ -443,7 +442,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Customer { @@ -467,7 +466,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Address { @@ -494,7 +493,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Category { @@ -515,7 +514,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class User { @@ -543,7 +542,6 @@ public partial class User /// /// User Status /// - [JsonPropertyName("userStatus")] public int UserStatus { get; set; } @@ -558,7 +556,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Tag { @@ -579,7 +577,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Pet { @@ -603,7 +601,6 @@ public partial class Pet /// /// pet status in the store /// - [JsonPropertyName("status")] [JsonConverter(typeof(JsonStringEnumConverter))] public PetStatus Status { get; set; } @@ -619,7 +616,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class ApiResponse { @@ -643,7 +640,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum Status { @@ -658,7 +655,7 @@ public enum Status } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum OrderStatus { @@ -673,7 +670,7 @@ public enum OrderStatus } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum PetStatus { @@ -688,7 +685,7 @@ public enum PetStatus } - [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class FileParameter { public FileParameter(System.IO.Stream data) @@ -722,6 +719,7 @@ public FileParameter(System.IO.Stream data, string fileName, string contentType) #pragma warning restore 114 #pragma warning restore 472 #pragma warning restore 612 +#pragma warning restore 649 #pragma warning restore 1573 #pragma warning restore 1591 #pragma warning restore 8073 @@ -731,6 +729,7 @@ public FileParameter(System.IO.Stream data, string fileName, string contentType) #pragma warning restore 8603 #pragma warning restore 8604 #pragma warning restore 8625 +#pragma warning restore 8765 #nullable enable diff --git a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreSingleInterfaceWithPolly.g.cs b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreSingleInterfaceWithPolly.g.cs index de5d69469..00a8923db 100644 --- a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreSingleInterfaceWithPolly.g.cs +++ b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/SwaggerPetstoreSingleInterfaceWithPolly.g.cs @@ -379,7 +379,7 @@ public partial interface ISwaggerPetstoreInterface //---------------------- // -// Generated using the NSwag toolchain v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// Generated using the NSwag toolchain v14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) // //---------------------- @@ -405,7 +405,7 @@ namespace Refitter.Tests.AdditionalFiles.SingeInterface - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Order { @@ -424,7 +424,6 @@ public partial class Order /// /// Order Status /// - [JsonPropertyName("status")] [JsonConverter(typeof(JsonStringEnumConverter))] public OrderStatus Status { get; set; } @@ -443,7 +442,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Customer { @@ -467,7 +466,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Address { @@ -494,7 +493,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Category { @@ -515,7 +514,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class User { @@ -543,7 +542,6 @@ public partial class User /// /// User Status /// - [JsonPropertyName("userStatus")] public int UserStatus { get; set; } @@ -558,7 +556,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Tag { @@ -579,7 +577,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Pet { @@ -603,7 +601,6 @@ public partial class Pet /// /// pet status in the store /// - [JsonPropertyName("status")] [JsonConverter(typeof(JsonStringEnumConverter))] public PetStatus Status { get; set; } @@ -619,7 +616,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class ApiResponse { @@ -643,7 +640,7 @@ public IDictionary AdditionalProperties } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum Status { @@ -658,7 +655,7 @@ public enum Status } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum OrderStatus { @@ -673,7 +670,7 @@ public enum OrderStatus } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum PetStatus { @@ -688,7 +685,7 @@ public enum PetStatus } - [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class FileParameter { public FileParameter(System.IO.Stream data) @@ -722,6 +719,7 @@ public FileParameter(System.IO.Stream data, string fileName, string contentType) #pragma warning restore 114 #pragma warning restore 472 #pragma warning restore 612 +#pragma warning restore 649 #pragma warning restore 1573 #pragma warning restore 1591 #pragma warning restore 8073 @@ -731,6 +729,7 @@ public FileParameter(System.IO.Stream data, string fileName, string contentType) #pragma warning restore 8603 #pragma warning restore 8604 #pragma warning restore 8625 +#pragma warning restore 8765 #nullable enable diff --git a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/UseJsonInheritanceConverter.g.cs b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/UseJsonInheritanceConverter.g.cs index f68506fab..02c00bb5d 100644 --- a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/UseJsonInheritanceConverter.g.cs +++ b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/UseJsonInheritanceConverter.g.cs @@ -46,7 +46,7 @@ public partial interface IApiClient //---------------------- // -// Generated using the NSwag toolchain v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// Generated using the NSwag toolchain v14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) // //---------------------- @@ -72,7 +72,7 @@ namespace Refitter.Tests.UseJsonInheritanceConverter - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Metadata { @@ -96,7 +96,7 @@ public partial class Metadata [JsonInheritanceAttribute("LoadingAddress", typeof(LoadingAddress))] [JsonInheritanceAttribute("UserComponent", typeof(UserComponent))] [JsonInheritanceAttribute("UserComponent2", typeof(UserComponent2))] - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class SomeComponent : Component { @@ -105,7 +105,7 @@ public partial class SomeComponent : Component } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum SomeComponentState { @@ -123,7 +123,7 @@ public enum SomeComponentState } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class SomeComponentType : Component { @@ -142,7 +142,7 @@ public partial class SomeComponentType : Component } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Component { @@ -154,7 +154,7 @@ public partial class Component } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class LoadingAddress : SomeComponent { @@ -163,7 +163,7 @@ public partial class LoadingAddress : SomeComponent } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Warehouse : SomeComponent { @@ -172,7 +172,7 @@ public partial class Warehouse : SomeComponent } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class WarehouseResponse : SomeComponent { @@ -181,7 +181,7 @@ public partial class WarehouseResponse : SomeComponent } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class UserComponent : SomeComponent { @@ -190,7 +190,7 @@ public partial class UserComponent : SomeComponent } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class UserComponent2 : UserComponent { @@ -200,7 +200,7 @@ public partial class UserComponent2 : UserComponent } [JsonInheritanceConverter(typeof(ProblemDetails), "$type")] - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class ProblemDetails { @@ -230,8 +230,7 @@ public IDictionary AdditionalProperties } - - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] [System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Interface, AllowMultiple = true)] internal class JsonInheritanceAttribute : System.Attribute { @@ -246,7 +245,7 @@ public JsonInheritanceAttribute(string key, System.Type type) public System.Type Type { get; } } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] internal class JsonInheritanceConverterAttribute : JsonConverterAttribute { public string DiscriminatorName { get; } @@ -292,17 +291,24 @@ public override TBase Read(ref System.Text.Json.Utf8JsonReader reader, System.Ty public override void Write(System.Text.Json.Utf8JsonWriter writer, TBase value, System.Text.Json.JsonSerializerOptions options) { - writer.WriteStartObject(); - writer.WriteString(_discriminatorName, GetDiscriminatorValue(value.GetType())); + if (value != null) + { + writer.WriteStartObject(); + writer.WriteString(_discriminatorName, GetDiscriminatorValue(value.GetType())); + + var bytes = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes((object)value, options); + var document = System.Text.Json.JsonDocument.Parse(bytes); + foreach (var property in document.RootElement.EnumerateObject()) + { + property.WriteTo(writer); + } - var bytes = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes((object)value, options); - var document = System.Text.Json.JsonDocument.Parse(bytes); - foreach (var property in document.RootElement.EnumerateObject()) + writer.WriteEndObject(); + } + else { - property.WriteTo(writer); + writer.WriteNullValue(); } - - writer.WriteEndObject(); } public string GetDiscriminatorValue(System.Type type) @@ -318,36 +324,39 @@ public string GetDiscriminatorValue(System.Type type) protected System.Type GetDiscriminatorType(System.Text.Json.JsonElement jObject, System.Type objectType, string discriminatorValue) { - var jsonInheritanceAttributeSubtype = GetObjectSubtype(objectType, discriminatorValue); - if (jsonInheritanceAttributeSubtype != null) - { - return jsonInheritanceAttributeSubtype; - } - - if (objectType.Name == discriminatorValue) - { - return objectType; - } - - var typeName = objectType.Namespace + "." + discriminatorValue; - var subtype = System.Reflection.IntrospectionExtensions.GetTypeInfo(objectType).Assembly.GetType(typeName); - if (subtype != null) + if (discriminatorValue != null) { - return subtype; + var jsonInheritanceAttributeSubtype = GetObjectSubtype(objectType, discriminatorValue); + if (jsonInheritanceAttributeSubtype != null) + { + return jsonInheritanceAttributeSubtype; + } + + if (objectType.Name == discriminatorValue) + { + return objectType; + } + + var typeName = objectType.Namespace + "." + discriminatorValue; + var subtype = System.Reflection.IntrospectionExtensions.GetTypeInfo(objectType).Assembly.GetType(typeName); + if (subtype != null) + { + return subtype; + } } throw new System.InvalidOperationException("Could not find subtype of '" + objectType.Name + "' with discriminator '" + discriminatorValue + "'."); } - private System.Type GetObjectSubtype(System.Type objectType, string discriminator) + private System.Type GetObjectSubtype(System.Type baseType, string discriminatorValue) { - foreach (var attribute in System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.IntrospectionExtensions.GetTypeInfo(objectType), true)) + foreach (var attribute in System.Reflection.CustomAttributeExtensions.GetCustomAttributes(System.Reflection.IntrospectionExtensions.GetTypeInfo(baseType), true)) { - if (attribute.Key == discriminator) + if (attribute.Key == discriminatorValue) return attribute.Type; } - return objectType; + return null; } private string GetSubtypeDiscriminator(System.Type objectType) @@ -358,7 +367,7 @@ private string GetSubtypeDiscriminator(System.Type objectType) return attribute.Key; } - return objectType.Name; + return null; } } @@ -369,6 +378,7 @@ private string GetSubtypeDiscriminator(System.Type objectType) #pragma warning restore 114 #pragma warning restore 472 #pragma warning restore 612 +#pragma warning restore 649 #pragma warning restore 1573 #pragma warning restore 1591 #pragma warning restore 8073 @@ -377,4 +387,5 @@ private string GetSubtypeDiscriminator(System.Type objectType) #pragma warning restore 8602 #pragma warning restore 8603 #pragma warning restore 8604 -#pragma warning restore 8625 \ No newline at end of file +#pragma warning restore 8625 +#pragma warning restore 8765 \ No newline at end of file diff --git a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/UsePolymorphicSerialization.g.cs b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/UsePolymorphicSerialization.g.cs index 035d70b42..bac84f62d 100644 --- a/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/UsePolymorphicSerialization.g.cs +++ b/src/Refitter.SourceGenerator.Tests/AdditionalFiles/Generated/UsePolymorphicSerialization.g.cs @@ -46,7 +46,7 @@ public partial interface IApiClient //---------------------- // -// Generated using the NSwag toolchain v14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// Generated using the NSwag toolchain v14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) // //---------------------- @@ -72,7 +72,7 @@ namespace Refitter.Tests.UsePolymorphicSerialization - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Metadata { @@ -96,7 +96,7 @@ public partial class Metadata [JsonDerivedType(typeof(LoadingAddress), typeDiscriminator: "LoadingAddress")] [JsonDerivedType(typeof(UserComponent), typeDiscriminator: "UserComponent")] [JsonDerivedType(typeof(UserComponent2), typeDiscriminator: "UserComponent2")] - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class SomeComponent : Component { @@ -105,7 +105,7 @@ public partial class SomeComponent : Component } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public enum SomeComponentState { @@ -123,7 +123,7 @@ public enum SomeComponentState } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class SomeComponentType : Component { @@ -142,7 +142,7 @@ public partial class SomeComponentType : Component } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Component { @@ -154,7 +154,7 @@ public partial class Component } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class LoadingAddress : SomeComponent { @@ -163,7 +163,7 @@ public partial class LoadingAddress : SomeComponent } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class Warehouse : SomeComponent { @@ -172,7 +172,7 @@ public partial class Warehouse : SomeComponent } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class WarehouseResponse : SomeComponent { @@ -181,7 +181,7 @@ public partial class WarehouseResponse : SomeComponent } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class UserComponent : SomeComponent { @@ -190,7 +190,7 @@ public partial class UserComponent : SomeComponent } - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class UserComponent2 : UserComponent { @@ -200,7 +200,7 @@ public partial class UserComponent2 : UserComponent } [JsonPolymorphic(TypeDiscriminatorPropertyName = "$type", UnknownDerivedTypeHandling = JsonUnknownDerivedTypeHandling.FallBackToBaseType, IgnoreUnrecognizedTypeDiscriminators = true)] - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.4.0.0 (NJsonSchema v11.3.2.0 (Newtonsoft.Json v13.0.0.0))")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.6.0.0 (NJsonSchema v11.5.0.0 (Newtonsoft.Json v13.0.0.0))")] public partial class ProblemDetails { @@ -237,6 +237,7 @@ public IDictionary AdditionalProperties #pragma warning restore 114 #pragma warning restore 472 #pragma warning restore 612 +#pragma warning restore 649 #pragma warning restore 1573 #pragma warning restore 1591 #pragma warning restore 8073 @@ -245,4 +246,5 @@ public IDictionary AdditionalProperties #pragma warning restore 8602 #pragma warning restore 8603 #pragma warning restore 8604 -#pragma warning restore 8625 \ No newline at end of file +#pragma warning restore 8625 +#pragma warning restore 8765 \ No newline at end of file diff --git a/src/Refitter.SourceGenerator/Refitter.SourceGenerator.csproj b/src/Refitter.SourceGenerator/Refitter.SourceGenerator.csproj index 01664a24f..81cb10ce1 100644 --- a/src/Refitter.SourceGenerator/Refitter.SourceGenerator.csproj +++ b/src/Refitter.SourceGenerator/Refitter.SourceGenerator.csproj @@ -16,8 +16,8 @@ - - + + @@ -29,8 +29,4 @@ - - - -