Skip to content

Commit b79e374

Browse files
committed
Return schema proxy reference if reference pointer exists
1 parent d79beef commit b79e374

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

src/Microsoft.OpenApi/Models/References/OpenApiSchemaReference.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using Microsoft.OpenApi.Any;
@@ -100,7 +100,11 @@ internal OpenApiSchemaReference(OpenApiSchema target, string referenceId)
100100
/// <inheritdoc/>
101101
public override string Format { get => Target.Format; set => Target.Format = value; }
102102
/// <inheritdoc/>
103-
public override string Description { get => Target.Description; set => Target.Description = value; }
103+
public override string Description
104+
{
105+
get => string.IsNullOrEmpty(_description) ? Target.Description : _description;
106+
set => _description = value;
107+
}
104108
/// <inheritdoc/>
105109
public override decimal? Maximum { get => Target.Maximum; set => Target.Maximum = value; }
106110
/// <inheritdoc/>

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.OpenApi.Models;
77
using Microsoft.OpenApi.Extensions;
88
using Microsoft.OpenApi.Reader.ParseNodes;
9+
using Microsoft.OpenApi.Models.References;
910

1011
namespace Microsoft.OpenApi.Reader.V2
1112
{
@@ -162,7 +163,8 @@ public static OpenApiSchema LoadSchema(ParseNode node, OpenApiDocument hostDocum
162163
var pointer = mapNode.GetReferencePointer();
163164
if (pointer != null)
164165
{
165-
return mapNode.GetReferencedObject<OpenApiSchema>(ReferenceType.Schema, pointer);
166+
var reference = GetReferenceIdAndExternalResource(pointer);
167+
return new OpenApiSchemaReference(reference.Item1, hostDocument, reference.Item2);
166168
}
167169

168170
var schema = new OpenApiSchema();

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using Microsoft.OpenApi.Extensions;
55
using Microsoft.OpenApi.Models;
6+
using Microsoft.OpenApi.Models.References;
67
using Microsoft.OpenApi.Reader.ParseNodes;
78
using System.Collections.Generic;
89
using System.Globalization;
@@ -181,11 +182,8 @@ public static OpenApiSchema LoadSchema(ParseNode node, OpenApiDocument hostDocum
181182

182183
if (pointer != null)
183184
{
184-
return new()
185-
{
186-
UnresolvedReference = true,
187-
Reference = node.Context.VersionService.ConvertToOpenApiReference(pointer, ReferenceType.Schema)
188-
};
185+
var reference = GetReferenceIdAndExternalResource(pointer);
186+
return new OpenApiSchemaReference(reference.Item1, hostDocument, reference.Item2);
189187
}
190188

191189
var schema = new OpenApiSchema();

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using Microsoft.OpenApi.Extensions;
55
using Microsoft.OpenApi.Models;
6+
using Microsoft.OpenApi.Models.References;
67
using Microsoft.OpenApi.Reader.ParseNodes;
78
using System.Collections.Generic;
89
using System.Globalization;
@@ -230,11 +231,8 @@ public static OpenApiSchema LoadSchema(ParseNode node, OpenApiDocument hostDocum
230231

231232
if (pointer != null)
232233
{
233-
return new()
234-
{
235-
UnresolvedReference = true,
236-
Reference = node.Context.VersionService.ConvertToOpenApiReference(pointer, ReferenceType.Schema)
237-
};
234+
var reference = GetReferenceIdAndExternalResource(pointer);
235+
return new OpenApiSchemaReference(reference.Item1, hostDocument, reference.Item2);
238236
}
239237

240238
var schema = new OpenApiSchema();

0 commit comments

Comments
 (0)