Skip to content

Commit ed38174

Browse files
authored
Merge pull request #281 from Microsoft/dm/read-extension-with-version
Added spec version to signature of custom extension parsers
2 parents 9424e24 + 2aeed15 commit ed38174

File tree

5 files changed

+5
-5
lines changed

5 files changed

+5
-5
lines changed

src/Microsoft.OpenApi.Readers/OpenApiReaderSettings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public class OpenApiReaderSettings
4242
/// <summary>
4343
/// Dictionary of parsers for converting extensions into strongly typed classes
4444
/// </summary>
45-
public Dictionary<string, Func<IOpenApiAny , IOpenApiExtension>> ExtensionParsers { get; set; } = new Dictionary<string, Func<IOpenApiAny, IOpenApiExtension>>();
45+
public Dictionary<string, Func<IOpenApiAny , OpenApiSpecVersion, IOpenApiExtension>> ExtensionParsers { get; set; } = new Dictionary<string, Func<IOpenApiAny, OpenApiSpecVersion, IOpenApiExtension>>();
4646

4747
/// <summary>
4848
/// Rules to use for validating OpenAPI specification. If none are provided a default set of rules are applied.

src/Microsoft.OpenApi.Readers/ParsingContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class ParsingContext
2525
private readonly Dictionary<string, object> _tempStorage = new Dictionary<string, object>();
2626
private IOpenApiVersionService _versionService;
2727
private readonly Dictionary<string, Stack<string>> _loopStacks = new Dictionary<string, Stack<string>>();
28-
internal Dictionary<string, Func<IOpenApiAny, IOpenApiExtension>> ExtensionParsers { get; set; } = new Dictionary<string, Func<IOpenApiAny, IOpenApiExtension>>();
28+
internal Dictionary<string, Func<IOpenApiAny, OpenApiSpecVersion, IOpenApiExtension>> ExtensionParsers { get; set; } = new Dictionary<string, Func<IOpenApiAny, OpenApiSpecVersion, IOpenApiExtension>>();
2929
internal RootNode RootNode { get; set; }
3030
internal List<OpenApiTag> Tags { get; private set; } = new List<OpenApiTag>();
3131
internal Uri BaseUrl { get; set; }

src/Microsoft.OpenApi.Readers/V2/OpenApiV2Deserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ private static IOpenApiExtension LoadExtension(string name, ParseNode node)
4343
{
4444
if (node.Context.ExtensionParsers.TryGetValue(name, out var parser))
4545
{
46-
return parser(node.CreateAny());
46+
return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi2_0);
4747
}
4848
else
4949
{

src/Microsoft.OpenApi.Readers/V3/OpenApiV3Deserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ private static IOpenApiExtension LoadExtension(string name, ParseNode node)
6868
{
6969
if (node.Context.ExtensionParsers.TryGetValue(name, out var parser))
7070
{
71-
return parser(node.CreateAny());
71+
return parser(node.CreateAny(), OpenApiSpecVersion.OpenApi3_0);
7272
}
7373
else
7474
{

test/Microsoft.OpenApi.Readers.Tests/TestCustomExtension.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void ParseCustomExtension()
2626
";
2727
var settings = new OpenApiReaderSettings()
2828
{
29-
ExtensionParsers = { { "x-foo", (a) => {
29+
ExtensionParsers = { { "x-foo", (a,v) => {
3030
var fooNode = (OpenApiObject)a;
3131
return new FooExtension() {
3232
Bar = (fooNode["bar"] as OpenApiString)?.Value,

0 commit comments

Comments
 (0)