Skip to content

Commit d99ffd6

Browse files
committed
Add an internal constructor for testing purposes
1 parent 6525525 commit d99ffd6

11 files changed

+213
-17
lines changed

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace Microsoft.OpenApi.Models.References
1414
/// </summary>
1515
public class OpenApiCallbackReference : OpenApiCallback
1616
{
17-
private OpenApiCallback _target;
17+
internal OpenApiCallback _target;
1818
private readonly OpenApiReference _reference;
1919

2020
private OpenApiCallback Target
@@ -54,6 +54,17 @@ public OpenApiCallbackReference(string referenceId, OpenApiDocument hostDocument
5454
Reference = _reference;
5555
}
5656

57+
internal OpenApiCallbackReference(OpenApiCallback target, string referenceId)
58+
{
59+
_target = target;
60+
61+
_reference = new OpenApiReference()
62+
{
63+
Id = referenceId,
64+
Type = ReferenceType.Callback,
65+
};
66+
}
67+
5768
/// <inheritdoc/>
5869
public override Dictionary<RuntimeExpression, OpenApiPathItem> PathItems { get => Target.PathItems; set => Target.PathItems = value; }
5970

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace Microsoft.OpenApi.Models.References
1414
/// </summary>
1515
public class OpenApiExampleReference : OpenApiExample
1616
{
17-
private OpenApiExample _target;
17+
internal OpenApiExample _target;
1818
private readonly OpenApiReference _reference;
1919
private string _summary;
2020
private string _description;
@@ -56,6 +56,17 @@ public OpenApiExampleReference(string referenceId, OpenApiDocument hostDocument,
5656
Reference = _reference;
5757
}
5858

59+
internal OpenApiExampleReference(OpenApiExample target, string referenceId)
60+
{
61+
_target = target;
62+
63+
_reference = new OpenApiReference()
64+
{
65+
Id = referenceId,
66+
Type = ReferenceType.Example,
67+
};
68+
}
69+
5970
/// <inheritdoc/>
6071
public override string Description
6172
{

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

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace Microsoft.OpenApi.Models.References
1515
/// </summary>
1616
public class OpenApiHeaderReference : OpenApiHeader
1717
{
18-
private OpenApiHeader _target;
18+
internal OpenApiHeader _target;
1919
private readonly OpenApiReference _reference;
2020
private string _description;
2121

@@ -56,6 +56,17 @@ public OpenApiHeaderReference(string referenceId, OpenApiDocument hostDocument,
5656
Reference = _reference;
5757
}
5858

59+
internal OpenApiHeaderReference(OpenApiHeader target, string referenceId)
60+
{
61+
_target = target;
62+
63+
_reference = new OpenApiReference()
64+
{
65+
Id = referenceId,
66+
Type = ReferenceType.Header,
67+
};
68+
}
69+
5970
/// <inheritdoc/>
6071
public override string Description
6172
{
@@ -124,6 +135,20 @@ public override void SerializeAsV3(IOpenApiWriter writer)
124135
}
125136
}
126137

138+
/// <inheritdoc/>
139+
public override void SerializeAsV2(IOpenApiWriter writer)
140+
{
141+
if (!writer.GetSettings().ShouldInlineReference(_reference))
142+
{
143+
_reference.SerializeAsV2(writer);
144+
return;
145+
}
146+
else
147+
{
148+
SerializeInternal(writer, (writer, element) => element.SerializeAsV2WithoutReference(writer));
149+
}
150+
}
151+
127152
/// <inheritdoc/>
128153
private void SerializeInternal(IOpenApiWriter writer,
129154
Action<IOpenApiWriter, IOpenApiReferenceable> action)

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Microsoft.OpenApi.Models.References
1313
/// </summary>
1414
public class OpenApiLinkReference : OpenApiLink
1515
{
16-
private OpenApiLink _target;
16+
internal OpenApiLink _target;
1717
private readonly OpenApiReference _reference;
1818
private string _description;
1919

@@ -54,6 +54,17 @@ public OpenApiLinkReference(string referenceId, OpenApiDocument hostDocument, st
5454
Reference = _reference;
5555
}
5656

57+
internal OpenApiLinkReference(OpenApiLink target, string referenceId)
58+
{
59+
_target = target;
60+
61+
_reference = new OpenApiReference()
62+
{
63+
Id = referenceId,
64+
Type = ReferenceType.Link,
65+
};
66+
}
67+
5768
/// <inheritdoc/>
5869
public override string OperationRef { get => Target.OperationRef; set => Target.OperationRef = value; }
5970

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

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace Microsoft.OpenApi.Models.References
1515
/// </summary>
1616
public class OpenApiParameterReference : OpenApiParameter
1717
{
18-
private OpenApiParameter _target;
18+
internal OpenApiParameter _target;
1919
private readonly OpenApiReference _reference;
2020
private string _description;
2121
private bool? _explode;
@@ -58,6 +58,17 @@ public OpenApiParameterReference(string referenceId, OpenApiDocument hostDocumen
5858
Reference = _reference;
5959
}
6060

61+
internal OpenApiParameterReference(OpenApiParameter target, string referenceId)
62+
{
63+
_target = target;
64+
65+
_reference = new OpenApiReference()
66+
{
67+
Id = referenceId,
68+
Type = ReferenceType.Parameter,
69+
};
70+
}
71+
6172
/// <inheritdoc/>
6273
public override string Name { get => Target.Name; set => Target.Name = value; }
6374

@@ -140,6 +151,20 @@ public override void SerializeAsV31(IOpenApiWriter writer)
140151
}
141152
}
142153

154+
/// <inheritdoc/>
155+
public override void SerializeAsV2(IOpenApiWriter writer)
156+
{
157+
if (!writer.GetSettings().ShouldInlineReference(_reference))
158+
{
159+
_reference.SerializeAsV2(writer);
160+
return;
161+
}
162+
else
163+
{
164+
SerializeInternal(writer, (writer, element) => element.SerializeAsV2WithoutReference(writer));
165+
}
166+
}
167+
143168
/// <inheritdoc/>
144169
private void SerializeInternal(IOpenApiWriter writer,
145170
Action<IOpenApiWriter, IOpenApiReferenceable> action)

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

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Microsoft.OpenApi.Models.References
1313
/// </summary>
1414
public class OpenApiPathItemReference : OpenApiPathItem
1515
{
16-
private OpenApiPathItem _target;
16+
internal OpenApiPathItem _target;
1717
private readonly OpenApiReference _reference;
1818
private string _description;
1919
private string _summary;
@@ -55,6 +55,17 @@ public OpenApiPathItemReference(string referenceId, OpenApiDocument hostDocument
5555
Reference = _reference;
5656
}
5757

58+
internal OpenApiPathItemReference(OpenApiPathItem target, string referenceId)
59+
{
60+
_target = target;
61+
62+
_reference = new OpenApiReference()
63+
{
64+
Id = referenceId,
65+
Type = ReferenceType.PathItem,
66+
};
67+
}
68+
5869
/// <inheritdoc/>
5970
public override string Summary
6071
{
@@ -107,7 +118,21 @@ public override void SerializeAsV31(IOpenApiWriter writer)
107118
{
108119
SerializeInternal(writer, (writer, element) => element.SerializeAsV31WithoutReference(writer));
109120
}
110-
}
121+
}
122+
123+
/// <inheritdoc/>
124+
public override void SerializeAsV2(IOpenApiWriter writer)
125+
{
126+
if (!writer.GetSettings().ShouldInlineReference(_reference))
127+
{
128+
_reference.SerializeAsV2(writer);
129+
return;
130+
}
131+
else
132+
{
133+
SerializeInternal(writer, (writer, element) => element.SerializeAsV2WithoutReference(writer));
134+
}
135+
}
111136

112137
/// <inheritdoc/>
113138
private void SerializeInternal(IOpenApiWriter writer,

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Microsoft.OpenApi.Models.References
1313
/// </summary>
1414
public class OpenApiRequestBodyReference : OpenApiRequestBody
1515
{
16-
private OpenApiRequestBody _target;
16+
internal OpenApiRequestBody _target;
1717
private readonly OpenApiReference _reference;
1818
private string _description;
1919

@@ -54,6 +54,17 @@ public OpenApiRequestBodyReference(string referenceId, OpenApiDocument hostDocum
5454
Reference = _reference;
5555
}
5656

57+
internal OpenApiRequestBodyReference(OpenApiRequestBody target, string referenceId)
58+
{
59+
_target = target;
60+
61+
_reference = new OpenApiReference()
62+
{
63+
Id = referenceId,
64+
Type = ReferenceType.RequestBody,
65+
};
66+
}
67+
5768
/// <inheritdoc/>
5869
public override string Description
5970
{

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

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ namespace Microsoft.OpenApi.Models.References
1313
/// </summary>
1414
public class OpenApiResponseReference : OpenApiResponse
1515
{
16-
private OpenApiResponse _target;
16+
internal OpenApiResponse _target;
1717
private readonly OpenApiReference _reference;
1818
private string _description;
1919

2020
private OpenApiResponse Target
2121
{
2222
get
2323
{
24-
_target ??= Reference.HostDocument.ResolveReferenceTo<OpenApiResponse>(_reference);
24+
_target ??= Reference.HostDocument?.ResolveReferenceTo<OpenApiResponse>(_reference);
2525
return _target;
2626
}
2727
}
@@ -54,6 +54,19 @@ public OpenApiResponseReference(string referenceId, OpenApiDocument hostDocument
5454
Reference = _reference;
5555
}
5656

57+
internal OpenApiResponseReference(string referenceId, OpenApiResponse target)
58+
{
59+
_target ??= target;
60+
61+
_reference = new OpenApiReference()
62+
{
63+
Id = referenceId,
64+
Type = ReferenceType.Response,
65+
};
66+
67+
Reference = _reference;
68+
}
69+
5770
/// <inheritdoc/>
5871
public override string Description
5972
{
@@ -101,6 +114,20 @@ public override void SerializeAsV31(IOpenApiWriter writer)
101114
}
102115
}
103116

117+
/// <inheritdoc/>
118+
public override void SerializeAsV2(IOpenApiWriter writer)
119+
{
120+
if (!writer.GetSettings().ShouldInlineReference(_reference))
121+
{
122+
_reference.SerializeAsV2(writer);
123+
return;
124+
}
125+
else
126+
{
127+
SerializeInternal(writer, (writer, element) => element.SerializeAsV2WithoutReference(writer));
128+
}
129+
}
130+
104131
/// <inheritdoc/>
105132
private void SerializeInternal(IOpenApiWriter writer,
106133
Action<IOpenApiWriter, IOpenApiReferenceable> action)

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

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ namespace Microsoft.OpenApi.Models.References
1313
/// </summary>
1414
public class OpenApiSecuritySchemeReference : OpenApiSecurityScheme
1515
{
16-
private OpenApiSecurityScheme _target;
16+
internal OpenApiSecurityScheme _target;
1717
private readonly OpenApiReference _reference;
1818
private string _description;
1919

@@ -50,6 +50,17 @@ public OpenApiSecuritySchemeReference(string referenceId, OpenApiDocument hostDo
5050
Reference = _reference;
5151
}
5252

53+
internal OpenApiSecuritySchemeReference(string referenceId, OpenApiSecurityScheme target)
54+
{
55+
_target = target;
56+
57+
_reference = new OpenApiReference()
58+
{
59+
Id = referenceId,
60+
Type = ReferenceType.SecurityScheme,
61+
};
62+
}
63+
5364
/// <inheritdoc/>
5465
public override string Description
5566
{
@@ -107,7 +118,21 @@ public override void SerializeAsV31(IOpenApiWriter writer)
107118
{
108119
SerializeInternal(writer, SerializeAsV31WithoutReference);
109120
}
110-
}
121+
}
122+
123+
/// <inheritdoc/>
124+
public override void SerializeAsV2(IOpenApiWriter writer)
125+
{
126+
if (!writer.GetSettings().ShouldInlineReference(_reference))
127+
{
128+
_reference.SerializeAsV2(writer);
129+
return;
130+
}
131+
else
132+
{
133+
SerializeInternal(writer, SerializeAsV2WithoutReference);
134+
}
135+
}
111136

112137
/// <inheritdoc/>
113138
private void SerializeInternal(IOpenApiWriter writer,

0 commit comments

Comments
 (0)