From b0141b04dbb2b9e94010b8c0a8afeda468f9cf58 Mon Sep 17 00:00:00 2001 From: Fernando Gutierres Damaceno Date: Mon, 20 Jun 2022 15:29:26 -0300 Subject: [PATCH 01/22] feat: change DisplayAttribute to public --- .../Attributes/DisplayAttribute.cs | 2 +- .../Attributes/DisplayAttributeTests.cs | 28 +++++++++++++ .../PublicApi/PublicApi.approved.txt | 42 +++++++++++++++++++ 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 test/Microsoft.OpenApi.Tests/Attributes/DisplayAttributeTests.cs diff --git a/src/Microsoft.OpenApi/Attributes/DisplayAttribute.cs b/src/Microsoft.OpenApi/Attributes/DisplayAttribute.cs index 920593bbd..db60448ea 100644 --- a/src/Microsoft.OpenApi/Attributes/DisplayAttribute.cs +++ b/src/Microsoft.OpenApi/Attributes/DisplayAttribute.cs @@ -9,7 +9,7 @@ namespace Microsoft.OpenApi.Attributes /// Represents the Open Api Data type metadata attribute. /// [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] - internal class DisplayAttribute : Attribute + public class DisplayAttribute : Attribute { /// /// Initializes a new instance of the class. diff --git a/test/Microsoft.OpenApi.Tests/Attributes/DisplayAttributeTests.cs b/test/Microsoft.OpenApi.Tests/Attributes/DisplayAttributeTests.cs new file mode 100644 index 000000000..26ec04556 --- /dev/null +++ b/test/Microsoft.OpenApi.Tests/Attributes/DisplayAttributeTests.cs @@ -0,0 +1,28 @@ +using Microsoft.OpenApi.Attributes; +using Microsoft.OpenApi.Extensions; +using Xunit; + +namespace Microsoft.OpenApi.Tests.Attributes +{ + + public enum ApiLevel + { + [DisplayAttribute("private")] + Private = 1, + [DisplayAttribute("public")] + Public = 2, + [DisplayAttribute("corporate")] + Corporate = 3 + } + public class DisplayAttributeTests + { + [Theory] + [InlineData(ApiLevel.Private,"private")] + [InlineData(ApiLevel.Public, "public")] + [InlineData(ApiLevel.Corporate, "corporate")] + public void GetDisplayNameExtensionShouldUseDisplayAttribute(ApiLevel apiLevel, string expected) + { + Assert.Equal(expected, apiLevel.GetDisplayName()); + } + } +} diff --git a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt index 02400ddd7..1ff59138d 100755 --- a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt +++ b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt @@ -120,6 +120,15 @@ namespace Microsoft.OpenApi.Any Password = 10, } } +namespace Microsoft.OpenApi.Attributes +{ + [System.AttributeUsage(System.AttributeTargets.Property | System.AttributeTargets.Field)] + public class DisplayAttribute : System.Attribute + { + public DisplayAttribute(string name) { } + public string Name { get; } + } +} namespace Microsoft.OpenApi.Exceptions { public class OpenApiException : System.Exception @@ -899,43 +908,72 @@ namespace Microsoft.OpenApi.Models } public enum OperationType { + [Microsoft.OpenApi.Attributes.Display("get")] Get = 0, + [Microsoft.OpenApi.Attributes.Display("put")] Put = 1, + [Microsoft.OpenApi.Attributes.Display("post")] Post = 2, + [Microsoft.OpenApi.Attributes.Display("delete")] Delete = 3, + [Microsoft.OpenApi.Attributes.Display("options")] Options = 4, + [Microsoft.OpenApi.Attributes.Display("head")] Head = 5, + [Microsoft.OpenApi.Attributes.Display("patch")] Patch = 6, + [Microsoft.OpenApi.Attributes.Display("trace")] Trace = 7, } public enum ParameterLocation { + [Microsoft.OpenApi.Attributes.Display("query")] Query = 0, + [Microsoft.OpenApi.Attributes.Display("header")] Header = 1, + [Microsoft.OpenApi.Attributes.Display("path")] Path = 2, + [Microsoft.OpenApi.Attributes.Display("cookie")] Cookie = 3, } public enum ParameterStyle { + [Microsoft.OpenApi.Attributes.Display("matrix")] Matrix = 0, + [Microsoft.OpenApi.Attributes.Display("label")] Label = 1, + [Microsoft.OpenApi.Attributes.Display("form")] Form = 2, + [Microsoft.OpenApi.Attributes.Display("simple")] Simple = 3, + [Microsoft.OpenApi.Attributes.Display("spaceDelimited")] SpaceDelimited = 4, + [Microsoft.OpenApi.Attributes.Display("pipeDelimited")] PipeDelimited = 5, + [Microsoft.OpenApi.Attributes.Display("deepObject")] DeepObject = 6, } public enum ReferenceType { + [Microsoft.OpenApi.Attributes.Display("schemas")] Schema = 0, + [Microsoft.OpenApi.Attributes.Display("responses")] Response = 1, + [Microsoft.OpenApi.Attributes.Display("parameters")] Parameter = 2, + [Microsoft.OpenApi.Attributes.Display("examples")] Example = 3, + [Microsoft.OpenApi.Attributes.Display("requestBodies")] RequestBody = 4, + [Microsoft.OpenApi.Attributes.Display("headers")] Header = 5, + [Microsoft.OpenApi.Attributes.Display("securitySchemes")] SecurityScheme = 6, + [Microsoft.OpenApi.Attributes.Display("links")] Link = 7, + [Microsoft.OpenApi.Attributes.Display("callbacks")] Callback = 8, + [Microsoft.OpenApi.Attributes.Display("tags")] Tag = 9, } public class RuntimeExpressionAnyWrapper : Microsoft.OpenApi.Interfaces.IOpenApiElement @@ -947,9 +985,13 @@ namespace Microsoft.OpenApi.Models } public enum SecuritySchemeType { + [Microsoft.OpenApi.Attributes.Display("apiKey")] ApiKey = 0, + [Microsoft.OpenApi.Attributes.Display("http")] Http = 1, + [Microsoft.OpenApi.Attributes.Display("oauth2")] OAuth2 = 2, + [Microsoft.OpenApi.Attributes.Display("openIdConnect")] OpenIdConnect = 3, } } From 93464f44aa1caf384b8a94dcc76a600eae6b2ac3 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Mon, 1 Aug 2022 10:45:28 +0300 Subject: [PATCH 02/22] Bumps up System.Commandline API to v2.0.0-beta4.22272.1 and resolve breaking change --- .../Handlers/TransformCommandHandler.cs | 73 +++++++++++++++++++ .../Handlers/ValidateCommandHandler.cs | 49 +++++++++++++ .../Microsoft.OpenApi.Hidi.csproj | 14 ++-- src/Microsoft.OpenApi.Hidi/Program.cs | 28 +++++-- 4 files changed, 152 insertions(+), 12 deletions(-) create mode 100644 src/Microsoft.OpenApi.Hidi/Handlers/TransformCommandHandler.cs create mode 100644 src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs diff --git a/src/Microsoft.OpenApi.Hidi/Handlers/TransformCommandHandler.cs b/src/Microsoft.OpenApi.Hidi/Handlers/TransformCommandHandler.cs new file mode 100644 index 000000000..8123f4620 --- /dev/null +++ b/src/Microsoft.OpenApi.Hidi/Handlers/TransformCommandHandler.cs @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.CommandLine; +using System.CommandLine.Invocation; +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; + +namespace Microsoft.OpenApi.Hidi.Handlers +{ + internal class TransformCommandHandler : ICommandHandler + { + public Option DescriptionOption { get; set; } + public Option CsdlOption { get; set; } + public Option CsdlFilterOption { get; set; } + public Option OutputOption { get; set; } + public Option CleanOutputOption { get; set; } + public Option VersionOption { get; set; } + public Option FormatOption { get; set; } + public Option TerseOutputOption { get; set; } + public Option LogLevelOption { get; set; } + public Option FilterByOperationIdsOption { get; set; } + public Option FilterByTagsOption { get; set; } + public Option FilterByCollectionOption { get; set; } + public Option InlineLocalOption { get; set; } + public Option InlineExternalOption { get; set; } + + public int Invoke(InvocationContext context) + { + return InvokeAsync(context).GetAwaiter().GetResult(); + } + public async Task InvokeAsync(InvocationContext context) + { + string openapi = context.ParseResult.GetValueForOption(DescriptionOption); + string csdlFilter = context.ParseResult.GetValueForOption(CsdlFilterOption); + string csdl = context.ParseResult.GetValueForOption(CsdlOption); + FileInfo output = context.ParseResult.GetValueForOption(OutputOption); + bool cleanOutput = context.ParseResult.GetValueForOption(CleanOutputOption); + string? version = context.ParseResult.GetValueForOption(VersionOption); + OpenApiFormat? format = context.ParseResult.GetValueForOption(FormatOption); + bool terseOutput = context.ParseResult.GetValueForOption(TerseOutputOption); + LogLevel logLevel = context.ParseResult.GetValueForOption(LogLevelOption); + bool inlineLocal = context.ParseResult.GetValueForOption(InlineLocalOption); + bool inlineExternal = context.ParseResult.GetValueForOption(InlineExternalOption); + string filterbyoperationids = context.ParseResult.GetValueForOption(FilterByOperationIdsOption); + string filterbytags = context.ParseResult.GetValueForOption(FilterByTagsOption); + string filterbycollection = context.ParseResult.GetValueForOption(FilterByCollectionOption); + CancellationToken cancellationToken = (CancellationToken)context.BindingContext.GetService(typeof(CancellationToken)); + + var logger = Logger.ConfigureLogger(logLevel); + + try + { + await OpenApiService.TransformOpenApiDocument(openapi, csdl, csdlFilter, output, cleanOutput, version, format, terseOutput, logLevel, inlineLocal, inlineExternal, filterbyoperationids, filterbytags, filterbycollection, cancellationToken); + + return 0; + } + catch (Exception ex) + { +#if DEBUG + logger.LogCritical(ex, ex.Message); + throw; // so debug tools go straight to the source of the exception when attached +#else + logger.LogCritical( ex.Message); + return 1; +#endif + } + } + } +} diff --git a/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs b/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs new file mode 100644 index 000000000..84ffcc122 --- /dev/null +++ b/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System; +using System.CommandLine; +using System.CommandLine.Invocation; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; + +namespace Microsoft.OpenApi.Hidi.Handlers +{ + internal class ValidateCommandHandler : ICommandHandler + { + public Option DescriptionOption { get; set; } + public Option LogLevelOption { get; set; } + + public int Invoke(InvocationContext context) + { + return InvokeAsync(context).GetAwaiter().GetResult(); + } + public async Task InvokeAsync(InvocationContext context) + { + string openapi = context.ParseResult.GetValueForOption(DescriptionOption); + LogLevel logLevel = context.ParseResult.GetValueForOption(LogLevelOption); + CancellationToken cancellationToken = (CancellationToken)context.BindingContext.GetService(typeof(CancellationToken)); + + + var logger = Logger.ConfigureLogger(logLevel); + + try + { + await OpenApiService.ValidateOpenApiDocument(openapi, logLevel, cancellationToken); + return 0; + } + catch (Exception ex) + { +#if DEBUG + logger.LogCritical(ex, ex.Message); + throw; // so debug tools go straight to the source of the exception when attached +#else + logger.LogCritical( ex.Message); + Environment.Exit(1); + return 1; +#endif + } + } + } +} diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index cee484046..e48cecc8b 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -37,13 +37,13 @@ - - - - - - - + + + + + + + diff --git a/src/Microsoft.OpenApi.Hidi/Program.cs b/src/Microsoft.OpenApi.Hidi/Program.cs index c8ba8fdcd..88c72fa8b 100644 --- a/src/Microsoft.OpenApi.Hidi/Program.cs +++ b/src/Microsoft.OpenApi.Hidi/Program.cs @@ -1,12 +1,11 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -using System; using System.CommandLine; using System.IO; -using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Logging; +using Microsoft.OpenApi.Hidi.Handlers; namespace Microsoft.OpenApi.Hidi { @@ -66,7 +65,11 @@ static async Task Main(string[] args) logLevelOption }; - validateCommand.SetHandler(OpenApiService.ValidateOpenApiDocument, descriptionOption, logLevelOption); + validateCommand.Handler = new ValidateCommandHandler + { + DescriptionOption = descriptionOption, + LogLevelOption = logLevelOption + }; var transformCommand = new Command("transform") { @@ -86,8 +89,23 @@ static async Task Main(string[] args) inlineExternalOption }; - transformCommand.SetHandler ( - OpenApiService.TransformOpenApiDocument, descriptionOption, csdlOption, csdlFilterOption, outputOption, cleanOutputOption, versionOption, formatOption, terseOutputOption, logLevelOption, inlineLocalOption, inlineExternalOption, filterByOperationIdsOption, filterByTagsOption, filterByCollectionOption); + transformCommand.Handler = new TransformCommandHandler + { + DescriptionOption = descriptionOption, + CsdlOption = csdlOption, + CsdlFilterOption = csdlFilterOption, + OutputOption = outputOption, + CleanOutputOption = cleanOutputOption, + VersionOption = versionOption, + FormatOption = formatOption, + TerseOutputOption = terseOutputOption, + LogLevelOption = logLevelOption, + FilterByOperationIdsOption = filterByOperationIdsOption, + FilterByTagsOption = filterByTagsOption, + FilterByCollectionOption = filterByCollectionOption, + InlineLocalOption = inlineLocalOption, + InlineExternalOption = inlineExternalOption + }; rootCommand.Add(transformCommand); rootCommand.Add(validateCommand); From 8a91397ceb4a9ebe7d5de38c47d668e13e6cbd2e Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Mon, 1 Aug 2022 10:46:07 +0300 Subject: [PATCH 03/22] Add logger class for easy reuse and clean up code --- src/Microsoft.OpenApi.Hidi/Logger.cs | 35 ++++++++++++++++++++ src/Microsoft.OpenApi.Hidi/OpenApiService.cs | 34 ++++--------------- 2 files changed, 42 insertions(+), 27 deletions(-) create mode 100644 src/Microsoft.OpenApi.Hidi/Logger.cs diff --git a/src/Microsoft.OpenApi.Hidi/Logger.cs b/src/Microsoft.OpenApi.Hidi/Logger.cs new file mode 100644 index 000000000..cca906949 --- /dev/null +++ b/src/Microsoft.OpenApi.Hidi/Logger.cs @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using Microsoft.Extensions.Logging; + +namespace Microsoft.OpenApi.Hidi +{ + public class Logger + { + public static ILogger ConfigureLogger(LogLevel logLevel) + { + // Configure logger options +#if DEBUG + logLevel = logLevel > LogLevel.Debug ? LogLevel.Debug : logLevel; +#endif + + using var loggerFactory = LoggerFactory.Create((builder) => + { + builder + .AddSimpleConsole(c => + { + c.IncludeScopes = true; + }) +#if DEBUG + .AddDebug() +#endif + .SetMinimumLevel(logLevel); + }); + + var logger = loggerFactory.CreateLogger(); + + return logger; + } + } +} diff --git a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs index 8e1838d95..79b518507 100644 --- a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs +++ b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs @@ -26,7 +26,6 @@ using System.Threading; using System.Xml.Xsl; using System.Xml; -using System.Runtime.CompilerServices; using System.Reflection; namespace Microsoft.OpenApi.Hidi @@ -36,7 +35,7 @@ public class OpenApiService /// /// Implementation of the transform command /// - public static async Task TransformOpenApiDocument( + public static async Task TransformOpenApiDocument( string openapi, string csdl, string csdlFilter, @@ -54,8 +53,7 @@ public static async Task TransformOpenApiDocument( CancellationToken cancellationToken ) { - using var loggerFactory = ConfigureLoggerInstance(loglevel); - var logger = loggerFactory.CreateLogger(); + var logger = Logger.ConfigureLogger(loglevel); try { @@ -212,18 +210,11 @@ CancellationToken cancellationToken logger.LogTrace($"Finished serializing in {stopwatch.ElapsedMilliseconds}ms"); textWriter.Flush(); } - return 0; } catch (Exception ex) { -#if DEBUG - logger.LogCritical(ex, ex.Message); -#else - logger.LogCritical(ex.Message); - -#endif - return 1; - } + throw new InvalidOperationException($"Could not transform the document, reason: {ex.Message}", ex); + } } private static XslCompiledTransform GetFilterTransform() @@ -249,18 +240,15 @@ private static Stream ApplyFilter(string csdl, string entitySetOrSingleton, XslC return stream; } - - /// /// Implementation of the validate command /// - public static async Task ValidateOpenApiDocument( + public static async Task ValidateOpenApiDocument( string openapi, LogLevel loglevel, CancellationToken cancellationToken) { - using var loggerFactory = ConfigureLoggerInstance(loglevel); - var logger = loggerFactory.CreateLogger(); + var logger = Logger.ConfigureLogger(loglevel); try { @@ -308,19 +296,11 @@ public static async Task ValidateOpenApiDocument( logger.LogTrace("Finished walking through the OpenApi document. Generating a statistics report.."); logger.LogInformation(statsVisitor.GetStatisticsReport()); } - - return 0; } catch (Exception ex) { -#if DEBUG - logger.LogCritical(ex, ex.Message); -#else - logger.LogCritical(ex.Message); -#endif - return 1; + throw new InvalidOperationException($"Could not validate the document, reason: {ex.Message}", ex); } - } /// From b4c38cf555fab7584a882556a391833d1296c5cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Aug 2022 21:11:50 +0000 Subject: [PATCH 04/22] Bump Verify.Xunit from 17.4.2 to 17.5.0 Bumps [Verify.Xunit](https://github.com/VerifyTests/Verify) from 17.4.2 to 17.5.0. - [Release notes](https://github.com/VerifyTests/Verify/releases) - [Commits](https://github.com/VerifyTests/Verify/compare/17.4.2...17.5.0) --- updated-dependencies: - dependency-name: Verify.Xunit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj index 5104ebbe9..986b2cb18 100644 --- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj +++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj @@ -20,7 +20,7 @@ - + all From 3e89450df6823cf49c6ac9a4cd5e4014247a30e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Aug 2022 23:25:20 +0000 Subject: [PATCH 05/22] Bump xunit from 2.4.1 to 2.4.2 Bumps [xunit](https://github.com/xunit/xunit) from 2.4.1 to 2.4.2. - [Release notes](https://github.com/xunit/xunit/releases) - [Commits](https://github.com/xunit/xunit/compare/2.4.1...2.4.2) --- updated-dependencies: - dependency-name: xunit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .../Microsoft.OpenApi.Hidi.Tests.csproj | 2 +- .../Microsoft.OpenApi.Readers.Tests.csproj | 2 +- .../Microsoft.OpenApi.SmokeTests.csproj | 2 +- test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj b/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj index fb6eaecc1..b74df3589 100644 --- a/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj +++ b/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj @@ -11,7 +11,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj index bfb749d0f..e89e47745 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj +++ b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj @@ -257,7 +257,7 @@ - + all diff --git a/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj b/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj index 6f1763b30..9a6c89d88 100644 --- a/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj +++ b/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj @@ -10,7 +10,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj index 986b2cb18..80cf71300 100644 --- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj +++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj @@ -21,7 +21,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive From 8bb1a19ba2da4b5b43c1e7a32d58bfb4495045ad Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Tue, 2 Aug 2022 17:06:16 +0300 Subject: [PATCH 06/22] Treat an empty string as valid and only check for null --- src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs b/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs index 1e4739374..4d7f11032 100644 --- a/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs +++ b/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs @@ -393,9 +393,9 @@ private bool IsScopeType(ScopeType type) /// property name protected void VerifyCanWritePropertyName(string name) { - if (string.IsNullOrWhiteSpace(name)) + if (name == null) { - throw Error.ArgumentNullOrWhiteSpace(nameof(name)); + throw Error.ArgumentNull(nameof(name)); } if (Scopes.Count == 0) From 6cca4012709a5f99f2ef888f2baf7fd2c7a4f6dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Aug 2022 21:07:24 +0000 Subject: [PATCH 07/22] Bump Moq from 4.18.1 to 4.18.2 Bumps [Moq](https://github.com/moq/moq4) from 4.18.1 to 4.18.2. - [Release notes](https://github.com/moq/moq4/releases) - [Changelog](https://github.com/moq/moq4/blob/main/CHANGELOG.md) - [Commits](https://github.com/moq/moq4/compare/v4.18.1...v4.18.2) --- updated-dependencies: - dependency-name: Moq dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .../Microsoft.OpenApi.Hidi.Tests.csproj | 2 +- test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj b/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj index b74df3589..de148b7d3 100644 --- a/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj +++ b/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj @@ -10,7 +10,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj index 80cf71300..04010213b 100644 --- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj +++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj @@ -17,7 +17,7 @@ - + From a3b4b0d425d3a65791812e920df90baa7ddab687 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Wed, 3 Aug 2022 11:27:45 +0300 Subject: [PATCH 08/22] Clean up code --- src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs b/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs index 84ffcc122..194a1eba8 100644 --- a/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs +++ b/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs @@ -40,7 +40,6 @@ public async Task InvokeAsync(InvocationContext context) throw; // so debug tools go straight to the source of the exception when attached #else logger.LogCritical( ex.Message); - Environment.Exit(1); return 1; #endif } From 02570f58a9c8de39f1a211cc9180f944d0d359ef Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Wed, 3 Aug 2022 17:16:21 +0300 Subject: [PATCH 09/22] Refactor code --- .../Handlers/TransformCommandHandler.cs | 4 ++-- .../Handlers/ValidateCommandHandler.cs | 4 ++-- src/Microsoft.OpenApi.Hidi/Logger.cs | 8 ++------ src/Microsoft.OpenApi.Hidi/OpenApiService.cs | 16 ++++++++-------- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/Microsoft.OpenApi.Hidi/Handlers/TransformCommandHandler.cs b/src/Microsoft.OpenApi.Hidi/Handlers/TransformCommandHandler.cs index 8123f4620..e8d9431de 100644 --- a/src/Microsoft.OpenApi.Hidi/Handlers/TransformCommandHandler.cs +++ b/src/Microsoft.OpenApi.Hidi/Handlers/TransformCommandHandler.cs @@ -50,8 +50,8 @@ public async Task InvokeAsync(InvocationContext context) string filterbycollection = context.ParseResult.GetValueForOption(FilterByCollectionOption); CancellationToken cancellationToken = (CancellationToken)context.BindingContext.GetService(typeof(CancellationToken)); - var logger = Logger.ConfigureLogger(logLevel); - + using var loggerFactory = Logger.ConfigureLogger(logLevel); + var logger = loggerFactory.CreateLogger(); try { await OpenApiService.TransformOpenApiDocument(openapi, csdl, csdlFilter, output, cleanOutput, version, format, terseOutput, logLevel, inlineLocal, inlineExternal, filterbyoperationids, filterbytags, filterbycollection, cancellationToken); diff --git a/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs b/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs index 194a1eba8..2faa771ea 100644 --- a/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs +++ b/src/Microsoft.OpenApi.Hidi/Handlers/ValidateCommandHandler.cs @@ -26,8 +26,8 @@ public async Task InvokeAsync(InvocationContext context) CancellationToken cancellationToken = (CancellationToken)context.BindingContext.GetService(typeof(CancellationToken)); - var logger = Logger.ConfigureLogger(logLevel); - + using var loggerFactory = Logger.ConfigureLogger(logLevel); + var logger = loggerFactory.CreateLogger(); try { await OpenApiService.ValidateOpenApiDocument(openapi, logLevel, cancellationToken); diff --git a/src/Microsoft.OpenApi.Hidi/Logger.cs b/src/Microsoft.OpenApi.Hidi/Logger.cs index cca906949..2b02e9600 100644 --- a/src/Microsoft.OpenApi.Hidi/Logger.cs +++ b/src/Microsoft.OpenApi.Hidi/Logger.cs @@ -7,14 +7,14 @@ namespace Microsoft.OpenApi.Hidi { public class Logger { - public static ILogger ConfigureLogger(LogLevel logLevel) + public static ILoggerFactory ConfigureLogger(LogLevel logLevel) { // Configure logger options #if DEBUG logLevel = logLevel > LogLevel.Debug ? LogLevel.Debug : logLevel; #endif - using var loggerFactory = LoggerFactory.Create((builder) => + return LoggerFactory.Create((builder) => { builder .AddSimpleConsole(c => @@ -26,10 +26,6 @@ public static ILogger ConfigureLogger(LogLevel logLevel) #endif .SetMinimumLevel(logLevel); }); - - var logger = loggerFactory.CreateLogger(); - - return logger; } } } diff --git a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs index 0d2d5d531..c37c9479d 100644 --- a/src/Microsoft.OpenApi.Hidi/OpenApiService.cs +++ b/src/Microsoft.OpenApi.Hidi/OpenApiService.cs @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. using System; @@ -44,7 +44,7 @@ public static async Task TransformOpenApiDocument( string? version, OpenApiFormat? format, bool terseOutput, - LogLevel loglevel, + LogLevel logLevel, bool inlineLocal, bool inlineExternal, string filterbyoperationids, @@ -53,8 +53,8 @@ public static async Task TransformOpenApiDocument( CancellationToken cancellationToken ) { - var logger = Logger.ConfigureLogger(loglevel); - + using var loggerFactory = Logger.ConfigureLogger(logLevel); + var logger = loggerFactory.CreateLogger(); try { if (string.IsNullOrEmpty(openapi) && string.IsNullOrEmpty(csdl)) @@ -246,11 +246,11 @@ private static Stream ApplyFilter(string csdl, string entitySetOrSingleton, XslC /// public static async Task ValidateOpenApiDocument( string openapi, - LogLevel loglevel, + LogLevel logLevel, CancellationToken cancellationToken) { - var logger = Logger.ConfigureLogger(loglevel); - + using var loggerFactory = Logger.ConfigureLogger(logLevel); + var logger = loggerFactory.CreateLogger(); try { if (string.IsNullOrEmpty(openapi)) @@ -578,7 +578,7 @@ private static ILoggerFactory ConfigureLoggerInstance(LogLevel loglevel) loglevel = loglevel > LogLevel.Debug ? LogLevel.Debug : loglevel; #endif - return LoggerFactory.Create((builder) => { + return Microsoft.Extensions.Logging.LoggerFactory.Create((builder) => { builder .AddSimpleConsole(c => { c.IncludeScopes = true; From f0a0eb84a445b2760eab119cd668468a5d0be5cd Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Thu, 4 Aug 2022 14:31:38 +0300 Subject: [PATCH 10/22] Revert packages to stable versions --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index 71570a9c4..c35c40209 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -37,10 +37,10 @@ - - - - + + + + From d3f9c1ce7644edff613ff07f49f6ecd3a1b86f11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Aug 2022 21:06:34 +0000 Subject: [PATCH 11/22] Bump docker/build-push-action from 3.1.0 to 3.1.1 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.1.0 to 3.1.1. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v3.1.0...v3.1.1) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/docker.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 43ea50e2f..ec86e0b7f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -30,13 +30,13 @@ jobs: id: getversion - name: Push to GitHub Packages - Nightly if: ${{ github.ref == 'refs/heads/vnext' }} - uses: docker/build-push-action@v3.1.0 + uses: docker/build-push-action@v3.1.1 with: push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:nightly - name: Push to GitHub Packages - Release if: ${{ github.ref == 'refs/heads/master' }} - uses: docker/build-push-action@v3.1.0 + uses: docker/build-push-action@v3.1.1 with: push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.getversion.outputs.version }} From c4cd7c938264945e5d1a6c59067070124bf8b64e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Aug 2022 21:12:52 +0000 Subject: [PATCH 12/22] Bump Verify.Xunit from 17.5.0 to 17.7.0 Bumps [Verify.Xunit](https://github.com/VerifyTests/Verify) from 17.5.0 to 17.7.0. - [Release notes](https://github.com/VerifyTests/Verify/releases) - [Commits](https://github.com/VerifyTests/Verify/compare/17.5.0...17.7.0) --- updated-dependencies: - dependency-name: Verify.Xunit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj index 04010213b..75b34ad22 100644 --- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj +++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj @@ -20,7 +20,7 @@ - + all From 5c9e0783e124fd358589e672e0985a286a6b45bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Aug 2022 21:08:22 +0000 Subject: [PATCH 13/22] Bump Verify.Xunit from 17.7.0 to 17.8.1 Bumps [Verify.Xunit](https://github.com/VerifyTests/Verify) from 17.7.0 to 17.8.1. - [Release notes](https://github.com/VerifyTests/Verify/releases) - [Commits](https://github.com/VerifyTests/Verify/compare/17.7.0...17.8.1) --- updated-dependencies: - dependency-name: Verify.Xunit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj index 75b34ad22..8baa82c36 100644 --- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj +++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj @@ -20,7 +20,7 @@ - + all From c6417ba42411fd30e2864243db4ce194a5fd2743 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Aug 2022 21:12:33 +0000 Subject: [PATCH 14/22] Bump Microsoft.NET.Test.Sdk from 17.2.0 to 17.3.0 Bumps [Microsoft.NET.Test.Sdk](https://github.com/microsoft/vstest) from 17.2.0 to 17.3.0. - [Release notes](https://github.com/microsoft/vstest/releases) - [Commits](https://github.com/microsoft/vstest/compare/v17.2.0...v17.3.0) --- updated-dependencies: - dependency-name: Microsoft.NET.Test.Sdk dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .../Microsoft.OpenApi.Hidi.Tests.csproj | 2 +- .../Microsoft.OpenApi.Readers.Tests.csproj | 2 +- .../Microsoft.OpenApi.SmokeTests.csproj | 2 +- test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj b/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj index de148b7d3..6045d85b6 100644 --- a/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj +++ b/Microsoft.OpenApi.Hidi.Tests/Microsoft.OpenApi.Hidi.Tests.csproj @@ -9,7 +9,7 @@ - + diff --git a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj index e89e47745..83e5482a7 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj +++ b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj @@ -250,7 +250,7 @@ - + diff --git a/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj b/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj index 9a6c89d88..ef9886bb9 100644 --- a/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj +++ b/test/Microsoft.OpenApi.SmokeTests/Microsoft.OpenApi.SmokeTests.csproj @@ -8,7 +8,7 @@ - + diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj index 8baa82c36..1d8d8c45b 100644 --- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj +++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj @@ -16,7 +16,7 @@ - + From fc43d0c322e2a2d82963c0e662c37c05b4621b28 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Thu, 11 Aug 2022 09:33:07 +0300 Subject: [PATCH 15/22] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9405526bf..0190e572d 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,8 @@ Project Objectives # Installation -- Install core Nuget package `Microsoft.OpenApi` -- Install readers Nuget package `Microsoft.OpenApi.Readers` +- Install core Nuget package [**Microsoft.OpenApi**](https://www.nuget.org/packages/Microsoft.OpenApi) +- Install readers Nuget package [**Microsoft.OpenApi.Readers**](https://www.nuget.org/packages/Microsoft.OpenApi.Readers) # Processors The OpenAPI.NET project holds the base object model for representing OpenAPI documents as .NET objects. Some developers have found the need to write processors that convert other data formats into this OpenAPI.NET object model. We'd like to curate that list of processors in this section of the readme. From b0557a13ef24cc7f5f3d9e3a02432f9e84688158 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Fri, 12 Aug 2022 15:43:20 +0300 Subject: [PATCH 16/22] Add defensive programming --- .../Models/OpenApiCallback.cs | 8 +- .../Models/OpenApiComponents.cs | 20 ++--- .../Models/OpenApiContact.cs | 8 +- .../Models/OpenApiDiscriminator.cs | 4 +- .../Models/OpenApiDocument.cs | 18 ++--- .../Models/OpenApiEncoding.cs | 12 +-- .../Models/OpenApiExample.cs | 14 ++-- .../Models/OpenApiExternalDocs.cs | 6 +- src/Microsoft.OpenApi/Models/OpenApiHeader.cs | 28 +++---- src/Microsoft.OpenApi/Models/OpenApiInfo.cs | 14 ++-- .../Models/OpenApiLicense.cs | 6 +- src/Microsoft.OpenApi/Models/OpenApiLink.cs | 18 ++--- .../Models/OpenApiMediaType.cs | 10 +-- .../Models/OpenApiOAuthFlow.cs | 10 +-- .../Models/OpenApiOAuthFlows.cs | 10 +-- .../Models/OpenApiOperation.cs | 26 +++---- .../Models/OpenApiParameter.cs | 32 ++++---- .../Models/OpenApiPathItem.cs | 16 ++-- .../Models/OpenApiReference.cs | 8 +- .../Models/OpenApiRequestBody.cs | 12 +-- .../Models/OpenApiResponse.cs | 14 ++-- src/Microsoft.OpenApi/Models/OpenApiSchema.cs | 76 +++++++++---------- .../Models/OpenApiSecurityScheme.cs | 22 +++--- src/Microsoft.OpenApi/Models/OpenApiServer.cs | 8 +- .../Models/OpenApiServerVariable.cs | 8 +- src/Microsoft.OpenApi/Models/OpenApiTag.cs | 12 +-- src/Microsoft.OpenApi/Models/OpenApiXml.cs | 12 +-- .../Models/RuntimeExpressionAnyWrapper.cs | 4 +- 28 files changed, 218 insertions(+), 218 deletions(-) diff --git a/src/Microsoft.OpenApi/Models/OpenApiCallback.cs b/src/Microsoft.OpenApi/Models/OpenApiCallback.cs index e9701b17c..beed0ad06 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiCallback.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiCallback.cs @@ -45,10 +45,10 @@ public OpenApiCallback() { } /// public OpenApiCallback(OpenApiCallback callback) { - PathItems = new(callback.PathItems); - UnresolvedReference = callback.UnresolvedReference; - Reference = new(callback.Reference); - Extensions = new Dictionary(callback.Extensions); + PathItems = new(callback?.PathItems); + UnresolvedReference = callback?.UnresolvedReference ?? false; + Reference = new(callback?.Reference); + Extensions = callback?.Extensions != null ? new Dictionary(callback?.Extensions) : callback?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiComponents.cs b/src/Microsoft.OpenApi/Models/OpenApiComponents.cs index c23e569c5..7e4a481ac 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiComponents.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiComponents.cs @@ -78,16 +78,16 @@ public OpenApiComponents() { } /// public OpenApiComponents(OpenApiComponents components) { - Schemas = new Dictionary(components.Schemas); - Responses = new Dictionary(components.Responses); - Parameters = new Dictionary(components.Parameters); - Examples = new Dictionary(components.Examples); - RequestBodies = new Dictionary(components.RequestBodies); - Headers = new Dictionary(components.Headers); - SecuritySchemes = new Dictionary(components.SecuritySchemes); - Links = new Dictionary(components.Links); - Callbacks = new Dictionary(components.Callbacks); - Extensions = new Dictionary(components.Extensions); + Schemas = components?.Schemas != null ? new Dictionary(components?.Schemas) : components?.Schemas; + Responses = components?.Responses != null ? new Dictionary(components?.Responses) : components?.Responses; + Parameters = components?.Parameters != null ? new Dictionary(components?.Parameters) : components?.Parameters; + Examples = components?.Examples != null ? new Dictionary(components?.Examples) : components?.Examples; + RequestBodies = components?.RequestBodies != null ? new Dictionary(components?.RequestBodies) : components?.RequestBodies; + Headers = components?.Headers != null ? new Dictionary(components?.Headers) : components?.Headers; + SecuritySchemes = components?.SecuritySchemes != null ? new Dictionary(components?.SecuritySchemes) : components?.SecuritySchemes; + Links = components?.Links != null ? new Dictionary(components?.Links) : components?.Links; + Callbacks = components?.Callbacks != null ? new Dictionary(components?.Callbacks) : components?.Callbacks; + Extensions = components?.Extensions != null ? new Dictionary(components?.Extensions) : components?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiContact.cs b/src/Microsoft.OpenApi/Models/OpenApiContact.cs index 9447d424e..28001e928 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiContact.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiContact.cs @@ -45,10 +45,10 @@ public OpenApiContact() { } /// public OpenApiContact(OpenApiContact contact) { - Name = contact.Name; - Url = new Uri(contact.Url.OriginalString); - Email = contact.Email; - Extensions = new Dictionary(contact.Extensions); + Name = contact?.Name; + Url = contact?.Url; + Email = contact?.Email; + Extensions = contact?.Extensions != null ? new Dictionary(contact?.Extensions) : contact?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs b/src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs index e03c7d59a..f39819a0a 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs @@ -32,8 +32,8 @@ public OpenApiDiscriminator() { } /// public OpenApiDiscriminator(OpenApiDiscriminator discriminator) { - PropertyName = discriminator.PropertyName; - Mapping = new Dictionary(discriminator.Mapping); + PropertyName = discriminator?.PropertyName; + Mapping = discriminator?.Mapping != null ? new Dictionary(discriminator?.Mapping) : discriminator?.Mapping; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs index 44cbc71ab..21c5f2e53 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs @@ -72,15 +72,15 @@ public OpenApiDocument() {} /// public OpenApiDocument(OpenApiDocument document) { - Workspace = new(document.Workspace); - Info = new(document.Info); - Servers = new List(document.Servers); - Paths = new(document.Paths); - Components = new(document.Components); - SecurityRequirements = new List(document.SecurityRequirements); - Tags = new List(document.Tags); - ExternalDocs = new(document.ExternalDocs); - Extensions = new Dictionary(document.Extensions); + Workspace = new(document?.Workspace); + Info = new(document?.Info); + Servers = document?.Servers != null ? new List(document?.Servers) : document?.Servers; + Paths = new(document?.Paths); + Components = new(document?.Components); + SecurityRequirements = document?.SecurityRequirements != null ? new List(document?.SecurityRequirements) : document?.SecurityRequirements; + Tags = document?.Tags != null ? new List(document?.Tags) : document?.Tags; + ExternalDocs = new(document?.ExternalDocs); + Extensions = document?.Extensions != null ? new Dictionary(document?.Extensions) : document?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs b/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs index 533cb7e80..bc154e8fb 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs @@ -63,12 +63,12 @@ public OpenApiEncoding() {} /// public OpenApiEncoding(OpenApiEncoding encoding) { - ContentType = encoding.ContentType; - Headers = new Dictionary(encoding.Headers); - Style = encoding.Style; - Explode = encoding.Explode; - AllowReserved = encoding.AllowReserved; - Extensions = new Dictionary(encoding.Extensions); + ContentType = encoding?.ContentType; + Headers = encoding?.Headers != null ? new Dictionary(encoding?.Headers) : encoding?.Headers; + Style = encoding?.Style; + Explode = encoding?.Explode ?? false; + AllowReserved = encoding?.AllowReserved ?? false; + Extensions = encoding?.Extensions != null ? new Dictionary(encoding?.Extensions) : encoding?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiExample.cs b/src/Microsoft.OpenApi/Models/OpenApiExample.cs index 5e105be26..b9bfc031a 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiExample.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiExample.cs @@ -64,13 +64,13 @@ public OpenApiExample() {} /// public OpenApiExample(OpenApiExample example) { - Summary = example.Summary; - Description = example.Description; - Value = OpenApiAnyCloneHelper.CloneFromCopyConstructor(example.Value); - ExternalValue = example.ExternalValue; - Extensions = new Dictionary(example.Extensions); - Reference = new(example.Reference); - UnresolvedReference = example.UnresolvedReference; + Summary = example?.Summary; + Description = example?.Description; + Value = OpenApiAnyCloneHelper.CloneFromCopyConstructor(example?.Value); + ExternalValue = example?.ExternalValue; + Extensions = example?.Extensions != null ? new Dictionary(example?.Extensions) : example?.Extensions; + Reference = new(example?.Reference); + UnresolvedReference = example?.UnresolvedReference ?? false; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs b/src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs index 95af8f01b..040b7d674 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs @@ -39,9 +39,9 @@ public OpenApiExternalDocs() {} /// public OpenApiExternalDocs(OpenApiExternalDocs externalDocs) { - Description = externalDocs.Description; - Url = new Uri(externalDocs.Url.OriginalString); - Extensions = new Dictionary(externalDocs.Extensions); + Description = externalDocs?.Description; + Url = externalDocs?.Url != null ? new Uri(externalDocs?.Url?.OriginalString) : externalDocs?.Url; + Extensions = externalDocs?.Extensions != null ? new Dictionary(externalDocs?.Extensions) : externalDocs?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiHeader.cs b/src/Microsoft.OpenApi/Models/OpenApiHeader.cs index b91440df8..a7ca745d2 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiHeader.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiHeader.cs @@ -96,20 +96,20 @@ public OpenApiHeader() {} /// public OpenApiHeader(OpenApiHeader header) { - UnresolvedReference = header.UnresolvedReference; - Reference = new(header.Reference); - Description = header.Description; - Required = header.Required; - Deprecated = header.Deprecated; - AllowEmptyValue = header.AllowEmptyValue; - Style = header.Style; - Explode = header.Explode; - AllowReserved = header.AllowReserved; - Schema = new(header.Schema); - Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(header.Example); - Examples = new Dictionary(header.Examples); - Content = new Dictionary(header.Content); - Extensions = new Dictionary(header.Extensions); + UnresolvedReference = header?.UnresolvedReference ?? false; + Reference = new(header?.Reference); + Description = header?.Description; + Required = header?.Required ?? false; + Deprecated = header?.Deprecated ?? false; + AllowEmptyValue = header?.AllowEmptyValue ?? false; + Style = header?.Style; + Explode = header?.Explode ?? false; + AllowReserved = header?.AllowReserved ?? false; + Schema = new(header?.Schema); + Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(header?.Example); + Examples = header?.Examples != null ? new Dictionary(header?.Examples) : header?.Examples; + Content = header?.Content != null ? new Dictionary(header?.Content) : header?.Content; + Extensions = header?.Extensions != null ? new Dictionary(header?.Extensions) : header?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiInfo.cs b/src/Microsoft.OpenApi/Models/OpenApiInfo.cs index c5a44c448..1dcae81e2 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiInfo.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiInfo.cs @@ -59,13 +59,13 @@ public OpenApiInfo() {} /// public OpenApiInfo(OpenApiInfo info) { - Title = info.Title; - Description = info.Description; - Version = info.Version; - TermsOfService = info.TermsOfService; - Contact = new(info.Contact); - License = new(info.License); - Extensions = new Dictionary(info.Extensions); + Title = info?.Title; + Description = info?.Description; + Version = info?.Version; + TermsOfService = info?.TermsOfService; + Contact = new(info?.Contact); + License = new(info?.License); + Extensions = info?.Extensions != null ? new Dictionary(info?.Extensions) : info?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiLicense.cs b/src/Microsoft.OpenApi/Models/OpenApiLicense.cs index 431789aac..399441b46 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiLicense.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiLicense.cs @@ -39,9 +39,9 @@ public OpenApiLicense() {} /// public OpenApiLicense(OpenApiLicense license) { - Name = license.Name; - Url = new Uri(license.Url.OriginalString); - Extensions = new Dictionary(license.Extensions); + Name = license?.Name; + Url = license?.Url != null ? new Uri(license?.Url?.OriginalString) : license?.Url; + Extensions = license?.Extensions != null ? new Dictionary(license?.Extensions) : license?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiLink.cs b/src/Microsoft.OpenApi/Models/OpenApiLink.cs index 6ba3a65fd..3a5a72c1d 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiLink.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiLink.cs @@ -71,15 +71,15 @@ public OpenApiLink() {} /// public OpenApiLink(OpenApiLink link) { - OperationRef = link.OperationRef; - OperationId = link.OperationId; - Parameters = new(link.Parameters); - RequestBody = new(link.RequestBody); - Description = link.Description; - Server = new(link.Server); - Extensions = new Dictionary(link.Extensions); - UnresolvedReference = link.UnresolvedReference; - Reference = new(link.Reference); + OperationRef = link?.OperationRef; + OperationId = link?.OperationId; + Parameters = new(link?.Parameters); + RequestBody = new(link?.RequestBody); + Description = link?.Description; + Server = new(link?.Server); + Extensions = link?.Extensions != null ? new Dictionary(link?.Extensions) : link?.Extensions; + UnresolvedReference = link?.UnresolvedReference ?? false; + Reference = new(link?.Reference); } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs b/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs index 94dcbdfa7..b6245f202 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs @@ -53,11 +53,11 @@ public OpenApiMediaType() {} /// public OpenApiMediaType(OpenApiMediaType mediaType) { - Schema = new(mediaType.Schema); - Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(mediaType.Example); - Examples = new Dictionary(mediaType.Examples); - Encoding = new Dictionary(mediaType.Encoding); - Extensions = new Dictionary(mediaType.Extensions); + Schema = new(mediaType?.Schema); + Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(mediaType?.Example); + Examples = mediaType?.Examples != null ? new Dictionary(mediaType?.Examples) : mediaType?.Examples; + Encoding = mediaType?.Encoding != null ? new Dictionary(mediaType?.Encoding) : mediaType?.Encoding; + Extensions = mediaType?.Extensions != null ? new Dictionary(mediaType?.Extensions) : mediaType?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs index 02856d4cd..f5a9b46c4 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs @@ -51,11 +51,11 @@ public OpenApiOAuthFlow() {} /// public OpenApiOAuthFlow(OpenApiOAuthFlow oAuthFlow) { - AuthorizationUrl = new Uri(oAuthFlow.AuthorizationUrl.OriginalString); - TokenUrl = new Uri(oAuthFlow.TokenUrl.OriginalString); - RefreshUrl = new Uri(oAuthFlow.RefreshUrl.OriginalString); - Scopes = new Dictionary(oAuthFlow.Scopes); - Extensions = new Dictionary(oAuthFlow.Extensions); + AuthorizationUrl = oAuthFlow?.AuthorizationUrl != null ? new Uri(oAuthFlow?.AuthorizationUrl?.OriginalString) : oAuthFlow?.AuthorizationUrl; + TokenUrl = oAuthFlow?.TokenUrl != null ? new Uri(oAuthFlow?.TokenUrl?.OriginalString) : oAuthFlow?.TokenUrl; + RefreshUrl = oAuthFlow?.RefreshUrl != null ? new Uri(oAuthFlow?.RefreshUrl?.OriginalString) : oAuthFlow?.RefreshUrl; + Scopes = oAuthFlow?.Scopes != null ? new Dictionary(oAuthFlow?.Scopes) : oAuthFlow?.Scopes; + Extensions = oAuthFlow?.Extensions != null ? new Dictionary(oAuthFlow?.Extensions) : oAuthFlow?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs index 973a403e0..d286c7641 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs @@ -49,11 +49,11 @@ public OpenApiOAuthFlows() {} /// public OpenApiOAuthFlows(OpenApiOAuthFlows oAuthFlows) { - Implicit = new(oAuthFlows.Implicit); - Password = new(oAuthFlows.Password); - ClientCredentials = new(oAuthFlows.ClientCredentials); - AuthorizationCode = new(oAuthFlows.AuthorizationCode); - Extensions = new Dictionary(oAuthFlows.Extensions); + Implicit = new(oAuthFlows?.Implicit); + Password = new(oAuthFlows?.Password); + ClientCredentials = new(oAuthFlows?.ClientCredentials); + AuthorizationCode = new(oAuthFlows?.AuthorizationCode); + Extensions = oAuthFlows?.Extensions != null ? new Dictionary(oAuthFlows?.Extensions) : oAuthFlows?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiOperation.cs b/src/Microsoft.OpenApi/Models/OpenApiOperation.cs index 775532684..e7f8b8910 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiOperation.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiOperation.cs @@ -116,19 +116,19 @@ public OpenApiOperation() {} /// public OpenApiOperation(OpenApiOperation operation) { - Tags = new List(operation.Tags); - Summary = operation.Summary; - Description = operation.Description; - ExternalDocs = new(operation.ExternalDocs); - OperationId = operation.OperationId; - Parameters = new List(operation.Parameters); - RequestBody = new(operation.RequestBody); - Responses = new(operation.Responses); - Callbacks = new Dictionary(operation.Callbacks); - Deprecated = operation.Deprecated; - Security = new List(operation.Security); - Servers = new List(operation.Servers); - Extensions = new Dictionary(operation.Extensions); + Tags = new List(operation?.Tags); + Summary = operation?.Summary; + Description = operation?.Description; + ExternalDocs = new(operation?.ExternalDocs); + OperationId = operation?.OperationId; + Parameters = operation?.Parameters != null ? new List(operation?.Parameters) : operation?.Parameters; + RequestBody = new(operation?.RequestBody); + Responses = new(operation?.Responses); + Callbacks = operation?.Callbacks != null ? new Dictionary(operation?.Callbacks) : operation?.Callbacks; + Deprecated = operation?.Deprecated ?? false; + Security = operation?.Security != null ? new List(operation?.Security) : operation?.Security; + Servers = operation?.Servers != null ? new List(operation?.Servers) : operation?.Servers; + Extensions = operation?.Extensions != null ? new Dictionary(operation?.Extensions) : operation?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiParameter.cs b/src/Microsoft.OpenApi/Models/OpenApiParameter.cs index f0b21b0d9..7a429ef0a 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiParameter.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiParameter.cs @@ -146,22 +146,22 @@ public OpenApiParameter() {} /// public OpenApiParameter(OpenApiParameter parameter) { - UnresolvedReference = parameter.UnresolvedReference; - Reference = new(parameter.Reference); - Name = parameter.Name; - In = parameter.In; - Description = parameter.Description; - Required = parameter.Required; - Style = parameter.Style; - Explode = parameter.Explode; - AllowReserved = parameter.AllowReserved; - Schema = new(parameter.Schema); - Examples = new Dictionary(parameter.Examples); - Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(parameter.Example); - Content = new Dictionary(parameter.Content); - Extensions = new Dictionary(parameter.Extensions); - AllowEmptyValue = parameter.AllowEmptyValue; - Deprecated = parameter.Deprecated; + UnresolvedReference = parameter?.UnresolvedReference ?? false; + Reference = new(parameter?.Reference); + Name = parameter?.Name; + In = parameter?.In; + Description = parameter?.Description; + Required = parameter?.Required ?? false; + Style = parameter?.Style; + Explode = parameter?.Explode ?? false; + AllowReserved = parameter?.AllowReserved ?? false; + Schema = new(parameter?.Schema); + Examples = parameter?.Examples != null ? new Dictionary(parameter?.Examples) : parameter?.Examples; + Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(parameter?.Example); + Content = parameter?.Content != null ? new Dictionary(parameter?.Content) : parameter?.Content; + Extensions = parameter?.Extensions != null ? new Dictionary(parameter?.Extensions) : parameter?.Extensions; + AllowEmptyValue = parameter?.AllowEmptyValue ?? false; + Deprecated = parameter?.Deprecated ?? false; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiPathItem.cs b/src/Microsoft.OpenApi/Models/OpenApiPathItem.cs index 8ce83c9eb..89313be87 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiPathItem.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiPathItem.cs @@ -75,14 +75,14 @@ public OpenApiPathItem() {} /// public OpenApiPathItem(OpenApiPathItem pathItem) { - Summary = pathItem.Summary; - Description = pathItem.Description; - Operations = new Dictionary(pathItem.Operations); - Servers = new List(pathItem.Servers); - Parameters = new List(pathItem.Parameters); - Extensions = new Dictionary(pathItem.Extensions); - UnresolvedReference = pathItem.UnresolvedReference; - Reference = new(pathItem.Reference); + Summary = pathItem?.Summary; + Description = pathItem?.Description; + Operations = pathItem?.Operations != null ? new Dictionary(pathItem?.Operations) : pathItem?.Operations; + Servers = pathItem?.Servers != null ? new List(pathItem?.Servers) : pathItem?.Servers; + Parameters = pathItem?.Parameters != null ? new List(pathItem?.Parameters) : pathItem?.Parameters; + Extensions = pathItem?.Extensions != null ? new Dictionary(pathItem?.Extensions) : pathItem?.Extensions; + UnresolvedReference = pathItem?.UnresolvedReference ?? false; + Reference = new(pathItem?.Reference); } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiReference.cs b/src/Microsoft.OpenApi/Models/OpenApiReference.cs index 9213e77bc..31cc5a6e8 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiReference.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiReference.cs @@ -122,10 +122,10 @@ public OpenApiReference() {} /// public OpenApiReference(OpenApiReference reference) { - ExternalResource = reference.ExternalResource; - Type = reference.Type; - Id = reference.Id; - HostDocument = new(reference.HostDocument); + ExternalResource = reference?.ExternalResource; + Type = reference?.Type; + Id = reference?.Id; + HostDocument = new(reference?.HostDocument); } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs b/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs index b82b67e8a..6e7bdaf77 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs @@ -55,12 +55,12 @@ public OpenApiRequestBody() { } /// public OpenApiRequestBody(OpenApiRequestBody requestBody) { - UnresolvedReference = requestBody.UnresolvedReference; - Reference = new(requestBody.Reference); - Description = requestBody.Description; - Required = requestBody.Required; - Content = new Dictionary(requestBody.Content); - Extensions = new Dictionary(requestBody.Extensions); + UnresolvedReference = requestBody?.UnresolvedReference ?? false; + Reference = new(requestBody?.Reference); + Description = requestBody?.Description; + Required = requestBody?.Required ?? false; + Content = requestBody?.Content != null ? new Dictionary(requestBody?.Content) : requestBody?.Content; + Extensions = requestBody?.Extensions != null ? new Dictionary(requestBody?.Extensions) : requestBody?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiResponse.cs b/src/Microsoft.OpenApi/Models/OpenApiResponse.cs index cf0c796e6..46b7b63b0 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiResponse.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiResponse.cs @@ -61,13 +61,13 @@ public OpenApiResponse() {} /// public OpenApiResponse(OpenApiResponse response) { - Description = response.Description; - Headers = new Dictionary(response.Headers); - Content = new Dictionary(response.Content); - Links = new Dictionary(response.Links); - Extensions = new Dictionary(response.Extensions); - UnresolvedReference = response.UnresolvedReference; - Reference = new(response.Reference); + Description = response?.Description; + Headers = response?.Headers != null ? new Dictionary(response?.Headers) : response?.Headers; + Content = response?.Content != null ? new Dictionary(response?.Content) : response?.Content; + Links = response?.Links != null ? new Dictionary(response?.Links) : response?.Links; + Extensions = response?.Extensions != null ? new Dictionary(response?.Extensions) : response?.Extensions; + UnresolvedReference = response?.UnresolvedReference ?? false; + Reference = new(response?.Reference); } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs index d43756887..45d520b3a 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs @@ -252,44 +252,44 @@ public OpenApiSchema() {} /// public OpenApiSchema(OpenApiSchema schema) { - Title = schema.Title; - Type = schema.Type; - Format = schema.Format; - Description = schema.Description; - Maximum = schema.Maximum; - ExclusiveMaximum = schema.ExclusiveMaximum; - Minimum = schema.Minimum; - ExclusiveMinimum = schema.ExclusiveMinimum; - MaxLength = schema.MaxLength; - MinLength = schema.MinLength; - Pattern = schema.Pattern; - MultipleOf = schema.MultipleOf; - Default = OpenApiAnyCloneHelper.CloneFromCopyConstructor(schema.Default); - ReadOnly = schema.ReadOnly; - WriteOnly = schema.WriteOnly; - AllOf = new List(schema.AllOf); - OneOf = new List(schema.OneOf); - AnyOf = new List(schema.AnyOf); - Not = new(schema.Not); - Required = new HashSet(schema.Required); - Items = new(schema.Items); - MaxItems = schema.MaxItems; - MinItems = schema.MinItems; - UniqueItems = schema.UniqueItems; - Properties = new Dictionary(schema.Properties); - MaxProperties = schema.MaxProperties; - MinProperties = schema.MinProperties; - AdditionalPropertiesAllowed = schema.AdditionalPropertiesAllowed; - AdditionalProperties = new(schema.AdditionalProperties); - Discriminator = new(schema.Discriminator); - Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(schema.Example); - Enum = new List(schema.Enum); - Nullable = schema.Nullable; - ExternalDocs = new(schema.ExternalDocs); - Deprecated = schema.Deprecated; - Xml = new(schema.Xml); - UnresolvedReference = schema.UnresolvedReference; - Reference = new(schema.Reference); + Title = schema?.Title; + Type = schema?.Type; + Format = schema?.Format; + Description = schema?.Description; + Maximum = schema?.Maximum; + ExclusiveMaximum = schema?.ExclusiveMaximum; + Minimum = schema?.Minimum; + ExclusiveMinimum = schema?.ExclusiveMinimum; + MaxLength = schema?.MaxLength; + MinLength = schema?.MinLength; + Pattern = schema?.Pattern; + MultipleOf = schema?.MultipleOf; + Default = OpenApiAnyCloneHelper.CloneFromCopyConstructor(schema?.Default); + ReadOnly = schema?.ReadOnly ?? false; + WriteOnly = schema?.WriteOnly ?? false; + AllOf = schema?.AllOf != null ? new List(schema?.AllOf) : schema?.AllOf; + OneOf = schema?.OneOf != null ? new List(schema?.OneOf) : schema?.OneOf; + AnyOf = schema?.AnyOf != null ? new List(schema?.AnyOf) : schema?.AnyOf; + Not = new(schema?.Not); + Required = schema?.Required != null ? new HashSet(schema?.Required) : schema?.Required; + Items = new(schema?.Items); + MaxItems = schema?.MaxItems; + MinItems = schema?.MinItems; + UniqueItems = schema?.UniqueItems; + Properties = schema?.Properties != null ? new Dictionary(schema?.Properties) : schema?.Properties; + MaxProperties = schema?.MaxProperties; + MinProperties = schema?.MinProperties; + AdditionalPropertiesAllowed = schema?.AdditionalPropertiesAllowed ?? false; + AdditionalProperties = new(schema?.AdditionalProperties); + Discriminator = new(schema?.Discriminator); + Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(schema?.Example); + Enum = schema?.Enum != null ? new List(schema?.Enum) : schema?.Enum; + Nullable = schema?.Nullable ?? false; + ExternalDocs = new(schema?.ExternalDocs); + Deprecated = schema?.Deprecated ?? false; + Xml = new(schema?.Xml); + UnresolvedReference = schema?.UnresolvedReference; + Reference = new(schema?.Reference); } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs b/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs index b87adf573..1bc427e9a 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs @@ -84,17 +84,17 @@ public OpenApiSecurityScheme() {} /// public OpenApiSecurityScheme(OpenApiSecurityScheme securityScheme) { - Type = securityScheme.Type; - Description = securityScheme.Description; - Name = securityScheme.Name; - In = securityScheme.In; - Scheme = securityScheme.Scheme; - BearerFormat = securityScheme.BearerFormat; - Flows = new(securityScheme.Flows); - OpenIdConnectUrl = new Uri(securityScheme.OpenIdConnectUrl.OriginalString); - Extensions = new Dictionary(securityScheme.Extensions); - UnresolvedReference = securityScheme.UnresolvedReference; - Reference = new(securityScheme.Reference); + Type = (SecuritySchemeType)(securityScheme?.Type); + Description = securityScheme?.Description; + Name = securityScheme?.Name; + In = (ParameterLocation)(securityScheme?.In); + Scheme = securityScheme?.Scheme; + BearerFormat = securityScheme?.BearerFormat; + Flows = new(securityScheme?.Flows); + OpenIdConnectUrl = new Uri(securityScheme?.OpenIdConnectUrl?.OriginalString); + Extensions = securityScheme?.Extensions != null ? new Dictionary(securityScheme?.Extensions) : securityScheme?.Extensions; + UnresolvedReference = securityScheme?.UnresolvedReference ?? false; + Reference = new(securityScheme?.Reference); } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiServer.cs b/src/Microsoft.OpenApi/Models/OpenApiServer.cs index 875bef5c7..c0ec7114a 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiServer.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiServer.cs @@ -46,10 +46,10 @@ public OpenApiServer() {} /// public OpenApiServer(OpenApiServer server) { - Description = server.Description; - Url = server.Url; - Variables = new Dictionary(server.Variables); - Extensions = new Dictionary(server.Extensions); + Description = server?.Description; + Url = server?.Url; + Variables = server?.Variables != null ? new Dictionary(server?.Variables) : server?.Variables; + Extensions = server?.Extensions != null ? new Dictionary(server?.Extensions) : server?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiServerVariable.cs b/src/Microsoft.OpenApi/Models/OpenApiServerVariable.cs index b1f222e83..70164bc59 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiServerVariable.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiServerVariable.cs @@ -44,10 +44,10 @@ public OpenApiServerVariable() {} /// public OpenApiServerVariable(OpenApiServerVariable serverVariable) { - Description = serverVariable.Description; - Default = serverVariable.Default; - Enum = new List(serverVariable.Enum); - Extensions = new Dictionary(serverVariable.Extensions); + Description = serverVariable?.Description; + Default = serverVariable?.Default; + Enum = serverVariable?.Enum != null ? new List(serverVariable?.Enum) : serverVariable?.Enum; + Extensions = serverVariable?.Extensions != null ? new Dictionary(serverVariable?.Extensions) : serverVariable?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiTag.cs b/src/Microsoft.OpenApi/Models/OpenApiTag.cs index 5ecfa0363..4e3785d4e 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiTag.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiTag.cs @@ -53,12 +53,12 @@ public OpenApiTag() {} /// public OpenApiTag(OpenApiTag tag) { - Name = tag.Name; - Description = tag.Description; - ExternalDocs = new(tag.ExternalDocs); - Extensions = new Dictionary(tag.Extensions); - UnresolvedReference = tag.UnresolvedReference; - Reference = new(tag.Reference); + Name = tag?.Name; + Description = tag?.Description; + ExternalDocs = new(tag?.ExternalDocs); + Extensions = tag?.Extensions != null ? new Dictionary(tag?.Extensions) : tag?.Extensions; + UnresolvedReference = tag?.UnresolvedReference ?? false; + Reference = new(tag?.Reference); } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiXml.cs b/src/Microsoft.OpenApi/Models/OpenApiXml.cs index eb48132ad..19e231dea 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiXml.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiXml.cs @@ -56,12 +56,12 @@ public OpenApiXml() {} /// public OpenApiXml(OpenApiXml xml) { - Name = xml.Name; - Namespace = xml.Namespace; - Prefix = xml.Prefix; - Attribute = xml.Attribute; - Wrapped = xml.Wrapped; - Extensions = new Dictionary(xml.Extensions); + Name = xml?.Name; + Namespace = xml?.Namespace; + Prefix = xml?.Prefix; + Attribute = xml?.Attribute ?? false; + Wrapped = xml?.Wrapped ?? false; + Extensions = xml?.Extensions != null ? new Dictionary(xml?.Extensions) : xml?.Extensions; } /// diff --git a/src/Microsoft.OpenApi/Models/RuntimeExpressionAnyWrapper.cs b/src/Microsoft.OpenApi/Models/RuntimeExpressionAnyWrapper.cs index 85c64dd30..1a1f12a18 100644 --- a/src/Microsoft.OpenApi/Models/RuntimeExpressionAnyWrapper.cs +++ b/src/Microsoft.OpenApi/Models/RuntimeExpressionAnyWrapper.cs @@ -26,8 +26,8 @@ public RuntimeExpressionAnyWrapper() {} /// public RuntimeExpressionAnyWrapper(RuntimeExpressionAnyWrapper runtimeExpressionAnyWrapper) { - Any = OpenApiAnyCloneHelper.CloneFromCopyConstructor(runtimeExpressionAnyWrapper.Any); - Expression = runtimeExpressionAnyWrapper.Expression; + Any = OpenApiAnyCloneHelper.CloneFromCopyConstructor(runtimeExpressionAnyWrapper?.Any); + Expression = runtimeExpressionAnyWrapper?.Expression; } /// From 0eb6becf41ccc0adaae4da41804048c22b3e7952 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Fri, 12 Aug 2022 15:50:58 +0300 Subject: [PATCH 17/22] Defaults to false for bool property --- src/Microsoft.OpenApi/Models/OpenApiSchema.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs index 45d520b3a..8b073244c 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs @@ -288,7 +288,7 @@ public OpenApiSchema(OpenApiSchema schema) ExternalDocs = new(schema?.ExternalDocs); Deprecated = schema?.Deprecated ?? false; Xml = new(schema?.Xml); - UnresolvedReference = schema?.UnresolvedReference; + UnresolvedReference = schema?.UnresolvedReference ?? false; Reference = new(schema?.Reference); } From 9c5aa0059adc9a5d14c1488ccb310c3a6e3d6408 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Fri, 12 Aug 2022 16:07:02 +0300 Subject: [PATCH 18/22] Resort to default is enum value is null --- src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs b/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs index 1bc427e9a..8b85e4575 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs @@ -84,10 +84,10 @@ public OpenApiSecurityScheme() {} /// public OpenApiSecurityScheme(OpenApiSecurityScheme securityScheme) { - Type = (SecuritySchemeType)(securityScheme?.Type); + Type = securityScheme?.Type ?? default; Description = securityScheme?.Description; Name = securityScheme?.Name; - In = (ParameterLocation)(securityScheme?.In); + In = securityScheme?.In ?? default; Scheme = securityScheme?.Scheme; BearerFormat = securityScheme?.BearerFormat; Flows = new(securityScheme?.Flows); From 17dfe3c6fa32b634d846bf26b73f7d09fe800f21 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Fri, 12 Aug 2022 18:12:35 +0300 Subject: [PATCH 19/22] Address PR feedback --- .../Models/OpenApiCallback.cs | 8 +-- .../Models/OpenApiComponents.cs | 20 +++--- .../Models/OpenApiContact.cs | 8 +-- .../Models/OpenApiDiscriminator.cs | 4 +- .../Models/OpenApiDocument.cs | 18 ++--- .../Models/OpenApiEncoding.cs | 12 ++-- .../Models/OpenApiExample.cs | 12 ++-- .../Models/OpenApiExternalDocs.cs | 6 +- src/Microsoft.OpenApi/Models/OpenApiHeader.cs | 26 +++---- src/Microsoft.OpenApi/Models/OpenApiInfo.cs | 14 ++-- .../Models/OpenApiLicense.cs | 6 +- src/Microsoft.OpenApi/Models/OpenApiLink.cs | 18 ++--- .../Models/OpenApiMediaType.cs | 8 +-- .../Models/OpenApiOAuthFlow.cs | 10 +-- .../Models/OpenApiOAuthFlows.cs | 10 +-- .../Models/OpenApiOperation.cs | 22 +++--- .../Models/OpenApiParameter.cs | 30 ++++---- .../Models/OpenApiPathItem.cs | 16 ++--- .../Models/OpenApiRequestBody.cs | 12 ++-- .../Models/OpenApiResponse.cs | 14 ++-- src/Microsoft.OpenApi/Models/OpenApiSchema.cs | 70 +++++++++---------- .../Models/OpenApiSecurityScheme.cs | 22 +++--- src/Microsoft.OpenApi/Models/OpenApiServer.cs | 8 +-- src/Microsoft.OpenApi/Models/OpenApiTag.cs | 12 ++-- src/Microsoft.OpenApi/Models/OpenApiXml.cs | 12 ++-- 25 files changed, 199 insertions(+), 199 deletions(-) diff --git a/src/Microsoft.OpenApi/Models/OpenApiCallback.cs b/src/Microsoft.OpenApi/Models/OpenApiCallback.cs index beed0ad06..2dcae12d1 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiCallback.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiCallback.cs @@ -45,10 +45,10 @@ public OpenApiCallback() { } /// public OpenApiCallback(OpenApiCallback callback) { - PathItems = new(callback?.PathItems); - UnresolvedReference = callback?.UnresolvedReference ?? false; - Reference = new(callback?.Reference); - Extensions = callback?.Extensions != null ? new Dictionary(callback?.Extensions) : callback?.Extensions; + PathItems = callback?.PathItems != null ? new(callback?.PathItems) : null; + UnresolvedReference = callback?.UnresolvedReference ?? UnresolvedReference; + Reference = callback?.Reference != null ? new(callback?.Reference) : null; + Extensions = callback?.Extensions != null ? new Dictionary(callback.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiComponents.cs b/src/Microsoft.OpenApi/Models/OpenApiComponents.cs index 7e4a481ac..1f41080bc 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiComponents.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiComponents.cs @@ -78,16 +78,16 @@ public OpenApiComponents() { } /// public OpenApiComponents(OpenApiComponents components) { - Schemas = components?.Schemas != null ? new Dictionary(components?.Schemas) : components?.Schemas; - Responses = components?.Responses != null ? new Dictionary(components?.Responses) : components?.Responses; - Parameters = components?.Parameters != null ? new Dictionary(components?.Parameters) : components?.Parameters; - Examples = components?.Examples != null ? new Dictionary(components?.Examples) : components?.Examples; - RequestBodies = components?.RequestBodies != null ? new Dictionary(components?.RequestBodies) : components?.RequestBodies; - Headers = components?.Headers != null ? new Dictionary(components?.Headers) : components?.Headers; - SecuritySchemes = components?.SecuritySchemes != null ? new Dictionary(components?.SecuritySchemes) : components?.SecuritySchemes; - Links = components?.Links != null ? new Dictionary(components?.Links) : components?.Links; - Callbacks = components?.Callbacks != null ? new Dictionary(components?.Callbacks) : components?.Callbacks; - Extensions = components?.Extensions != null ? new Dictionary(components?.Extensions) : components?.Extensions; + Schemas = components?.Schemas != null ? new Dictionary(components.Schemas) : null; + Responses = components?.Responses != null ? new Dictionary(components.Responses) : null; + Parameters = components?.Parameters != null ? new Dictionary(components.Parameters) : null; + Examples = components?.Examples != null ? new Dictionary(components.Examples) : null; + RequestBodies = components?.RequestBodies != null ? new Dictionary(components.RequestBodies) : null; + Headers = components?.Headers != null ? new Dictionary(components.Headers) : null; + SecuritySchemes = components?.SecuritySchemes != null ? new Dictionary(components.SecuritySchemes) : null; + Links = components?.Links != null ? new Dictionary(components.Links) : null; + Callbacks = components?.Callbacks != null ? new Dictionary(components.Callbacks) : null; + Extensions = components?.Extensions != null ? new Dictionary(components.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiContact.cs b/src/Microsoft.OpenApi/Models/OpenApiContact.cs index 28001e928..352697bf2 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiContact.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiContact.cs @@ -45,10 +45,10 @@ public OpenApiContact() { } /// public OpenApiContact(OpenApiContact contact) { - Name = contact?.Name; - Url = contact?.Url; - Email = contact?.Email; - Extensions = contact?.Extensions != null ? new Dictionary(contact?.Extensions) : contact?.Extensions; + Name = contact?.Name ?? Name; + Url = contact?.Url != null ? new Uri(contact.Url.OriginalString) : null; + Email = contact?.Email ?? Email; + Extensions = contact?.Extensions != null ? new Dictionary(contact.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs b/src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs index f39819a0a..9ae7f0e6a 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs @@ -32,8 +32,8 @@ public OpenApiDiscriminator() { } /// public OpenApiDiscriminator(OpenApiDiscriminator discriminator) { - PropertyName = discriminator?.PropertyName; - Mapping = discriminator?.Mapping != null ? new Dictionary(discriminator?.Mapping) : discriminator?.Mapping; + PropertyName = discriminator?.PropertyName ?? PropertyName; + Mapping = discriminator?.Mapping != null ? new Dictionary(discriminator.Mapping) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs index 21c5f2e53..01edcebba 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs @@ -72,15 +72,15 @@ public OpenApiDocument() {} /// public OpenApiDocument(OpenApiDocument document) { - Workspace = new(document?.Workspace); - Info = new(document?.Info); - Servers = document?.Servers != null ? new List(document?.Servers) : document?.Servers; - Paths = new(document?.Paths); - Components = new(document?.Components); - SecurityRequirements = document?.SecurityRequirements != null ? new List(document?.SecurityRequirements) : document?.SecurityRequirements; - Tags = document?.Tags != null ? new List(document?.Tags) : document?.Tags; - ExternalDocs = new(document?.ExternalDocs); - Extensions = document?.Extensions != null ? new Dictionary(document?.Extensions) : document?.Extensions; + Workspace = document?.Workspace != null ? new(document?.Workspace) : null; + Info = document?.Info != null ? new(document?.Info) : null; + Servers = document?.Servers != null ? new List(document.Servers) : null; + Paths = document?.Paths != null ? new(document?.Paths) : null; + Components = document?.Components != null ? new(document?.Components) : null; + SecurityRequirements = document?.SecurityRequirements != null ? new List(document.SecurityRequirements) : null; + Tags = document?.Tags != null ? new List(document.Tags) : null; + ExternalDocs = document?.ExternalDocs != null ? new(document?.ExternalDocs) : null; + Extensions = document?.Extensions != null ? new Dictionary(document.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs b/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs index bc154e8fb..ddb4162bc 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs @@ -63,12 +63,12 @@ public OpenApiEncoding() {} /// public OpenApiEncoding(OpenApiEncoding encoding) { - ContentType = encoding?.ContentType; - Headers = encoding?.Headers != null ? new Dictionary(encoding?.Headers) : encoding?.Headers; - Style = encoding?.Style; - Explode = encoding?.Explode ?? false; - AllowReserved = encoding?.AllowReserved ?? false; - Extensions = encoding?.Extensions != null ? new Dictionary(encoding?.Extensions) : encoding?.Extensions; + ContentType = encoding?.ContentType ?? ContentType; + Headers = encoding?.Headers != null ? new Dictionary(encoding.Headers) : null; + Style = encoding?.Style ?? Style; + Explode = encoding?.Explode ?? Explode; + AllowReserved = encoding?.AllowReserved ?? AllowReserved; + Extensions = encoding?.Extensions != null ? new Dictionary(encoding.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiExample.cs b/src/Microsoft.OpenApi/Models/OpenApiExample.cs index b9bfc031a..4d091a361 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiExample.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiExample.cs @@ -64,13 +64,13 @@ public OpenApiExample() {} /// public OpenApiExample(OpenApiExample example) { - Summary = example?.Summary; - Description = example?.Description; + Summary = example?.Summary ?? Summary; + Description = example?.Description ?? Description; Value = OpenApiAnyCloneHelper.CloneFromCopyConstructor(example?.Value); - ExternalValue = example?.ExternalValue; - Extensions = example?.Extensions != null ? new Dictionary(example?.Extensions) : example?.Extensions; - Reference = new(example?.Reference); - UnresolvedReference = example?.UnresolvedReference ?? false; + ExternalValue = example?.ExternalValue ?? ExternalValue; + Extensions = example?.Extensions != null ? new Dictionary(example.Extensions) : null; + Reference = example?.Reference != null ? new(example?.Reference) : null; + UnresolvedReference = example?.UnresolvedReference ?? UnresolvedReference; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs b/src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs index 040b7d674..9ad3b9e55 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs @@ -39,9 +39,9 @@ public OpenApiExternalDocs() {} /// public OpenApiExternalDocs(OpenApiExternalDocs externalDocs) { - Description = externalDocs?.Description; - Url = externalDocs?.Url != null ? new Uri(externalDocs?.Url?.OriginalString) : externalDocs?.Url; - Extensions = externalDocs?.Extensions != null ? new Dictionary(externalDocs?.Extensions) : externalDocs?.Extensions; + Description = externalDocs?.Description ?? Description; + Url = externalDocs?.Url != null ? new Uri(externalDocs.Url.OriginalString) : null; + Extensions = externalDocs?.Extensions != null ? new Dictionary(externalDocs.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiHeader.cs b/src/Microsoft.OpenApi/Models/OpenApiHeader.cs index a7ca745d2..fb4411478 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiHeader.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiHeader.cs @@ -96,20 +96,20 @@ public OpenApiHeader() {} /// public OpenApiHeader(OpenApiHeader header) { - UnresolvedReference = header?.UnresolvedReference ?? false; - Reference = new(header?.Reference); - Description = header?.Description; - Required = header?.Required ?? false; - Deprecated = header?.Deprecated ?? false; - AllowEmptyValue = header?.AllowEmptyValue ?? false; - Style = header?.Style; - Explode = header?.Explode ?? false; - AllowReserved = header?.AllowReserved ?? false; - Schema = new(header?.Schema); + UnresolvedReference = header?.UnresolvedReference ?? UnresolvedReference; + Reference = header?.Reference != null ? new(header?.Reference) : null; + Description = header?.Description ?? Description; + Required = header?.Required ?? Required; + Deprecated = header?.Deprecated ?? Deprecated; + AllowEmptyValue = header?.AllowEmptyValue ?? AllowEmptyValue; + Style = header?.Style ?? Style; + Explode = header?.Explode ?? Explode; + AllowReserved = header?.AllowReserved ?? AllowReserved; + Schema = header?.Schema != null ? new(header?.Schema) : null; Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(header?.Example); - Examples = header?.Examples != null ? new Dictionary(header?.Examples) : header?.Examples; - Content = header?.Content != null ? new Dictionary(header?.Content) : header?.Content; - Extensions = header?.Extensions != null ? new Dictionary(header?.Extensions) : header?.Extensions; + Examples = header?.Examples != null ? new Dictionary(header.Examples) : null; + Content = header?.Content != null ? new Dictionary(header.Content) : null; + Extensions = header?.Extensions != null ? new Dictionary(header.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiInfo.cs b/src/Microsoft.OpenApi/Models/OpenApiInfo.cs index 1dcae81e2..df0aa0a49 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiInfo.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiInfo.cs @@ -59,13 +59,13 @@ public OpenApiInfo() {} /// public OpenApiInfo(OpenApiInfo info) { - Title = info?.Title; - Description = info?.Description; - Version = info?.Version; - TermsOfService = info?.TermsOfService; - Contact = new(info?.Contact); - License = new(info?.License); - Extensions = info?.Extensions != null ? new Dictionary(info?.Extensions) : info?.Extensions; + Title = info?.Title ?? Title; + Description = info?.Description ?? Description; + Version = info?.Version ?? Version; + TermsOfService = info?.TermsOfService ?? TermsOfService; + Contact = info?.Contact != null ? new(info?.Contact) : null; + License = info?.License != null ? new(info?.License) : null; + Extensions = info?.Extensions != null ? new Dictionary(info.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiLicense.cs b/src/Microsoft.OpenApi/Models/OpenApiLicense.cs index 399441b46..1a8d1a4d8 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiLicense.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiLicense.cs @@ -39,9 +39,9 @@ public OpenApiLicense() {} /// public OpenApiLicense(OpenApiLicense license) { - Name = license?.Name; - Url = license?.Url != null ? new Uri(license?.Url?.OriginalString) : license?.Url; - Extensions = license?.Extensions != null ? new Dictionary(license?.Extensions) : license?.Extensions; + Name = license?.Name ?? Name; + Url = license?.Url != null ? new Uri(license.Url.OriginalString) : null; + Extensions = license?.Extensions != null ? new Dictionary(license.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiLink.cs b/src/Microsoft.OpenApi/Models/OpenApiLink.cs index 3a5a72c1d..b682744e9 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiLink.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiLink.cs @@ -71,15 +71,15 @@ public OpenApiLink() {} /// public OpenApiLink(OpenApiLink link) { - OperationRef = link?.OperationRef; - OperationId = link?.OperationId; - Parameters = new(link?.Parameters); - RequestBody = new(link?.RequestBody); - Description = link?.Description; - Server = new(link?.Server); - Extensions = link?.Extensions != null ? new Dictionary(link?.Extensions) : link?.Extensions; - UnresolvedReference = link?.UnresolvedReference ?? false; - Reference = new(link?.Reference); + OperationRef = link?.OperationRef ?? OperationRef; + OperationId = link?.OperationId ?? OperationId; + Parameters = link?.Parameters != null ? new(link?.Parameters) : null; + RequestBody = link?.RequestBody != null ? new(link?.RequestBody) : null; + Description = link?.Description ?? Description; + Server = link?.Server != null ? new(link?.Server) : null; + Extensions = link?.Extensions != null ? new Dictionary(link.Extensions) : null; + UnresolvedReference = link?.UnresolvedReference ?? UnresolvedReference; + Reference = link?.Reference != null ? new(link?.Reference) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs b/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs index b6245f202..63a58cd02 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs @@ -53,11 +53,11 @@ public OpenApiMediaType() {} /// public OpenApiMediaType(OpenApiMediaType mediaType) { - Schema = new(mediaType?.Schema); + Schema = mediaType?.Schema != null ? new(mediaType?.Schema) : null; Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(mediaType?.Example); - Examples = mediaType?.Examples != null ? new Dictionary(mediaType?.Examples) : mediaType?.Examples; - Encoding = mediaType?.Encoding != null ? new Dictionary(mediaType?.Encoding) : mediaType?.Encoding; - Extensions = mediaType?.Extensions != null ? new Dictionary(mediaType?.Extensions) : mediaType?.Extensions; + Examples = mediaType?.Examples != null ? new Dictionary(mediaType.Examples) : null; + Encoding = mediaType?.Encoding != null ? new Dictionary(mediaType.Encoding) : null; + Extensions = mediaType?.Extensions != null ? new Dictionary(mediaType.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs index f5a9b46c4..c6f91fbd8 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlow.cs @@ -51,11 +51,11 @@ public OpenApiOAuthFlow() {} /// public OpenApiOAuthFlow(OpenApiOAuthFlow oAuthFlow) { - AuthorizationUrl = oAuthFlow?.AuthorizationUrl != null ? new Uri(oAuthFlow?.AuthorizationUrl?.OriginalString) : oAuthFlow?.AuthorizationUrl; - TokenUrl = oAuthFlow?.TokenUrl != null ? new Uri(oAuthFlow?.TokenUrl?.OriginalString) : oAuthFlow?.TokenUrl; - RefreshUrl = oAuthFlow?.RefreshUrl != null ? new Uri(oAuthFlow?.RefreshUrl?.OriginalString) : oAuthFlow?.RefreshUrl; - Scopes = oAuthFlow?.Scopes != null ? new Dictionary(oAuthFlow?.Scopes) : oAuthFlow?.Scopes; - Extensions = oAuthFlow?.Extensions != null ? new Dictionary(oAuthFlow?.Extensions) : oAuthFlow?.Extensions; + AuthorizationUrl = oAuthFlow?.AuthorizationUrl != null ? new Uri(oAuthFlow.AuthorizationUrl.OriginalString) : null; + TokenUrl = oAuthFlow?.TokenUrl != null ? new Uri(oAuthFlow.TokenUrl.OriginalString) : null; + RefreshUrl = oAuthFlow?.RefreshUrl != null ? new Uri(oAuthFlow.RefreshUrl.OriginalString) : null; + Scopes = oAuthFlow?.Scopes != null ? new Dictionary(oAuthFlow.Scopes) : null; + Extensions = oAuthFlow?.Extensions != null ? new Dictionary(oAuthFlow.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs index d286c7641..8443e6730 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiOAuthFlows.cs @@ -49,11 +49,11 @@ public OpenApiOAuthFlows() {} /// public OpenApiOAuthFlows(OpenApiOAuthFlows oAuthFlows) { - Implicit = new(oAuthFlows?.Implicit); - Password = new(oAuthFlows?.Password); - ClientCredentials = new(oAuthFlows?.ClientCredentials); - AuthorizationCode = new(oAuthFlows?.AuthorizationCode); - Extensions = oAuthFlows?.Extensions != null ? new Dictionary(oAuthFlows?.Extensions) : oAuthFlows?.Extensions; + Implicit = oAuthFlows?.Implicit != null ? new(oAuthFlows?.Implicit) : null; + Password = oAuthFlows?.Password != null ? new(oAuthFlows?.Password) : null; + ClientCredentials = oAuthFlows?.ClientCredentials != null ? new(oAuthFlows?.ClientCredentials) : null; + AuthorizationCode = oAuthFlows?.AuthorizationCode != null ? new(oAuthFlows?.AuthorizationCode) : null; + Extensions = oAuthFlows?.Extensions != null ? new Dictionary(oAuthFlows.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiOperation.cs b/src/Microsoft.OpenApi/Models/OpenApiOperation.cs index e7f8b8910..ba0af7317 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiOperation.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiOperation.cs @@ -117,18 +117,18 @@ public OpenApiOperation() {} public OpenApiOperation(OpenApiOperation operation) { Tags = new List(operation?.Tags); - Summary = operation?.Summary; - Description = operation?.Description; - ExternalDocs = new(operation?.ExternalDocs); - OperationId = operation?.OperationId; - Parameters = operation?.Parameters != null ? new List(operation?.Parameters) : operation?.Parameters; + Summary = operation?.Summary ?? Summary; + Description = operation?.Description ?? Description; + ExternalDocs = operation?.ExternalDocs != null ? new(operation?.ExternalDocs) : null; + OperationId = operation?.OperationId ?? OperationId; + Parameters = operation?.Parameters != null ? new List(operation.Parameters) : null; RequestBody = new(operation?.RequestBody); - Responses = new(operation?.Responses); - Callbacks = operation?.Callbacks != null ? new Dictionary(operation?.Callbacks) : operation?.Callbacks; - Deprecated = operation?.Deprecated ?? false; - Security = operation?.Security != null ? new List(operation?.Security) : operation?.Security; - Servers = operation?.Servers != null ? new List(operation?.Servers) : operation?.Servers; - Extensions = operation?.Extensions != null ? new Dictionary(operation?.Extensions) : operation?.Extensions; + Responses = operation?.Responses != null ? new(operation?.Responses) : null; + Callbacks = operation?.Callbacks != null ? new Dictionary(operation.Callbacks) : null; + Deprecated = operation?.Deprecated ?? Deprecated; + Security = operation?.Security != null ? new List(operation.Security) : null; + Servers = operation?.Servers != null ? new List(operation.Servers) : null; + Extensions = operation?.Extensions != null ? new Dictionary(operation.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiParameter.cs b/src/Microsoft.OpenApi/Models/OpenApiParameter.cs index 7a429ef0a..c6f06b1f6 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiParameter.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiParameter.cs @@ -146,22 +146,22 @@ public OpenApiParameter() {} /// public OpenApiParameter(OpenApiParameter parameter) { - UnresolvedReference = parameter?.UnresolvedReference ?? false; - Reference = new(parameter?.Reference); - Name = parameter?.Name; - In = parameter?.In; - Description = parameter?.Description; - Required = parameter?.Required ?? false; - Style = parameter?.Style; - Explode = parameter?.Explode ?? false; - AllowReserved = parameter?.AllowReserved ?? false; - Schema = new(parameter?.Schema); - Examples = parameter?.Examples != null ? new Dictionary(parameter?.Examples) : parameter?.Examples; + UnresolvedReference = parameter?.UnresolvedReference ?? UnresolvedReference; + Reference = parameter?.Reference != null ? new(parameter?.Reference) : null; + Name = parameter?.Name ?? Name; + In = parameter?.In ?? In; + Description = parameter?.Description ?? Description; + Required = parameter?.Required ?? Required; + Style = parameter?.Style ?? Style; + Explode = parameter?.Explode ?? Explode; + AllowReserved = parameter?.AllowReserved ?? AllowReserved; + Schema = parameter?.Schema != null ? new(parameter?.Schema) : null; + Examples = parameter?.Examples != null ? new Dictionary(parameter.Examples) : null; Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(parameter?.Example); - Content = parameter?.Content != null ? new Dictionary(parameter?.Content) : parameter?.Content; - Extensions = parameter?.Extensions != null ? new Dictionary(parameter?.Extensions) : parameter?.Extensions; - AllowEmptyValue = parameter?.AllowEmptyValue ?? false; - Deprecated = parameter?.Deprecated ?? false; + Content = parameter?.Content != null ? new Dictionary(parameter.Content) : null; + Extensions = parameter?.Extensions != null ? new Dictionary(parameter.Extensions) : null; + AllowEmptyValue = parameter?.AllowEmptyValue ?? AllowEmptyValue; + Deprecated = parameter?.Deprecated ?? Deprecated; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiPathItem.cs b/src/Microsoft.OpenApi/Models/OpenApiPathItem.cs index 89313be87..ddd358dc2 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiPathItem.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiPathItem.cs @@ -75,14 +75,14 @@ public OpenApiPathItem() {} /// public OpenApiPathItem(OpenApiPathItem pathItem) { - Summary = pathItem?.Summary; - Description = pathItem?.Description; - Operations = pathItem?.Operations != null ? new Dictionary(pathItem?.Operations) : pathItem?.Operations; - Servers = pathItem?.Servers != null ? new List(pathItem?.Servers) : pathItem?.Servers; - Parameters = pathItem?.Parameters != null ? new List(pathItem?.Parameters) : pathItem?.Parameters; - Extensions = pathItem?.Extensions != null ? new Dictionary(pathItem?.Extensions) : pathItem?.Extensions; - UnresolvedReference = pathItem?.UnresolvedReference ?? false; - Reference = new(pathItem?.Reference); + Summary = pathItem?.Summary ?? Summary; + Description = pathItem?.Description ?? Description; + Operations = pathItem?.Operations != null ? new Dictionary(pathItem.Operations) : null; + Servers = pathItem?.Servers != null ? new List(pathItem.Servers) : null; + Parameters = pathItem?.Parameters != null ? new List(pathItem.Parameters) : null; + Extensions = pathItem?.Extensions != null ? new Dictionary(pathItem.Extensions) : null; + UnresolvedReference = pathItem?.UnresolvedReference ?? UnresolvedReference; + Reference = pathItem?.Reference != null ? new(pathItem?.Reference) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs b/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs index 6e7bdaf77..9016fd7a3 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiRequestBody.cs @@ -55,12 +55,12 @@ public OpenApiRequestBody() { } /// public OpenApiRequestBody(OpenApiRequestBody requestBody) { - UnresolvedReference = requestBody?.UnresolvedReference ?? false; - Reference = new(requestBody?.Reference); - Description = requestBody?.Description; - Required = requestBody?.Required ?? false; - Content = requestBody?.Content != null ? new Dictionary(requestBody?.Content) : requestBody?.Content; - Extensions = requestBody?.Extensions != null ? new Dictionary(requestBody?.Extensions) : requestBody?.Extensions; + UnresolvedReference = requestBody?.UnresolvedReference ?? UnresolvedReference; + Reference = requestBody?.Reference != null ? new(requestBody?.Reference) : null; + Description = requestBody?.Description ?? Description; + Required = requestBody?.Required ?? Required; + Content = requestBody?.Content != null ? new Dictionary(requestBody.Content) : null; + Extensions = requestBody?.Extensions != null ? new Dictionary(requestBody.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiResponse.cs b/src/Microsoft.OpenApi/Models/OpenApiResponse.cs index 46b7b63b0..a173f6c1a 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiResponse.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiResponse.cs @@ -61,13 +61,13 @@ public OpenApiResponse() {} /// public OpenApiResponse(OpenApiResponse response) { - Description = response?.Description; - Headers = response?.Headers != null ? new Dictionary(response?.Headers) : response?.Headers; - Content = response?.Content != null ? new Dictionary(response?.Content) : response?.Content; - Links = response?.Links != null ? new Dictionary(response?.Links) : response?.Links; - Extensions = response?.Extensions != null ? new Dictionary(response?.Extensions) : response?.Extensions; - UnresolvedReference = response?.UnresolvedReference ?? false; - Reference = new(response?.Reference); + Description = response?.Description ?? Description; + Headers = response?.Headers != null ? new Dictionary(response.Headers) : null; + Content = response?.Content != null ? new Dictionary(response.Content) : null; + Links = response?.Links != null ? new Dictionary(response.Links) : null; + Extensions = response?.Extensions != null ? new Dictionary(response.Extensions) : null; + UnresolvedReference = response?.UnresolvedReference ?? UnresolvedReference; + Reference = response?.Reference != null ? new(response?.Reference) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs index 8b073244c..3886a5555 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs @@ -252,44 +252,44 @@ public OpenApiSchema() {} /// public OpenApiSchema(OpenApiSchema schema) { - Title = schema?.Title; - Type = schema?.Type; - Format = schema?.Format; - Description = schema?.Description; - Maximum = schema?.Maximum; - ExclusiveMaximum = schema?.ExclusiveMaximum; - Minimum = schema?.Minimum; - ExclusiveMinimum = schema?.ExclusiveMinimum; - MaxLength = schema?.MaxLength; - MinLength = schema?.MinLength; - Pattern = schema?.Pattern; - MultipleOf = schema?.MultipleOf; + Title = schema?.Title ?? Title; + Type = schema?.Type ?? Type; + Format = schema?.Format ?? Format; + Description = schema?.Description ?? Description; + Maximum = schema?.Maximum ?? Maximum; + ExclusiveMaximum = schema?.ExclusiveMaximum ?? ExclusiveMaximum; + Minimum = schema?.Minimum ?? Minimum; + ExclusiveMinimum = schema?.ExclusiveMinimum ?? ExclusiveMinimum; + MaxLength = schema?.MaxLength ?? MaxLength; + MinLength = schema?.MinLength ?? MinLength; + Pattern = schema?.Pattern ?? Pattern; + MultipleOf = schema?.MultipleOf ?? MultipleOf; Default = OpenApiAnyCloneHelper.CloneFromCopyConstructor(schema?.Default); - ReadOnly = schema?.ReadOnly ?? false; - WriteOnly = schema?.WriteOnly ?? false; - AllOf = schema?.AllOf != null ? new List(schema?.AllOf) : schema?.AllOf; - OneOf = schema?.OneOf != null ? new List(schema?.OneOf) : schema?.OneOf; - AnyOf = schema?.AnyOf != null ? new List(schema?.AnyOf) : schema?.AnyOf; - Not = new(schema?.Not); - Required = schema?.Required != null ? new HashSet(schema?.Required) : schema?.Required; - Items = new(schema?.Items); - MaxItems = schema?.MaxItems; - MinItems = schema?.MinItems; - UniqueItems = schema?.UniqueItems; - Properties = schema?.Properties != null ? new Dictionary(schema?.Properties) : schema?.Properties; - MaxProperties = schema?.MaxProperties; - MinProperties = schema?.MinProperties; - AdditionalPropertiesAllowed = schema?.AdditionalPropertiesAllowed ?? false; + ReadOnly = schema?.ReadOnly ?? ReadOnly; + WriteOnly = schema?.WriteOnly ?? WriteOnly; + AllOf = schema?.AllOf != null ? new List(schema.AllOf) : null; + OneOf = schema?.OneOf != null ? new List(schema.OneOf) : null; + AnyOf = schema?.AnyOf != null ? new List(schema.AnyOf) : null; + Not = schema?.Not != null ? new(schema?.Not) : null; + Required = schema?.Required != null ? new HashSet(schema.Required) : null; + Items = schema?.Items != null ? new(schema?.Items) : null; + MaxItems = schema?.MaxItems ?? MaxItems; + MinItems = schema?.MinItems ?? MinItems; + UniqueItems = schema?.UniqueItems ?? UniqueItems; + Properties = schema?.Properties != null ? new Dictionary(schema.Properties) : null; + MaxProperties = schema?.MaxProperties ?? MaxProperties; + MinProperties = schema?.MinProperties ?? MinProperties; + AdditionalPropertiesAllowed = schema?.AdditionalPropertiesAllowed ?? AdditionalPropertiesAllowed; AdditionalProperties = new(schema?.AdditionalProperties); - Discriminator = new(schema?.Discriminator); + Discriminator = schema?.Discriminator != null ? new(schema?.Discriminator) : null; Example = OpenApiAnyCloneHelper.CloneFromCopyConstructor(schema?.Example); - Enum = schema?.Enum != null ? new List(schema?.Enum) : schema?.Enum; - Nullable = schema?.Nullable ?? false; - ExternalDocs = new(schema?.ExternalDocs); - Deprecated = schema?.Deprecated ?? false; - Xml = new(schema?.Xml); - UnresolvedReference = schema?.UnresolvedReference ?? false; - Reference = new(schema?.Reference); + Enum = schema?.Enum != null ? new List(schema.Enum) : null; + Nullable = schema?.Nullable ?? Nullable; + ExternalDocs = schema?.ExternalDocs != null ? new(schema?.ExternalDocs) : null; + Deprecated = schema?.Deprecated ?? Deprecated; + Xml = schema?.Xml != null ? new(schema?.Xml) : null; + UnresolvedReference = schema?.UnresolvedReference ?? UnresolvedReference; + Reference = schema?.Reference != null ? new(schema?.Reference) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs b/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs index 8b85e4575..913e70441 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSecurityScheme.cs @@ -84,17 +84,17 @@ public OpenApiSecurityScheme() {} /// public OpenApiSecurityScheme(OpenApiSecurityScheme securityScheme) { - Type = securityScheme?.Type ?? default; - Description = securityScheme?.Description; - Name = securityScheme?.Name; - In = securityScheme?.In ?? default; - Scheme = securityScheme?.Scheme; - BearerFormat = securityScheme?.BearerFormat; - Flows = new(securityScheme?.Flows); - OpenIdConnectUrl = new Uri(securityScheme?.OpenIdConnectUrl?.OriginalString); - Extensions = securityScheme?.Extensions != null ? new Dictionary(securityScheme?.Extensions) : securityScheme?.Extensions; - UnresolvedReference = securityScheme?.UnresolvedReference ?? false; - Reference = new(securityScheme?.Reference); + Type = securityScheme?.Type ?? Type; + Description = securityScheme?.Description ?? Description; + Name = securityScheme?.Name ?? Name; + In = securityScheme?.In ?? In; + Scheme = securityScheme?.Scheme ?? Scheme; + BearerFormat = securityScheme?.BearerFormat ?? BearerFormat; + Flows = securityScheme?.Flows != null ? new(securityScheme?.Flows) : null; + OpenIdConnectUrl = securityScheme?.OpenIdConnectUrl != null ? new Uri(securityScheme.OpenIdConnectUrl.OriginalString) : null; + Extensions = securityScheme?.Extensions != null ? new Dictionary(securityScheme.Extensions) : null; + UnresolvedReference = securityScheme?.UnresolvedReference ?? UnresolvedReference; + Reference = securityScheme?.Reference != null ? new(securityScheme?.Reference) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiServer.cs b/src/Microsoft.OpenApi/Models/OpenApiServer.cs index c0ec7114a..b3b1d1287 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiServer.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiServer.cs @@ -46,10 +46,10 @@ public OpenApiServer() {} /// public OpenApiServer(OpenApiServer server) { - Description = server?.Description; - Url = server?.Url; - Variables = server?.Variables != null ? new Dictionary(server?.Variables) : server?.Variables; - Extensions = server?.Extensions != null ? new Dictionary(server?.Extensions) : server?.Extensions; + Description = server?.Description ?? Description; + Url = server?.Url ?? Url; + Variables = server?.Variables != null ? new Dictionary(server.Variables) : null; + Extensions = server?.Extensions != null ? new Dictionary(server.Extensions) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiTag.cs b/src/Microsoft.OpenApi/Models/OpenApiTag.cs index 4e3785d4e..ba4129142 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiTag.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiTag.cs @@ -53,12 +53,12 @@ public OpenApiTag() {} /// public OpenApiTag(OpenApiTag tag) { - Name = tag?.Name; - Description = tag?.Description; - ExternalDocs = new(tag?.ExternalDocs); - Extensions = tag?.Extensions != null ? new Dictionary(tag?.Extensions) : tag?.Extensions; - UnresolvedReference = tag?.UnresolvedReference ?? false; - Reference = new(tag?.Reference); + Name = tag?.Name ?? Name; + Description = tag?.Description ?? Description; + ExternalDocs = tag?.ExternalDocs != null ? new(tag?.ExternalDocs) : null; + Extensions = tag?.Extensions != null ? new Dictionary(tag.Extensions) : null; + UnresolvedReference = tag?.UnresolvedReference ?? UnresolvedReference; + Reference = tag?.Reference != null ? new(tag?.Reference) : null; } /// diff --git a/src/Microsoft.OpenApi/Models/OpenApiXml.cs b/src/Microsoft.OpenApi/Models/OpenApiXml.cs index 19e231dea..c6719d85e 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiXml.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiXml.cs @@ -56,12 +56,12 @@ public OpenApiXml() {} /// public OpenApiXml(OpenApiXml xml) { - Name = xml?.Name; - Namespace = xml?.Namespace; - Prefix = xml?.Prefix; - Attribute = xml?.Attribute ?? false; - Wrapped = xml?.Wrapped ?? false; - Extensions = xml?.Extensions != null ? new Dictionary(xml?.Extensions) : xml?.Extensions; + Name = xml?.Name ?? Name; + Namespace = xml?.Namespace ?? Namespace; + Prefix = xml?.Prefix ?? Prefix; + Attribute = xml?.Attribute ?? Attribute; + Wrapped = xml?.Wrapped ?? Wrapped; + Extensions = xml?.Extensions != null ? new Dictionary(xml.Extensions) : null; } /// From cefe10d380ef5b1afafa1b44a82d6950fb996cca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Aug 2022 21:11:30 +0000 Subject: [PATCH 20/22] Bump Microsoft.OData.Edm from 7.12.1 to 7.12.2 Bumps Microsoft.OData.Edm from 7.12.1 to 7.12.2. --- updated-dependencies: - dependency-name: Microsoft.OData.Edm dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index c35c40209..eda11732d 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -42,7 +42,7 @@ - + From afdc0a430011c2ce3f9ae157aadc34b60610eaa6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Aug 2022 21:11:35 +0000 Subject: [PATCH 21/22] Bump Verify.Xunit from 17.8.1 to 17.9.0 Bumps [Verify.Xunit](https://github.com/VerifyTests/Verify) from 17.8.1 to 17.9.0. - [Release notes](https://github.com/VerifyTests/Verify/releases) - [Commits](https://github.com/VerifyTests/Verify/compare/17.8.1...17.9.0) --- updated-dependencies: - dependency-name: Verify.Xunit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj index 1d8d8c45b..022b0e5dc 100644 --- a/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj +++ b/test/Microsoft.OpenApi.Tests/Microsoft.OpenApi.Tests.csproj @@ -20,7 +20,7 @@ - + all From 387e7f3d0acea98ddab11f4cf3bd53e9b68b9234 Mon Sep 17 00:00:00 2001 From: Maggie Kimani Date: Mon, 15 Aug 2022 12:42:27 +0300 Subject: [PATCH 22/22] Bumps up lib versions --- src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj | 2 +- src/Microsoft.OpenApi/Microsoft.OpenApi.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj index 1ff5b99e9..c92eaf766 100644 --- a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj +++ b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj @@ -10,7 +10,7 @@ Microsoft Microsoft.OpenApi.Readers Microsoft.OpenApi.Readers - 1.4.0-preview1 + 1.4.0-preview2 OpenAPI.NET Readers for JSON and YAML documents © Microsoft Corporation. All rights reserved. OpenAPI .NET diff --git a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj index a11622ec1..a768312e6 100644 --- a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj +++ b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj @@ -11,7 +11,7 @@ Microsoft Microsoft.OpenApi Microsoft.OpenApi - 1.4.0-preview1 + 1.4.0-preview2 .NET models with JSON and YAML writers for OpenAPI specification © Microsoft Corporation. All rights reserved. OpenAPI .NET