From 839e43e04e6b6ba0517d0a53d42dbe0f6ef0405c Mon Sep 17 00:00:00 2001 From: Meir Blachman Date: Thu, 26 Apr 2018 19:35:11 +0300 Subject: [PATCH] Changed OpenApiSchema.Required to ISet --- .../V2/OpenApiOperationDeserializer.cs | 2 +- .../V2/OpenApiSchemaDeserializer.cs | 3 ++- .../V3/OpenApiSchemaDeserializer.cs | 3 ++- src/Microsoft.OpenApi/Models/OpenApiSchema.cs | 14 +++++++------- .../Writers/OpenApiWriterExtensions.cs | 4 ++-- .../ReferenceService/TryLoadReferenceV2Tests.cs | 2 +- .../V2Tests/OpenApiOperationTests.cs | 4 ++-- .../V2Tests/OpenApiPathItemTests.cs | 8 ++++---- .../V3Tests/OpenApiDocumentTests.cs | 12 ++++++------ .../Models/OpenApiDocumentTests.cs | 12 ++++++------ .../Models/OpenApiOperationTests.cs | 4 ++-- .../Models/OpenApiSchemaTests.cs | 4 ++-- 12 files changed, 37 insertions(+), 35 deletions(-) diff --git a/src/Microsoft.OpenApi.Readers/V2/OpenApiOperationDeserializer.cs b/src/Microsoft.OpenApi.Readers/V2/OpenApiOperationDeserializer.cs index 0798624d1..838c4e892 100644 --- a/src/Microsoft.OpenApi.Readers/V2/OpenApiOperationDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V2/OpenApiOperationDeserializer.cs @@ -160,7 +160,7 @@ private static OpenApiRequestBody CreateFormBody(ParsingContext context, List p.Required).Select(p => p.Name).ToList() + Required = new HashSet(formParameters.Where(p => p.Required).Select(p => p.Name)) } }; diff --git a/src/Microsoft.OpenApi.Readers/V2/OpenApiSchemaDeserializer.cs b/src/Microsoft.OpenApi.Readers/V2/OpenApiSchemaDeserializer.cs index 0e9a80c49..79f878463 100644 --- a/src/Microsoft.OpenApi.Readers/V2/OpenApiSchemaDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V2/OpenApiSchemaDeserializer.cs @@ -5,6 +5,7 @@ using Microsoft.OpenApi.Extensions; using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Readers.ParseNodes; +using System.Collections.Generic; namespace Microsoft.OpenApi.Readers.V2 { @@ -103,7 +104,7 @@ internal static partial class OpenApiV2Deserializer { "required", (o, n) => { - o.Required = n.CreateSimpleList(n2 => n2.GetScalarValue()).ToArray(); + o.Required = new HashSet(n.CreateSimpleList(n2 => n2.GetScalarValue())); } }, { diff --git a/src/Microsoft.OpenApi.Readers/V3/OpenApiSchemaDeserializer.cs b/src/Microsoft.OpenApi.Readers/V3/OpenApiSchemaDeserializer.cs index 5d35eb0e0..da67820a3 100644 --- a/src/Microsoft.OpenApi.Readers/V3/OpenApiSchemaDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V3/OpenApiSchemaDeserializer.cs @@ -5,6 +5,7 @@ using Microsoft.OpenApi.Extensions; using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Readers.ParseNodes; +using System.Collections.Generic; namespace Microsoft.OpenApi.Readers.V3 { @@ -103,7 +104,7 @@ internal static partial class OpenApiV3Deserializer { "required", (o, n) => { - o.Required = n.CreateSimpleList(n2 => n2.GetScalarValue()).ToArray(); + o.Required = new HashSet(n.CreateSimpleList(n2 => n2.GetScalarValue())); } }, { diff --git a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs index 97143931c..45a7874df 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs @@ -133,7 +133,7 @@ public class OpenApiSchema : IOpenApiSerializable, IOpenApiReferenceable, IOpenA /// /// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00 /// - public IList Required { get; set; } = new List(); + public ISet Required { get; set; } = new HashSet(); /// /// Follow JSON Schema definition: https://tools.ietf.org/html/draft-fge-json-schema-validation-00 @@ -393,7 +393,7 @@ public void SerializeAsV3WithoutReference(IOpenApiWriter writer) /// public void SerializeAsV2(IOpenApiWriter writer) { - SerializeAsV2(writer: writer, parentRequiredProperties: new List(), propertyName: null); + SerializeAsV2(writer: writer, parentRequiredProperties: new HashSet(), propertyName: null); } /// @@ -403,7 +403,7 @@ public void SerializeAsV2WithoutReference(IOpenApiWriter writer) { SerializeAsV2WithoutReference( writer: writer, - parentRequiredProperties: new List(), + parentRequiredProperties: new HashSet(), propertyName: null); } @@ -416,7 +416,7 @@ public void SerializeAsV2WithoutReference(IOpenApiWriter writer) /// The property name that will be serialized. internal void SerializeAsV2( IOpenApiWriter writer, - IList parentRequiredProperties, + ISet parentRequiredProperties, string propertyName) { if (writer == null) @@ -432,7 +432,7 @@ internal void SerializeAsV2( if (parentRequiredProperties == null) { - parentRequiredProperties = new List(); + parentRequiredProperties = new HashSet(); } SerializeAsV2WithoutReference(writer, parentRequiredProperties, propertyName); @@ -447,7 +447,7 @@ internal void SerializeAsV2( /// The property name that will be serialized. internal void SerializeAsV2WithoutReference( IOpenApiWriter writer, - IList parentRequiredProperties, + ISet parentRequiredProperties, string propertyName) { writer.WriteStartObject(); @@ -521,7 +521,7 @@ internal void WriteAsItemsProperties(IOpenApiWriter writer) internal void WriteAsSchemaProperties( IOpenApiWriter writer, - IList parentRequiredProperties, + ISet parentRequiredProperties, string propertyName) { if (writer == null) diff --git a/src/Microsoft.OpenApi/Writers/OpenApiWriterExtensions.cs b/src/Microsoft.OpenApi/Writers/OpenApiWriterExtensions.cs index 396dff91b..8da814bbb 100644 --- a/src/Microsoft.OpenApi/Writers/OpenApiWriterExtensions.cs +++ b/src/Microsoft.OpenApi/Writers/OpenApiWriterExtensions.cs @@ -171,7 +171,7 @@ public static void WriteRequiredObject( public static void WriteOptionalCollection( this IOpenApiWriter writer, string name, - IList elements, + IEnumerable elements, Action action) { if (elements != null && elements.Any()) @@ -191,7 +191,7 @@ public static void WriteOptionalCollection( public static void WriteOptionalCollection( this IOpenApiWriter writer, string name, - IList elements, + IEnumerable elements, Action action) where T : IOpenApiElement { diff --git a/test/Microsoft.OpenApi.Readers.Tests/ReferenceService/TryLoadReferenceV2Tests.cs b/test/Microsoft.OpenApi.Readers.Tests/ReferenceService/TryLoadReferenceV2Tests.cs index 039ea99fe..d47f7dddc 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/ReferenceService/TryLoadReferenceV2Tests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/ReferenceService/TryLoadReferenceV2Tests.cs @@ -226,7 +226,7 @@ public void LoadResponseAndSchemaReference() Schema = new OpenApiSchema { Description = "Sample description", - Required = new List {"name" }, + Required = new HashSet {"name" }, Properties = { ["name"] = new OpenApiSchema() { diff --git a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiOperationTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiOperationTests.cs index cbc91aba5..c655ae5e1 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiOperationTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiOperationTests.cs @@ -92,7 +92,7 @@ public class OpenApiOperationTests Type = "string" } }, - Required = new List + Required = new HashSet { "name" } @@ -115,7 +115,7 @@ public class OpenApiOperationTests Type = "string" } }, - Required = new List + Required = new HashSet { "name" } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiPathItemTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiPathItemTests.cs index 5a56d9bb5..7f0d0f02d 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiPathItemTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiPathItemTests.cs @@ -81,7 +81,7 @@ public class OpenApiPathItemTests Type = "string" } }, - Required = new List + Required = new HashSet { "name" } @@ -104,7 +104,7 @@ public class OpenApiPathItemTests Type = "string" } }, - Required = new List + Required = new HashSet { "name" } @@ -190,7 +190,7 @@ public class OpenApiPathItemTests Type = "string" } }, - Required = new List + Required = new HashSet { "name" } @@ -218,7 +218,7 @@ public class OpenApiPathItemTests Type = "string" } }, - Required = new List + Required = new HashSet { "name" } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs index 97a5b1af5..b8ed90a87 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs @@ -153,7 +153,7 @@ public void ParseStandardPetStoreDocumentShouldSucceed() ["pet"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "id", "name" @@ -183,7 +183,7 @@ public void ParseStandardPetStoreDocumentShouldSucceed() ["newPet"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "name" }, @@ -212,7 +212,7 @@ public void ParseStandardPetStoreDocumentShouldSucceed() ["errorModel"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "code", "message" @@ -580,7 +580,7 @@ public void ParseModifiedPetStoreDocumentWithTagAndSecurityShouldSucceed() ["pet"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "id", "name" @@ -610,7 +610,7 @@ public void ParseModifiedPetStoreDocumentWithTagAndSecurityShouldSucceed() ["newPet"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "name" }, @@ -639,7 +639,7 @@ public void ParseModifiedPetStoreDocumentWithTagAndSecurityShouldSucceed() ["errorModel"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "code", "message" diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs index 929bb29ec..6d24d71a8 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs @@ -125,7 +125,7 @@ public class OpenApiDocumentTests ["pet"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "id", "name" @@ -155,7 +155,7 @@ public class OpenApiDocumentTests ["newPet"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "name" }, @@ -184,7 +184,7 @@ public class OpenApiDocumentTests ["errorModel"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "code", "message" @@ -516,7 +516,7 @@ public class OpenApiDocumentTests ["pet"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "id", "name" @@ -541,7 +541,7 @@ public class OpenApiDocumentTests ["newPet"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "name" }, @@ -565,7 +565,7 @@ public class OpenApiDocumentTests ["errorModel"] = new OpenApiSchema { Type = "object", - Required = new List + Required = new HashSet { "code", "message" diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiOperationTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiOperationTests.cs index 31a3b9976..51ba8b08d 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiOperationTests.cs +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiOperationTests.cs @@ -251,7 +251,7 @@ [new OpenApiSecurityScheme Type = "string" } }, - Required = new List() + Required = new HashSet() { "name" } @@ -274,7 +274,7 @@ [new OpenApiSecurityScheme Type = "string" } }, - Required = new List() + Required = new HashSet() { "name" } diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs index 861b4090e..5625f9f87 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiSchemaTests.cs @@ -163,12 +163,12 @@ public class OpenApiSchemaTests public static OpenApiSchema AdvancedSchemaWithRequiredPropertiesObject = new OpenApiSchema { Title = "title1", - Required = new List(){ "property1" }, + Required = new HashSet(){ "property1" }, Properties = new Dictionary { ["property1"] = new OpenApiSchema { - Required = new List() { "property3" }, + Required = new HashSet() { "property3" }, Properties = new Dictionary { ["property2"] = new OpenApiSchema