@@ -23,11 +23,6 @@ public static class OpenApiModelFactory
2323 {
2424 private static readonly HttpClient _httpClient = new ( ) ;
2525
26- static OpenApiModelFactory ( )
27- {
28- OpenApiReaderRegistry . RegisterReader ( OpenApiConstants . Json , new OpenApiJsonReader ( ) ) ;
29- }
30-
3126 /// <summary>
3227 /// Loads the input stream and parses it into an Open API document.
3328 /// </summary>
@@ -45,6 +40,7 @@ public static ReadResult Load(MemoryStream stream,
4540 if ( stream is null ) throw new ArgumentNullException ( nameof ( stream ) ) ;
4641#endif
4742 settings ??= new OpenApiReaderSettings ( ) ;
43+ settings . Readers . TryAdd ( OpenApiConstants . Json , new OpenApiJsonReader ( ) ) ;
4844
4945 // Get the format of the stream if not provided
5046 format ??= InspectStreamFormat ( stream ) ;
@@ -73,7 +69,7 @@ public static ReadResult Load(MemoryStream stream,
7369 public static T Load < T > ( MemoryStream input , OpenApiSpecVersion version , string format , OpenApiDocument openApiDocument , out OpenApiDiagnostic diagnostic , OpenApiReaderSettings settings = null ) where T : IOpenApiElement
7470 {
7571 format ??= InspectStreamFormat ( input ) ;
76- return OpenApiReaderRegistry . GetReader ( format ) . ReadFragment < T > ( input , version , openApiDocument , out diagnostic , settings ) ;
72+ return settings . Readers [ format ] . ReadFragment < T > ( input , version , openApiDocument , out diagnostic , settings ) ;
7773 }
7874
7975 /// <summary>
@@ -122,6 +118,7 @@ public static async Task<ReadResult> LoadAsync(Stream input, string format = nul
122118 if ( input is null ) throw new ArgumentNullException ( nameof ( input ) ) ;
123119#endif
124120 settings ??= new OpenApiReaderSettings ( ) ;
121+ settings . Readers . TryAdd ( OpenApiConstants . Json , new OpenApiJsonReader ( ) ) ;
125122
126123 Stream preparedStream ;
127124 if ( format is null )
@@ -204,6 +201,7 @@ public static ReadResult Parse(string input,
204201#endif
205202 format ??= InspectInputFormat ( input ) ;
206203 settings ??= new OpenApiReaderSettings ( ) ;
204+ settings . Readers . TryAdd ( OpenApiConstants . Json , new OpenApiJsonReader ( ) ) ;
207205
208206 // Copy string into MemoryStream
209207 using var stream = new MemoryStream ( Encoding . UTF8 . GetBytes ( input ) ) ;
@@ -235,6 +233,7 @@ public static T Parse<T>(string input,
235233#endif
236234 format ??= InspectInputFormat ( input ) ;
237235 settings ??= new OpenApiReaderSettings ( ) ;
236+ settings . Readers . TryAdd ( OpenApiConstants . Json , new OpenApiJsonReader ( ) ) ;
238237 using var stream = new MemoryStream ( Encoding . UTF8 . GetBytes ( input ) ) ;
239238 return Load < T > ( stream , version , format , openApiDocument , out diagnostic , settings ) ;
240239 }
@@ -243,7 +242,7 @@ public static T Parse<T>(string input,
243242
244243 private static async Task < ReadResult > InternalLoadAsync ( Stream input , string format , OpenApiReaderSettings settings , CancellationToken cancellationToken = default )
245244 {
246- var reader = OpenApiReaderRegistry . GetReader ( format ) ;
245+ var reader = settings . Readers [ format ] ;
247246 var readResult = await reader . ReadAsync ( input , settings , cancellationToken ) . ConfigureAwait ( false ) ;
248247
249248 if ( settings ? . LoadExternalRefs ?? DefaultReaderSettings . LoadExternalRefs )
@@ -283,7 +282,7 @@ private static ReadResult InternalLoad(MemoryStream input, string format, OpenAp
283282 throw new ArgumentException ( $ "Cannot parse the stream: { nameof ( input ) } is empty or contains no elements.") ;
284283 }
285284
286- var reader = OpenApiReaderRegistry . GetReader ( format ) ;
285+ var reader = settings . Readers [ format ] ;
287286 var readResult = reader . Read ( input , settings ) ;
288287 return readResult ;
289288 }
0 commit comments