Skip to content

Commit b1fca56

Browse files
Merge pull request #1027 from microsoft/mk/make-openapi-reference-resolver-public
Make OpenApiReferenceResolver public
2 parents 03c8aa5 + d1580a3 commit b1fca56

File tree

2 files changed

+45
-10
lines changed

2 files changed

+45
-10
lines changed

src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,33 +7,36 @@
77
using Microsoft.OpenApi.Exceptions;
88
using Microsoft.OpenApi.Interfaces;
99
using Microsoft.OpenApi.Models;
10-
using Microsoft.OpenApi.Services;
1110

1211
namespace Microsoft.OpenApi.Services
1312
{
1413
/// <summary>
1514
/// This class is used to walk an OpenApiDocument and convert unresolved references to references to populated objects
1615
/// </summary>
17-
internal class OpenApiReferenceResolver : OpenApiVisitorBase
16+
public class OpenApiReferenceResolver : OpenApiVisitorBase
1817
{
1918
private OpenApiDocument _currentDocument;
20-
private bool _resolveRemoteReferences;
19+
private readonly bool _resolveRemoteReferences;
2120
private List<OpenApiError> _errors = new List<OpenApiError>();
2221

22+
/// <summary>
23+
/// Initializes the <see cref="OpenApiReferenceResolver"/> class.
24+
/// </summary>
2325
public OpenApiReferenceResolver(OpenApiDocument currentDocument, bool resolveRemoteReferences = true)
2426
{
2527
_currentDocument = currentDocument;
2628
_resolveRemoteReferences = resolveRemoteReferences;
2729
}
2830

29-
public IEnumerable<OpenApiError> Errors
30-
{
31-
get
32-
{
33-
return _errors;
34-
}
35-
}
31+
/// <summary>
32+
/// List of errors related to the OpenApiDocument
33+
/// </summary>
34+
public IEnumerable<OpenApiError> Errors => _errors;
3635

36+
/// <summary>
37+
/// Resolves tags in OpenApiDocument
38+
/// </summary>
39+
/// <param name="doc"></param>
3740
public override void Visit(OpenApiDocument doc)
3841
{
3942
if (doc.Tags != null)
@@ -42,13 +45,22 @@ public override void Visit(OpenApiDocument doc)
4245
}
4346
}
4447

48+
/// <summary>
49+
/// Visits the referenceable element in the host document
50+
/// </summary>
51+
/// <param name="referenceable">The referenceable element in the doc.</param>
4552
public override void Visit(IOpenApiReferenceable referenceable)
4653
{
4754
if (referenceable.Reference != null)
4855
{
4956
referenceable.Reference.HostDocument = _currentDocument;
5057
}
5158
}
59+
60+
/// <summary>
61+
/// Resolves references in components
62+
/// </summary>
63+
/// <param name="components"></param>
5264
public override void Visit(OpenApiComponents components)
5365
{
5466
ResolveMap(components.Parameters);
@@ -62,6 +74,10 @@ public override void Visit(OpenApiComponents components)
6274
ResolveMap(components.Headers);
6375
}
6476

77+
/// <summary>
78+
/// Resolves all references used in callbacks
79+
/// </summary>
80+
/// <param name="callbacks"></param>
6581
public override void Visit(IDictionary<string, OpenApiCallback> callbacks)
6682
{
6783
ResolveMap(callbacks);

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,6 +1067,25 @@ namespace Microsoft.OpenApi.Services
10671067
public OpenApiReferenceError(Microsoft.OpenApi.Exceptions.OpenApiException exception) { }
10681068
public OpenApiReferenceError(Microsoft.OpenApi.Models.OpenApiReference reference, string message) { }
10691069
}
1070+
public class OpenApiReferenceResolver : Microsoft.OpenApi.Services.OpenApiVisitorBase
1071+
{
1072+
public OpenApiReferenceResolver(Microsoft.OpenApi.Models.OpenApiDocument currentDocument, bool resolveRemoteReferences = true) { }
1073+
public System.Collections.Generic.IEnumerable<Microsoft.OpenApi.Models.OpenApiError> Errors { get; }
1074+
public override void Visit(Microsoft.OpenApi.Interfaces.IOpenApiReferenceable referenceable) { }
1075+
public override void Visit(Microsoft.OpenApi.Models.OpenApiComponents components) { }
1076+
public override void Visit(Microsoft.OpenApi.Models.OpenApiDocument doc) { }
1077+
public override void Visit(Microsoft.OpenApi.Models.OpenApiMediaType mediaType) { }
1078+
public override void Visit(Microsoft.OpenApi.Models.OpenApiOperation operation) { }
1079+
public override void Visit(Microsoft.OpenApi.Models.OpenApiParameter parameter) { }
1080+
public override void Visit(Microsoft.OpenApi.Models.OpenApiResponses responses) { }
1081+
public override void Visit(Microsoft.OpenApi.Models.OpenApiSchema schema) { }
1082+
public override void Visit(Microsoft.OpenApi.Models.OpenApiSecurityRequirement securityRequirement) { }
1083+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiCallback> callbacks) { }
1084+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiExample> examples) { }
1085+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiHeader> headers) { }
1086+
public override void Visit(System.Collections.Generic.IDictionary<string, Microsoft.OpenApi.Models.OpenApiLink> links) { }
1087+
public override void Visit(System.Collections.Generic.IList<Microsoft.OpenApi.Models.OpenApiParameter> parameters) { }
1088+
}
10701089
public class OpenApiUrlTreeNode
10711090
{
10721091
public System.Collections.Generic.IDictionary<string, System.Collections.Generic.List<string>> AdditionalData { get; set; }

0 commit comments

Comments
 (0)