Skip to content

Commit fe7a2fd

Browse files
committed
fix: removes static readers registry
Signed-off-by: Vincent Biret <[email protected]>
1 parent 0ff19f8 commit fe7a2fd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+38
-165
lines changed

src/Microsoft.OpenApi.Hidi/OpenApiService.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -388,9 +388,7 @@ private static async Task<ReadResult> ParseOpenApiAsync(string openApiFile, bool
388388
new(openApiFile) :
389389
new Uri("file://" + new FileInfo(openApiFile).DirectoryName + Path.DirectorySeparatorChar)
390390
};
391-
var yamlReader = new OpenApiYamlReader();
392-
settings.Readers.Add(OpenApiConstants.Yaml, yamlReader);
393-
settings.Readers.Add(OpenApiConstants.Yml, yamlReader);
391+
settings.AddYamlReader();
394392

395393
result = await OpenApiDocument.LoadAsync(stream, settings: settings, cancellationToken: cancellationToken).ConfigureAwait(false);
396394

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using Microsoft.OpenApi.Models;
2+
using Microsoft.OpenApi.Reader;
3+
4+
namespace Microsoft.OpenApi.Readers;
5+
6+
/// <summary>
7+
/// Extensions for <see cref="OpenApiReaderSettings"/>
8+
/// </summary>
9+
public static class OpenApiReaderSettingsExtensions
10+
{
11+
/// <summary>
12+
/// Adds a reader for the specified format
13+
/// </summary>
14+
/// <param name="settings">The settings to add the reader to.</param>
15+
public static void AddYamlReader(this OpenApiReaderSettings settings)
16+
{
17+
var yamlReader = new OpenApiYamlReader();
18+
settings.Readers.Add(OpenApiConstants.Yaml, yamlReader);
19+
settings.Readers.Add(OpenApiConstants.Yml, yamlReader);
20+
}
21+
}

