Skip to content

Commit f0469c5

Browse files
Copilotbaywet
andcommitted
Remove KeyComparer property and related functionality from OpenApiWriterSettings
Co-authored-by: baywet <[email protected]>
1 parent bed9896 commit f0469c5

File tree

4 files changed

+1
-98
lines changed

4 files changed

+1
-98
lines changed

src/Microsoft.OpenApi/Writers/OpenApiWriterExtensions.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -419,13 +419,6 @@ private static void WriteCollectionInternal<T>(
419419
writer.WriteStartArray();
420420
if (elements != null)
421421
{
422-
var settings = writer.GetSettings();
423-
424-
if (settings?.KeyComparer is IComparer<T> typedComparer)
425-
{
426-
elements = elements.Sort(typedComparer);
427-
}
428-
429422
foreach (var item in elements)
430423
{
431424
if (item != null)
@@ -464,12 +457,6 @@ private static void WriteMapInternal<T>(
464457

465458
if (elements != null)
466459
{
467-
var settings = writer.GetSettings();
468-
if (settings?.KeyComparer != null)
469-
{
470-
elements = elements.Sort(settings.KeyComparer); // sort using custom comparer
471-
}
472-
473460
foreach (var item in elements)
474461
{
475462
writer.WritePropertyName(item.Key);

src/Microsoft.OpenApi/Writers/OpenApiWriterSettings.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using System.Collections.Generic;
2-
3-
namespace Microsoft.OpenApi
1+
namespace Microsoft.OpenApi
42
{
53
/// <summary>
64
/// Configuration settings to control how OpenAPI documents are written
@@ -23,10 +21,5 @@ internal bool ShouldInlineReference(OpenApiReference reference)
2321
return (reference.IsLocal && InlineLocalReferences)
2422
|| (reference.IsExternal && InlineExternalReferences);
2523
}
26-
27-
/// <summary>
28-
/// Specifies a comparer used to sort string-based collection keys, such as components or tags.
29-
/// </summary>
30-
public IComparer<string>? KeyComparer { get; set; }
3124
}
3225
}

test/Microsoft.OpenApi.Tests/Extensions/CollectionExtensionsTests.cs

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -132,74 +132,6 @@ public class CollectionExtensionsTests
132132
}
133133
};
134134

135-
[Theory]
136-
[MemberData(nameof(OpenApiSpecVersions))]
137-
public async Task SortOpenApiDocumentUsingCustomComparerSucceeds(OpenApiSpecVersion version)
138-
{
139-
// Arrange
140-
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
141-
var settings = new OpenApiWriterSettings
142-
{
143-
KeyComparer = StringComparer.OrdinalIgnoreCase
144-
};
145-
var writer = new OpenApiYamlWriter(outputStringWriter, settings);
146-
147-
// Act
148-
Document.SerializeAs(version, writer);
149-
await writer.FlushAsync();
150-
151-
// Assert
152-
await Verifier.Verify(outputStringWriter).UseParameters(version);
153-
}
154-
155-
[Fact]
156-
public async Task SortHashSetsWorks()
157-
{
158-
// Arrange
159-
var expected = @"required:
160-
- id
161-
- name
162-
- tag";
163-
var schema = new OpenApiSchema
164-
{
165-
Required = new HashSet<string> { "tag", "id", "name" },
166-
};
167-
168-
var outputStringWriter = new StringWriter(CultureInfo.InvariantCulture);
169-
var settings = new OpenApiWriterSettings
170-
{
171-
KeyComparer = StringComparer.OrdinalIgnoreCase
172-
};
173-
var writer = new OpenApiYamlWriter(outputStringWriter, settings);
174-
175-
// Act
176-
schema.SerializeAsV3(writer);
177-
await writer.FlushAsync();
178-
var sortedString = outputStringWriter.ToString();
179-
180-
// Assert
181-
Assert.Equal(expected.MakeLineBreaksEnvironmentNeutral(), sortedString.MakeLineBreaksEnvironmentNeutral());
182-
}
183-
184-
[Fact]
185-
public void SortTagsByNameUsingComparerWorks()
186-
{
187-
// Arrange
188-
var tags = new HashSet<OpenApiTag>
189-
{
190-
new() { Name = "three" },
191-
new() { Name = "two" },
192-
new() { Name = "one" }
193-
};
194-
195-
// Act
196-
var sortedTags = tags.Sort(new OpenApiTagNameComparer());
197-
198-
// Assert
199-
Assert.Equal(3, sortedTags.Count);
200-
Assert.True(sortedTags[0].Name == "one");
201-
}
202-
203135
public static TheoryData<OpenApiSpecVersion> OpenApiSpecVersions()
204136
{
205137
var values = new TheoryData<OpenApiSpecVersion>();
@@ -210,12 +142,4 @@ public static TheoryData<OpenApiSpecVersion> OpenApiSpecVersions()
210142
return values;
211143
}
212144
}
213-
214-
public class OpenApiTagNameComparer : IComparer<OpenApiTag>
215-
{
216-
public int Compare(OpenApiTag tag1, OpenApiTag tag2)
217-
{
218-
return string.Compare(tag1.Name, tag2.Name, StringComparison.OrdinalIgnoreCase);
219-
}
220-
}
221145
}

test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1594,7 +1594,6 @@ namespace Microsoft.OpenApi
15941594
public OpenApiWriterSettings() { }
15951595
public bool InlineExternalReferences { get; set; }
15961596
public bool InlineLocalReferences { get; set; }
1597-
public System.Collections.Generic.IComparer<string>? KeyComparer { get; set; }
15981597
}
15991598
public class OpenApiXml : Microsoft.OpenApi.IOpenApiElement, Microsoft.OpenApi.IOpenApiExtensible, Microsoft.OpenApi.IOpenApiSerializable
16001599
{

0 commit comments

Comments
 (0)