Skip to content

Commit 16ba3b7

Browse files
committed
Move method to workspace and remove unnecessary param
1 parent 41b3d9d commit 16ba3b7

File tree

7 files changed

+98
-103
lines changed

7 files changed

+98
-103
lines changed

src/Microsoft.OpenApi/Reader/Services/OpenApiWorkspaceLoader.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ internal async Task<OpenApiDiagnostic> LoadAsync(OpenApiReference reference,
2828
{
2929
_workspace.AddDocumentId(reference.ExternalResource, document.BaseUri);
3030
var version = diagnostic?.SpecificationVersion ?? OpenApiSpecVersion.OpenApi3_0;
31-
_workspace.RegisterComponents(document, version);
31+
_workspace.RegisterComponents(document);
3232
document.Workspace = _workspace;
3333

3434
// Collect remote references by walking document

src/Microsoft.OpenApi/Reader/V2/OpenApiDocumentDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ public static OpenApiDocument LoadOpenApi(RootNode rootNode)
252252
FixRequestBodyReferences(openApiDoc);
253253

254254
// Register components
255-
openApiDoc.Workspace.RegisterComponents(openApiDoc, OpenApiSpecVersion.OpenApi2_0);
255+
openApiDoc.Workspace.RegisterComponents(openApiDoc);
256256

257257
return openApiDoc;
258258
}

src/Microsoft.OpenApi/Reader/V3/OpenApiDocumentDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public static OpenApiDocument LoadOpenApi(RootNode rootNode)
5454
ParseMap(openApiNode, openApiDoc, _openApiFixedFields, _openApiPatternFields, openApiDoc);
5555

5656
// Register components
57-
openApiDoc.Workspace.RegisterComponents(openApiDoc, OpenApiSpecVersion.OpenApi3_0);
57+
openApiDoc.Workspace.RegisterComponents(openApiDoc);
5858

5959
return openApiDoc;
6060
}

src/Microsoft.OpenApi/Reader/V31/OpenApiDocumentDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public static OpenApiDocument LoadOpenApi(RootNode rootNode)
5353
ParseMap(openApiNode, openApiDoc, _openApiFixedFields, _openApiPatternFields, openApiDoc);
5454

5555
// Register components
56-
openApiDoc.Workspace.RegisterComponents(openApiDoc, OpenApiSpecVersion.OpenApi3_1);
56+
openApiDoc.Workspace.RegisterComponents(openApiDoc);
5757

5858
return openApiDoc;
5959
}

src/Microsoft.OpenApi/Services/OpenApiComponentsRegistryExtensions.cs

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

src/Microsoft.OpenApi/Services/OpenApiWorkspace.cs

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.IO;
7+
using Microsoft.OpenApi.Extensions;
78
using Microsoft.OpenApi.Interfaces;
89
using Microsoft.OpenApi.Models;
910

@@ -54,6 +55,97 @@ public int ComponentsCount()
5455
return _IOpenApiReferenceableRegistry.Count + _artifactsRegistry.Count;
5556
}
5657

58+
/// <summary>
59+
/// Registers a document's components into the workspace
60+
/// </summary>
61+
/// <param name="document"></param>
62+
public void RegisterComponents(OpenApiDocument document)
63+
{
64+
if (document?.Components == null) return;
65+
66+
string baseUri = document.BaseUri + OpenApiConstants.ComponentsSegment;
67+
string location;
68+
69+
// Register Schema
70+
foreach (var item in document.Components.Schemas)
71+
{
72+
if (item.Value.Id != null)
73+
{
74+
location = item.Value.Id;
75+
}
76+
else
77+
{
78+
location = baseUri + ReferenceType.Schema.GetDisplayName() + "/" + item.Key;
79+
}
80+
81+
RegisterComponent(location, item.Value);
82+
}
83+
84+
// Register Parameters
85+
foreach (var item in document.Components.Parameters)
86+
{
87+
location = baseUri + ReferenceType.Parameter.GetDisplayName() + "/" + item.Key;
88+
RegisterComponent(location, item.Value);
89+
}
90+
91+
// Register Responses
92+
foreach (var item in document.Components.Responses)
93+
{
94+
location = baseUri + ReferenceType.Response.GetDisplayName() + "/" + item.Key;
95+
RegisterComponent(location, item.Value);
96+
}
97+
98+
// Register RequestBodies
99+
foreach (var item in document.Components.RequestBodies)
100+
{
101+
location = baseUri + ReferenceType.RequestBody.GetDisplayName() + "/" + item.Key;
102+
RegisterComponent(location, item.Value);
103+
}
104+
105+
// Register Links
106+
foreach (var item in document.Components.Links)
107+
{
108+
location = baseUri + ReferenceType.Link.GetDisplayName() + "/" + item.Key;
109+
RegisterComponent(location, item.Value);
110+
}
111+
112+
// Register Callbacks
113+
foreach (var item in document.Components.Callbacks)
114+
{
115+
location = baseUri + ReferenceType.Callback.GetDisplayName() + "/" + item.Key;
116+
RegisterComponent(location, item.Value);
117+
}
118+
119+
// Register PathItems
120+
foreach (var item in document.Components.PathItems)
121+
{
122+
location = baseUri + ReferenceType.PathItem.GetDisplayName() + "/" + item.Key;
123+
RegisterComponent(location, item.Value);
124+
}
125+
126+
// Register Examples
127+
foreach (var item in document.Components.Examples)
128+
{
129+
location = baseUri + ReferenceType.Example.GetDisplayName() + "/" + item.Key;
130+
RegisterComponent(location, item.Value);
131+
}
132+
133+
// Register Headers
134+
foreach (var item in document.Components.Headers)
135+
{
136+
location = baseUri + ReferenceType.Header.GetDisplayName() + "/" + item.Key;
137+
RegisterComponent(location, item.Value);
138+
}
139+
140+
// Register SecuritySchemes
141+
foreach (var item in document.Components.SecuritySchemes)
142+
{
143+
location = baseUri + ReferenceType.SecurityScheme.GetDisplayName() + "/" + item.Key;
144+
RegisterComponent(location, item.Value);
145+
}
146+
}
147+
148+
57149
/// <summary>
58150
/// Registers a component in the component registry.
59151
/// </summary>

test/Microsoft.OpenApi.Tests/Models/References/OpenApiPathItemReferenceTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ public OpenApiPathItemReferenceTests()
8383
_openApiDoc = OpenApiDocument.Parse(OpenApi, OpenApiConstants.Yaml).OpenApiDocument;
8484
_openApiDoc_2 = OpenApiDocument.Parse(OpenApi_2, OpenApiConstants.Yaml).OpenApiDocument;
8585
_openApiDoc.Workspace.AddDocumentId("https://myserver.com/beta", _openApiDoc_2.BaseUri);
86-
_openApiDoc.Workspace.RegisterComponents(_openApiDoc_2, OpenApiSpecVersion.OpenApi3_1);
87-
_openApiDoc_2.Workspace.RegisterComponents(_openApiDoc_2, OpenApiSpecVersion.OpenApi3_1);
86+
_openApiDoc.Workspace.RegisterComponents(_openApiDoc_2);
87+
_openApiDoc_2.Workspace.RegisterComponents(_openApiDoc_2);
8888

8989
_localPathItemReference = new OpenApiPathItemReference("userPathItem", _openApiDoc_2)
9090
{

0 commit comments

Comments
 (0)