Skip to content

Commit b0bf2ae

Browse files
committed
Adds a copy constructor for all models and cleans up code
1 parent 84ed1bc commit b0bf2ae

29 files changed

+550
-11
lines changed

src/Microsoft.OpenApi/Models/OpenApiCallback.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,22 @@ public class OpenApiCallback : IOpenApiSerializable, IOpenApiReferenceable, IOpe
3535
/// </summary>
3636
public IDictionary<string, IOpenApiExtension> Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
3737

38+
/// <summary>
39+
/// Parameter-less constructor
40+
/// </summary>
41+
public OpenApiCallback() { }
42+
43+
/// <summary>
44+
/// Initializes a copy of an <see cref="OpenApiCallback"/> object
45+
/// </summary>
46+
public OpenApiCallback(OpenApiCallback callback)
47+
{
48+
PathItems = callback.PathItems;
49+
UnresolvedReference = callback.UnresolvedReference;
50+
Reference = callback.Reference;
51+
Extensions = callback.Extensions;
52+
}
53+
3854
/// <summary>
3955
/// Add a <see cref="OpenApiPathItem"/> into the <see cref="PathItems"/>.
4056
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiComponents.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,28 @@ public class OpenApiComponents : IOpenApiSerializable, IOpenApiExtensible
6868
/// </summary>
6969
public IDictionary<string, IOpenApiExtension> Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
7070

71+
/// <summary>
72+
/// Parameter-less constructor
73+
/// </summary>
74+
public OpenApiComponents() { }
75+
76+
/// <summary>
77+
/// Initializes a copy of an <see cref="OpenApiComponents"/> object
78+
/// </summary>
79+
public OpenApiComponents(OpenApiComponents components)
80+
{
81+
Schemas = components.Schemas;
82+
Responses = components.Responses;
83+
Parameters = components.Parameters;
84+
Examples = components.Examples;
85+
RequestBodies = components.RequestBodies;
86+
Headers = components.Headers;
87+
SecuritySchemes = components.SecuritySchemes;
88+
Links = components.Links;
89+
Callbacks = components.Callbacks;
90+
Extensions = components.Extensions;
91+
}
92+
7193
/// <summary>
7294
/// Serialize <see cref="OpenApiComponents"/> to Open Api v3.0.
7395
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiContact.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,22 @@ public class OpenApiContact : IOpenApiSerializable, IOpenApiExtensible
3535
/// </summary>
3636
public IDictionary<string, IOpenApiExtension> Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
3737

38+
/// <summary>
39+
/// Parameter-less constructor
40+
/// </summary>
41+
public OpenApiContact() { }
42+
43+
/// <summary>
44+
/// Initializes a copy of an <see cref="OpenApiContact"/> instance
45+
/// </summary>
46+
public OpenApiContact(OpenApiContact contact)
47+
{
48+
Name = contact.Name;
49+
Url = contact.Url;
50+
Email = contact.Email;
51+
Extensions = contact.Extensions;
52+
}
53+
3854
/// <summary>
3955
/// Serialize <see cref="OpenApiContact"/> to Open Api v3.0
4056
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiDiscriminator.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,20 @@ public class OpenApiDiscriminator : IOpenApiSerializable
2222
/// </summary>
2323
public IDictionary<string, string> Mapping { get; set; } = new Dictionary<string, string>();
2424

25+
/// <summary>
26+
/// Parameter-less constructor
27+
/// </summary>
28+
public OpenApiDiscriminator() { }
29+
30+
/// <summary>
31+
/// Initializes a copy of an <see cref="OpenApiDiscriminator"/> instance
32+
/// </summary>
33+
public OpenApiDiscriminator(OpenApiDiscriminator discriminator)
34+
{
35+
PropertyName = discriminator.PropertyName;
36+
Mapping = discriminator.Mapping;
37+
}
38+
2539
/// <summary>
2640
/// Serialize <see cref="OpenApiDiscriminator"/> to Open Api v3.0
2741
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiDocument.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Linq;
7-
using System.Runtime.CompilerServices;
8-
using Microsoft.OpenApi.Any;
97
using Microsoft.OpenApi.Exceptions;
108
using Microsoft.OpenApi.Interfaces;
119
using Microsoft.OpenApi.Services;
@@ -64,6 +62,27 @@ public class OpenApiDocument : IOpenApiSerializable, IOpenApiExtensible
6462
/// </summary>
6563
public IDictionary<string, IOpenApiExtension> Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
6664

65+
/// <summary>
66+
/// Parameter-less constructor
67+
/// </summary>
68+
public OpenApiDocument() {}
69+
70+
/// <summary>
71+
/// Initializes a copy of an an <see cref="OpenApiDocument"/> object
72+
/// </summary>
73+
public OpenApiDocument(OpenApiDocument document)
74+
{
75+
Workspace = document.Workspace;
76+
Info = document.Info;
77+
Servers = document.Servers;
78+
Paths = document.Paths;
79+
Components = document.Components;
80+
SecurityRequirements = document.SecurityRequirements;
81+
Tags = document.Tags;
82+
ExternalDocs = document.ExternalDocs;
83+
Extensions = document.Extensions;
84+
}
85+
6786
/// <summary>
6887
/// Serialize <see cref="OpenApiDocument"/> to the latest patch of OpenAPI object V3.0.
6988
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiEncoding.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,24 @@ public class OpenApiEncoding : IOpenApiSerializable, IOpenApiExtensible
5353
/// </summary>
5454
public IDictionary<string, IOpenApiExtension> Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
5555

