From 48685d312a1f13077d90a655df83c92d66f7ce17 Mon Sep 17 00:00:00 2001 From: David Cumps Date: Wed, 24 Jun 2020 23:07:54 +0200 Subject: [PATCH 1/3] make default parameter overloads binary compatible --- .../OpenApiSerializableExtensions.cs | 21 ++++++++++++++++++- .../Writers/OpenApiJsonWriter.cs | 10 ++++++++- .../Writers/OpenApiWriterBase.cs | 1 - .../Writers/OpenApiYamlWriter.cs | 11 ++++++++-- 4 files changed, 38 insertions(+), 5 deletions(-) mode change 100644 => 100755 src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs mode change 100644 => 100755 src/Microsoft.OpenApi/Writers/OpenApiJsonWriter.cs mode change 100644 => 100755 src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs mode change 100644 => 100755 src/Microsoft.OpenApi/Writers/OpenApiYamlWriter.cs diff --git a/src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs b/src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs old mode 100644 new mode 100755 index e14c98340..4694692ad --- a/src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs +++ b/src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs @@ -41,6 +41,25 @@ public static void SerializeAsYaml(this T element, Stream stream, OpenApiSpec element.Serialize(stream, specVersion, OpenApiFormat.Yaml); } + /// + /// Serializes the to the Open API document using + /// the given stream, specification version and the format. + /// + /// the + /// The Open API element. + /// The given stream. + /// The Open API specification version. + /// The output format (JSON or YAML). + public static void Serialize( + this T element, + Stream stream, + OpenApiSpecVersion specVersion, + OpenApiFormat format) + where T : IOpenApiSerializable + { + element.Serialize(stream, specVersion, format, null); + } + /// /// Serializes the to the Open API document using /// the given stream, specification version and the format. @@ -56,7 +75,7 @@ public static void Serialize( Stream stream, OpenApiSpecVersion specVersion, OpenApiFormat format, - OpenApiWriterSettings settings = null) + OpenApiWriterSettings settings) where T : IOpenApiSerializable { if (stream == null) diff --git a/src/Microsoft.OpenApi/Writers/OpenApiJsonWriter.cs b/src/Microsoft.OpenApi/Writers/OpenApiJsonWriter.cs old mode 100644 new mode 100755 index e4c3baa3c..72e74a51e --- a/src/Microsoft.OpenApi/Writers/OpenApiJsonWriter.cs +++ b/src/Microsoft.OpenApi/Writers/OpenApiJsonWriter.cs @@ -10,12 +10,20 @@ namespace Microsoft.OpenApi.Writers /// public class OpenApiJsonWriter : OpenApiWriterBase { + /// + /// Initializes a new instance of the class. + /// + /// The text writer. + public OpenApiJsonWriter(TextWriter textWriter) : base(textWriter, null) + { + } + /// /// Initializes a new instance of the class. /// /// The text writer. /// Settings for controlling how the OpenAPI document will be written out. - public OpenApiJsonWriter(TextWriter textWriter, OpenApiWriterSettings settings = null) : base(textWriter, settings) + public OpenApiJsonWriter(TextWriter textWriter, OpenApiWriterSettings settings) : base(textWriter, settings) { } diff --git a/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs b/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs old mode 100644 new mode 100755 index bcbec6b47..6daec8b1d --- a/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs +++ b/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; using System.IO; using Microsoft.OpenApi.Exceptions; -using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Properties; namespace Microsoft.OpenApi.Writers diff --git a/src/Microsoft.OpenApi/Writers/OpenApiYamlWriter.cs b/src/Microsoft.OpenApi/Writers/OpenApiYamlWriter.cs old mode 100644 new mode 100755 index ee7543b93..2806d3d64 --- a/src/Microsoft.OpenApi/Writers/OpenApiYamlWriter.cs +++ b/src/Microsoft.OpenApi/Writers/OpenApiYamlWriter.cs @@ -10,14 +10,21 @@ namespace Microsoft.OpenApi.Writers /// public class OpenApiYamlWriter : OpenApiWriterBase { + /// + /// Initializes a new instance of the class. + /// + /// The text writer. + public OpenApiYamlWriter(TextWriter textWriter) : this(textWriter, null) + { + } + /// /// Initializes a new instance of the class. /// /// The text writer. /// - public OpenApiYamlWriter(TextWriter textWriter, OpenApiWriterSettings settings = null) : base(textWriter, settings) + public OpenApiYamlWriter(TextWriter textWriter, OpenApiWriterSettings settings) : base(textWriter, settings) { - } /// From 37054bf37c101096c41d1a8ec1e379b12a1dfef1 Mon Sep 17 00:00:00 2001 From: David Cumps Date: Wed, 24 Jun 2020 23:19:55 +0200 Subject: [PATCH 2/3] fix OpenApiWriterBase default param addition --- src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs b/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs index 6daec8b1d..dfe31f54e 100755 --- a/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs +++ b/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs @@ -39,12 +39,8 @@ public abstract class OpenApiWriterBase : IOpenApiWriter /// Initializes a new instance of the class. /// /// The text writer. - public OpenApiWriterBase(TextWriter textWriter) + public OpenApiWriterBase(TextWriter textWriter) : this(textWriter, null) { - Writer = textWriter; - Writer.NewLine = "\n"; - - Scopes = new Stack(); } /// @@ -52,12 +48,18 @@ public OpenApiWriterBase(TextWriter textWriter) /// /// /// - public OpenApiWriterBase(TextWriter textWriter, OpenApiWriterSettings settings = null) : this(textWriter) + public OpenApiWriterBase(TextWriter textWriter, OpenApiWriterSettings settings = null) { + Writer = textWriter; + Writer.NewLine = "\n"; + + Scopes = new Stack(); + if (settings == null) { settings = new OpenApiWriterSettings(); } + Settings = settings; } From ad32cc4bab68db6a3890e2ee77329fc9843ad9a8 Mon Sep 17 00:00:00 2001 From: David Cumps Date: Wed, 24 Jun 2020 23:22:47 +0200 Subject: [PATCH 3/3] remove the default param that causes 2 identical ctors --- src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs b/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs index dfe31f54e..6d7f3f64d 100755 --- a/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs +++ b/src/Microsoft.OpenApi/Writers/OpenApiWriterBase.cs @@ -48,7 +48,7 @@ public OpenApiWriterBase(TextWriter textWriter) : this(textWriter, null) /// /// /// - public OpenApiWriterBase(TextWriter textWriter, OpenApiWriterSettings settings = null) + public OpenApiWriterBase(TextWriter textWriter, OpenApiWriterSettings settings) { Writer = textWriter; Writer.NewLine = "\n";