Skip to content

Commit 2bca1df

Browse files
authored
Merge pull request #2084 from microsoft/fix/response-reference
fixes OpenAPI response reference duplicating objects
2 parents 4af0878 + 4243873 commit 2bca1df

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

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

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ public OpenApiResponse Target
2828
get
2929
{
3030
_target ??= Reference.HostDocument?.ResolveReferenceTo<OpenApiResponse>(_reference);
31-
OpenApiResponse resolved = new OpenApiResponse(_target);
32-
if (!string.IsNullOrEmpty(_description)) resolved.Description = _description;
33-
return resolved;
31+
return _target;
3432
}
3533
}
3634

@@ -75,29 +73,32 @@ internal OpenApiResponseReference(string referenceId, OpenApiResponse target)
7573
/// <inheritdoc/>
7674
public override string Description
7775
{
78-
get => string.IsNullOrEmpty(_description) ? Target.Description : _description;
76+
get => string.IsNullOrEmpty(_description) ? Target?.Description : _description;
7977
set => _description = value;
8078
}
8179

80+
private IDictionary<string, OpenApiMediaType> _content;
8281
/// <inheritdoc/>
83-
public override IDictionary<string, OpenApiMediaType> Content { get => Target?.Content; set => Target.Content = value; }
82+
public override IDictionary<string, OpenApiMediaType> Content { get => _content is not null ? _content : Target?.Content; set => _content = value; }
8483

84+
private IDictionary<string, OpenApiHeader> _headers;
8585
/// <inheritdoc/>
86-
public override IDictionary<string, OpenApiHeader> Headers { get => Target.Headers; set => Target.Headers = value; }
86+
public override IDictionary<string, OpenApiHeader> Headers { get => _headers is not null ? _headers : Target?.Headers; set => _headers = value; }
8787

88+
private IDictionary<string, OpenApiLink> _links;
8889
/// <inheritdoc/>
89-
public override IDictionary<string, OpenApiLink> Links { get => Target.Links; set => Target.Links = value; }
90+
public override IDictionary<string, OpenApiLink> Links { get => _links is not null ? _links : Target?.Links; set => _links = value; }
9091

92+
private IDictionary<string, IOpenApiExtension> _extensions;
9193
/// <inheritdoc/>
92-
public override IDictionary<string, IOpenApiExtension> Extensions { get => Target.Extensions; set => Target.Extensions = value; }
94+
public override IDictionary<string, IOpenApiExtension> Extensions { get => _extensions is not null ? _extensions : Target?.Extensions; set => _extensions = value; }
9395

9496
/// <inheritdoc/>
9597
public override void SerializeAsV3(IOpenApiWriter writer)
9698
{
9799
if (!writer.GetSettings().ShouldInlineReference(_reference))
98100
{
99101
_reference.SerializeAsV3(writer);
100-
return;
101102
}
102103
else
103104
{
@@ -111,7 +112,6 @@ public override void SerializeAsV31(IOpenApiWriter writer)
111112
if (!writer.GetSettings().ShouldInlineReference(_reference))
112113
{
113114
_reference.SerializeAsV31(writer);
114-
return;
115115
}
116116
else
117117
{
@@ -125,7 +125,6 @@ public override void SerializeAsV2(IOpenApiWriter writer)
125125
if (!writer.GetSettings().ShouldInlineReference(_reference))
126126
{
127127
_reference.SerializeAsV2(writer);
128-
return;
129128
}
130129
else
131130
{

0 commit comments

Comments
 (0)