src/Microsoft.OpenApi.Workbench/MainModel.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,7 @@ internal async Task ParseDocumentAsync()
235235
{
236236
RuleSet = ValidationRuleSet.GetDefaultRuleSet()
237237
};
238-
var yamlReader = new OpenApiYamlReader();
239-
settings.Readers.Add(OpenApiConstants.Yaml, yamlReader);
240-
settings.Readers.Add(OpenApiConstants.Yml, yamlReader);
238+
settings.AddYamlReader();
241239
if (ResolveExternal && !string.IsNullOrWhiteSpace(_inputFile))
242240
{
243241
settings.BaseUrl = _inputFile.StartsWith("http", StringComparison.OrdinalIgnoreCase) ? new(_inputFile)

src/Microsoft.OpenApi/Reader/OpenApiModelFactory.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public static ReadResult Load(MemoryStream stream,
4040
if (stream is null) throw new ArgumentNullException(nameof(stream));
4141
#endif
4242
settings ??= new OpenApiReaderSettings();
43-
settings.Readers.TryAdd(OpenApiConstants.Json, new OpenApiJsonReader());
43+
settings.AddJsonReader();
4444

4545
// Get the format of the stream if not provided
4646
format ??= InspectStreamFormat(stream);
@@ -118,7 +118,7 @@ public static async Task<ReadResult> LoadAsync(Stream input, string format = nul
118118
if (input is null) throw new ArgumentNullException(nameof(input));
119119
#endif
120120
settings ??= new OpenApiReaderSettings();
121-
settings.Readers.TryAdd(OpenApiConstants.Json, new OpenApiJsonReader());
121+
settings.AddJsonReader();
122122

123123
Stream preparedStream;
124124
if (format is null)
@@ -201,7 +201,7 @@ public static ReadResult Parse(string input,
201201
#endif
202202
format ??= InspectInputFormat(input);
203203
settings ??= new OpenApiReaderSettings();
204-
settings.Readers.TryAdd(OpenApiConstants.Json, new OpenApiJsonReader());
204+
settings.AddJsonReader();
205205

206206
// Copy string into MemoryStream
207207
using var stream = new MemoryStream(Encoding.UTF8.GetBytes(input));
@@ -233,7 +233,7 @@ public static T Parse<T>(string input,
233233
#endif
234234
format ??= InspectInputFormat(input);
235235
settings ??= new OpenApiReaderSettings();
236-
settings.Readers.TryAdd(OpenApiConstants.Json, new OpenApiJsonReader());
236+
settings.AddJsonReader();
237237
using var stream = new MemoryStream(Encoding.UTF8.GetBytes(input));
238238
return Load<T>(stream, version, format, openApiDocument, out diagnostic, settings);
239239
}

src/Microsoft.OpenApi/Reader/OpenApiReaderRegistry.cs

Lines changed: 0 additions & 23 deletions
This file was deleted.

src/Microsoft.OpenApi/Reader/OpenApiReaderSettings.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Text.Json.Nodes;
88
using Microsoft.OpenApi.Interfaces;
99
using Microsoft.OpenApi.MicrosoftExtensions;
10+
using Microsoft.OpenApi.Models;
1011
using Microsoft.OpenApi.Validations;
1112

1213
namespace Microsoft.OpenApi.Reader
@@ -16,6 +17,13 @@ namespace Microsoft.OpenApi.Reader
1617
/// </summary>
1718
public class OpenApiReaderSettings
1819
{
20+
/// <summary>
21+
/// Adds a reader for the specified format
22+
/// </summary>
23+
public void AddJsonReader()
24+
{
25+
Readers.Add(OpenApiConstants.Json, new OpenApiJsonReader());
26+
}
1927
/// <summary>
2028
/// Readers to use to parse the OpenAPI document
2129
/// </summary>

test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ public sealed class OpenApiServiceTests : IDisposable
2626
public OpenApiServiceTests()
2727
{
2828
_logger = new Logger<OpenApiServiceTests>(_loggerFactory);
29-
OpenApiReaderRegistry.RegisterReader(OpenApiConstants.Yml, new OpenApiYamlReader());
30-
OpenApiReaderRegistry.RegisterReader(OpenApiConstants.Yaml, new OpenApiYamlReader());
3129
}
3230

3331
[Fact]

test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiDiagnosticTests.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@ namespace Microsoft.OpenApi.Readers.Tests.OpenApiReaderTests
1515
[Collection("DefaultSettings")]
1616
public class OpenApiDiagnosticTests
1717
{
18-
public OpenApiDiagnosticTests()
19-
{
20-
OpenApiReaderRegistry.RegisterReader(OpenApiConstants.Yaml, new OpenApiYamlReader());
21-
}
22-
2318
[Fact]
2419
public async Task DetectedSpecificationVersionShouldBeV2_0()
2520
{

test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@ public class OpenApiStreamReaderTests
1515
{
1616
private const string SampleFolderPath = "V3Tests/Samples/OpenApiDocument/";
1717

18-
public OpenApiStreamReaderTests()
19-
{
20-
OpenApiReaderRegistry.RegisterReader("yaml", new OpenApiYamlReader());
21-
}
22-
2318
[Fact]
2419
public async Task StreamShouldCloseIfLeaveStreamOpenSettingEqualsFalse()
2520
{

test/Microsoft.OpenApi.Readers.Tests/OpenApiWorkspaceTests/OpenApiWorkspaceStreamTests.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,6 @@ namespace Microsoft.OpenApi.Readers.Tests.OpenApiWorkspaceTests
1111
{
1212
public class OpenApiWorkspaceStreamTests
1313
{
14-
private const string SampleFolderPath = "V3Tests/Samples/OpenApiWorkspace/";
15-
16-
public OpenApiWorkspaceStreamTests()
17-
{
18-
OpenApiReaderRegistry.RegisterReader(OpenApiConstants.Yaml, new OpenApiYamlReader());
19-
}
20-
2114
// Use OpenApiWorkspace to load a document and a referenced document
2215

2316
[Fact]

0 commit comments

Comments
 (0)