diff --git a/src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs b/src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs
index 840f9c660..feeceb9af 100644
--- a/src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs
+++ b/src/Microsoft.OpenApi/Services/OpenApiReferenceResolver.cs
@@ -7,33 +7,36 @@
using Microsoft.OpenApi.Exceptions;
using Microsoft.OpenApi.Interfaces;
using Microsoft.OpenApi.Models;
-using Microsoft.OpenApi.Services;
namespace Microsoft.OpenApi.Services
{
///
/// This class is used to walk an OpenApiDocument and convert unresolved references to references to populated objects
///
- internal class OpenApiReferenceResolver : OpenApiVisitorBase
+ public class OpenApiReferenceResolver : OpenApiVisitorBase
{
private OpenApiDocument _currentDocument;
- private bool _resolveRemoteReferences;
+ private readonly bool _resolveRemoteReferences;
private List _errors = new List();
+ ///
+ /// Initializes the class.
+ ///
public OpenApiReferenceResolver(OpenApiDocument currentDocument, bool resolveRemoteReferences = true)
{
_currentDocument = currentDocument;
_resolveRemoteReferences = resolveRemoteReferences;
}
- public IEnumerable Errors
- {
- get
- {
- return _errors;
- }
- }
+ ///
+ /// List of errors related to the OpenApiDocument
+ ///
+ public IEnumerable Errors => _errors;
+ ///
+ /// Resolves tags in OpenApiDocument
+ ///
+ ///
public override void Visit(OpenApiDocument doc)
{
if (doc.Tags != null)
@@ -42,6 +45,10 @@ public override void Visit(OpenApiDocument doc)
}
}
+ ///
+ /// Visits the referenceable element in the host document
+ ///
+ /// The referenceable element in the doc.
public override void Visit(IOpenApiReferenceable referenceable)
{
if (referenceable.Reference != null)
@@ -49,6 +56,11 @@ public override void Visit(IOpenApiReferenceable referenceable)
referenceable.Reference.HostDocument = _currentDocument;
}
}
+
+ ///
+ /// Resolves references in components
+ ///
+ ///
public override void Visit(OpenApiComponents components)
{
ResolveMap(components.Parameters);
@@ -62,6 +74,10 @@ public override void Visit(OpenApiComponents components)
ResolveMap(components.Headers);
}
+ ///
+ /// Resolves all references used in callbacks
+ ///
+ ///
public override void Visit(IDictionary callbacks)
{
ResolveMap(callbacks);
diff --git a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
index 15bc8562b..75e12f480 100755
--- a/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
+++ b/test/Microsoft.OpenApi.Tests/PublicApi/PublicApi.approved.txt
@@ -1067,6 +1067,25 @@ namespace Microsoft.OpenApi.Services
public OpenApiReferenceError(Microsoft.OpenApi.Exceptions.OpenApiException exception) { }
public OpenApiReferenceError(Microsoft.OpenApi.Models.OpenApiReference reference, string message) { }
}
+ public class OpenApiReferenceResolver : Microsoft.OpenApi.Services.OpenApiVisitorBase
+ {
+ public OpenApiReferenceResolver(Microsoft.OpenApi.Models.OpenApiDocument currentDocument, bool resolveRemoteReferences = true) { }
+ public System.Collections.Generic.IEnumerable Errors { get; }
+ public override void Visit(Microsoft.OpenApi.Interfaces.IOpenApiReferenceable referenceable) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiComponents components) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiDocument doc) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiMediaType mediaType) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiOperation operation) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiParameter parameter) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiResponses responses) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiSchema schema) { }
+ public override void Visit(Microsoft.OpenApi.Models.OpenApiSecurityRequirement securityRequirement) { }
+ public override void Visit(System.Collections.Generic.IDictionary callbacks) { }
+ public override void Visit(System.Collections.Generic.IDictionary examples) { }
+ public override void Visit(System.Collections.Generic.IDictionary headers) { }
+ public override void Visit(System.Collections.Generic.IDictionary links) { }
+ public override void Visit(System.Collections.Generic.IList parameters) { }
+ }
public class OpenApiUrlTreeNode
{
public System.Collections.Generic.IDictionary> AdditionalData { get; set; }