Skip to content

Commit ba12d86

Browse files
committed
Avoid using virtual calls in constructor
1 parent f268d9a commit ba12d86

File tree

3 files changed

+30
-3
lines changed

3 files changed

+30
-3
lines changed

src/Microsoft.OpenApi/Models/OpenApiHeader.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public OpenApiHeader(OpenApiHeader header)
109109
Style = header?.Style ?? Style;
110110
Explode = header?.Explode ?? Explode;
111111
AllowReserved = header?.AllowReserved ?? AllowReserved;
112-
Schema = JsonNodeCloneHelper.CloneJsonSchema(Schema);
112+
Schema = InitializeSchema();
113113
Example = JsonNodeCloneHelper.Clone(header?.Example);
114114
Examples = header?.Examples != null ? new Dictionary<string, OpenApiExample>(header.Examples) : null;
115115
Content = header?.Content != null ? new Dictionary<string, OpenApiMediaType>(header.Content) : null;
@@ -299,5 +299,14 @@ public void SerializeAsV2WithoutReference(IOpenApiWriter writer)
299299

300300
writer.WriteEndObject();
301301
}
302+
303+
/// <summary>
304+
/// Clone a JSON schema instance
305+
/// </summary>
306+
/// <returns></returns>
307+
protected JsonSchema InitializeSchema()
308+
{
309+
return JsonNodeCloneHelper.CloneJsonSchema(Schema);
310+
}
302311
}
303312
}

src/Microsoft.OpenApi/Models/OpenApiMediaType.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public OpenApiMediaType() { }
5757
/// </summary>
5858
public OpenApiMediaType(OpenApiMediaType mediaType)
5959
{
60-
Schema = JsonNodeCloneHelper.CloneJsonSchema(Schema);
60+
Schema = InitializeSchema();
6161
Example = JsonNodeCloneHelper.Clone(mediaType?.Example);
6262
Examples = mediaType?.Examples != null ? new Dictionary<string, OpenApiExample>(mediaType.Examples) : null;
6363
Encoding = mediaType?.Encoding != null ? new Dictionary<string, OpenApiEncoding>(mediaType.Encoding) : null;
@@ -115,5 +115,14 @@ public void SerializeAsV2(IOpenApiWriter writer)
115115
{
116116
// Media type does not exist in V2.
117117
}
118+
119+
/// <summary>
120+
/// Clones a JSON schema instance
121+
/// </summary>
122+
/// <returns></returns>
123+
protected JsonSchema InitializeSchema()
124+
{
125+
return JsonNodeCloneHelper.CloneJsonSchema(Schema);
126+
}
118127
}
119128
}

src/Microsoft.OpenApi/Models/OpenApiParameter.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ public OpenApiParameter(OpenApiParameter parameter)
163163
Style = parameter?.Style ?? Style;
164164
Explode = parameter?.Explode ?? Explode;
165165
AllowReserved = parameter?.AllowReserved ?? AllowReserved;
166-
Schema = JsonNodeCloneHelper.CloneJsonSchema(Schema);
166+
Schema = InitializeSchema();
167167
Examples = parameter?.Examples != null ? new Dictionary<string, OpenApiExample>(parameter.Examples) : null;
168168
Example = JsonNodeCloneHelper.Clone(parameter?.Example);
169169
Content = parameter?.Content != null ? new Dictionary<string, OpenApiMediaType>(parameter.Content) : null;
@@ -447,6 +447,15 @@ public void SerializeAsV2WithoutReference(IOpenApiWriter writer)
447447

448448
return Style;
449449
}
450+
451+
/// <summary>
452+
/// Clones an instance of a JSON schema
453+
/// </summary>
454+
/// <returns></returns>
455+
protected JsonSchema InitializeSchema()
456+
{
457+
return JsonNodeCloneHelper.CloneJsonSchema(Schema);
458+
}
450459
}
451460

452461
/// <summary>

0 commit comments

Comments
 (0)