56+
/// <summary>
57+
/// Parameter-less constructor
58+
/// </summary>
59+
public OpenApiEncoding() {}
60+
61+
/// <summary>
62+
/// Initializes a copy of an <see cref="OpenApiEncoding"/> object
63+
/// </summary>
64+
public OpenApiEncoding(OpenApiEncoding encoding)
65+
{
66+
ContentType = encoding.ContentType;
67+
Headers = encoding.Headers;
68+
Style = encoding.Style;
69+
Explode = encoding.Explode;
70+
AllowReserved = encoding.AllowReserved;
71+
Extensions = encoding.Extensions;
72+
}
73+
5674
/// <summary>
5775
/// Serialize <see cref="OpenApiExternalDocs"/> to Open Api v3.0.
5876
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiError.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@ public OpenApiError(string pointer, string message)
2626
Message = message;
2727
}
2828

29+
/// <summary>
30+
/// Initializes a copy of an <see cref="OpenApiError"/> object
31+
/// </summary>
32+
public OpenApiError(OpenApiError error)
33+
{
34+
Pointer = error.Pointer;
35+
Message = error.Message;
36+
}
37+
2938
/// <summary>
3039
/// Message explaining the error.
3140
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiExample.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,25 @@ public class OpenApiExample : IOpenApiSerializable, IOpenApiReferenceable, IOpen
5454
/// </summary>
5555
public bool UnresolvedReference { get; set; } = false;
5656

57+
/// <summary>
58+
/// Parameter-less constructor
59+
/// </summary>
60+
public OpenApiExample() {}
61+
62+
/// <summary>
63+
/// Initializes a copy of <see cref="OpenApiExample"/> object
64+
/// </summary>
65+
public OpenApiExample(OpenApiExample example)
66+
{
67+
Summary = example.Summary;
68+
Description = example.Description;
69+
Value = example.Value;
70+
ExternalValue = example.ExternalValue;
71+
Extensions = example.Extensions;
72+
Reference = example.Reference;
73+
UnresolvedReference = example.UnresolvedReference;
74+
}
75+
5776
/// <summary>
5877
/// Serialize <see cref="OpenApiExample"/> to Open Api v3.0
5978
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiExternalDocs.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,21 @@ public class OpenApiExternalDocs : IOpenApiSerializable, IOpenApiExtensible
2929
/// </summary>
3030
public IDictionary<string, IOpenApiExtension> Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
3131

32+
/// <summary>
33+
/// Parameter-less constructor
34+
/// </summary>
35+
public OpenApiExternalDocs() {}
36+
37+
/// <summary>
38+
/// Initializes a copy of an <see cref="OpenApiExternalDocs"/> object
39+
/// </summary>
40+
public OpenApiExternalDocs(OpenApiExternalDocs externalDocs)
41+
{
42+
Description = externalDocs.Description;
43+
Url = externalDocs.Url;
44+
Extensions = externalDocs.Extensions;
45+
}
46+
3247
/// <summary>
3348
/// Serialize <see cref="OpenApiExternalDocs"/> to Open Api v3.0.
3449
/// </summary>

src/Microsoft.OpenApi/Models/OpenApiHeader.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,32 @@ public class OpenApiHeader : IOpenApiSerializable, IOpenApiReferenceable, IOpenA
8686
/// </summary>
8787
public IDictionary<string, IOpenApiExtension> Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
8888

89+
/// <summary>
90+
/// Parameter-less constructor
91+
/// </summary>
92+
public OpenApiHeader() {}
93+
94+
/// <summary>
95+
/// Initializes a copy of an <see cref="OpenApiHeader"/> object
96+
/// </summary>
97+
public OpenApiHeader(OpenApiHeader header)
98+
{
99+
UnresolvedReference = header.UnresolvedReference;
100+
Reference = header.Reference;
101+
Description = header.Description;
102+
Required = header.Required;
103+
Deprecated = header.Deprecated;
104+
AllowEmptyValue = header.AllowEmptyValue;
105+
Style = header.Style;
106+
Explode = header.Explode;
107+
AllowReserved = header.AllowReserved;
108+
Schema = header.Schema;
109+
Example = header.Example;
110+
Examples = header.Examples;
111+
Content = header.Content;
112+
Extensions = header.Extensions;
113+
}
114+
89115
/// <summary>
90116
/// Serialize <see cref="OpenApiHeader"/> to Open Api v3.0
91117
/// </summary>

0 commit comments

Comments
 (0)