Skip to content

Commit e738176

Browse files
committed
Moved version into Write interface instead of settings
1 parent ba53858 commit e738176

39 files changed

+67
-143
lines changed

src/Microsoft.OpenApi/Any/OpenApiArray.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class OpenApiArray : List<IOpenApiAny>, IOpenApiAny
2020
/// Write out contents of OpenApiArray to passed writer
2121
/// </summary>
2222
/// <param name="writer">Instance of JSON or YAML writer.</param>
23-
public void Write(IOpenApiWriter writer)
23+
public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
2424
{
2525
writer.WriteStartArray();
2626

src/Microsoft.OpenApi/Any/OpenApiNull.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public class OpenApiNull : IOpenApiAny
1919
/// Write out null representation
2020
/// </summary>
2121
/// <param name="writer"></param>
22-
public void Write(IOpenApiWriter writer)
22+
/// <param name="specVersion"></param>
23+
public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
2324
{
2425
writer.WriteAny(this);
2526
}

src/Microsoft.OpenApi/Any/OpenApiObject.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class OpenApiObject : Dictionary<string, IOpenApiAny>, IOpenApiAny
2020
/// Serialize OpenApiObject to writer
2121
/// </summary>
2222
/// <param name="writer"></param>
23-
public void Write(IOpenApiWriter writer)
23+
public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
2424
{
2525
writer.WriteStartObject();
2626

src/Microsoft.OpenApi/Any/OpenApiPrimitive.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ public OpenApiPrimitive(T value)
4141
/// Write out content of primitive element
4242
/// </summary>
4343
/// <param name="writer"></param>
44-
public void Write(IOpenApiWriter writer)
44+
/// <param name="specVersion"></param>
45+
public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
4546
{
4647
switch (this.PrimitiveType)
4748
{

src/Microsoft.OpenApi/Extensions/OpenApiSerializableExtensions.cs

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ public static void Serialize<T>(
7474
throw new OpenApiException(string.Format(SRResource.OpenApiFormatNotSupported, format));
7575
}
7676

77-
writer.Settings.SpecVersion = specVersion;
78-
element.Serialize(writer);
77+
element.Serialize(writer, specVersion);
7978
}
8079

8180
/// <summary>
@@ -84,22 +83,9 @@ public static void Serialize<T>(
8483
/// <typeparam name="T">the <see cref="IOpenApiSerializable"/></typeparam>
8584
/// <param name="element">The Open API element.</param>
8685
/// <param name="writer">The output writer.</param>
87-
/// <param name="specVersion">The Open API specification version.</param>
86+
/// <param name="specVersion">Version of the specification the output should conform to</param>
8887
public static void Serialize<T>(this T element, IOpenApiWriter writer, OpenApiSpecVersion specVersion)
8988
where T : IOpenApiSerializable
90-
{
91-
writer.Settings.SpecVersion = specVersion;
92-
element.Serialize(writer);
93-
}
94-
95-
/// <summary>
96-
/// Serializes the <see cref="IOpenApiSerializable"/> to Open API document using the given specification version and writer.
97-
/// </summary>
98-
/// <typeparam name="T">the <see cref="IOpenApiSerializable"/></typeparam>
99-
/// <param name="element">The Open API element.</param>
100-
/// <param name="writer">The output writer.</param>
101-
public static void Serialize<T>(this T element, IOpenApiWriter writer)
102-
where T : IOpenApiSerializable
10389
{
10490
if (element == null)
10591
{
@@ -111,7 +97,7 @@ public static void Serialize<T>(this T element, IOpenApiWriter writer)
11197
throw Error.ArgumentNull(nameof(writer));
11298
}
11399

114-
switch (writer.Settings.SpecVersion)
100+
switch (specVersion)
115101
{
116102
case OpenApiSpecVersion.OpenApi3_0:
117103
element.SerializeAsV3(writer);
@@ -122,7 +108,7 @@ public static void Serialize<T>(this T element, IOpenApiWriter writer)
122108
break;
123109

124110
default:
125-
throw new OpenApiException(string.Format(SRResource.OpenApiSpecVersionNotSupported, writer.Settings.SpecVersion));
111+
throw new OpenApiException(string.Format(SRResource.OpenApiSpecVersionNotSupported, specVersion));
126112
}
127113

128114
writer.Flush();

src/Microsoft.OpenApi/Interfaces/IOpenApiExtension.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ public interface IOpenApiExtension
1414
/// Write out contents of custom extension
1515
/// </summary>
1616
/// <param name="writer"></param>
17-
void Write(IOpenApiWriter writer);
17+
void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion);
1818
}
1919
}

src/Microsoft.OpenApi/Models/OpenApiCallback.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public void SerializeAsV3WithoutReference(IOpenApiWriter writer)
9494
}
9595

9696
// extensions
97-
writer.WriteExtensions(Extensions);
97+
writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
9898

9999
writer.WriteEndObject();
100100
}

src/Microsoft.OpenApi/Models/OpenApiComponents.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
244244
});
245245

246246
// extensions
247-
writer.WriteExtensions(Extensions);
247+
writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
248248

249249
writer.WriteEndObject();
250250
}

src/Microsoft.OpenApi/Models/OpenApiContact.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,18 @@ public class OpenApiContact : IOpenApiSerializable, IOpenApiExtensible
4040
/// </summary>
4141
public void SerializeAsV3(IOpenApiWriter writer)
4242
{
43-
WriteInternal(writer);
43+
WriteInternal(writer, OpenApiSpecVersion.OpenApi3_0);
4444
}
4545

4646
/// <summary>
4747
/// Serialize <see cref="OpenApiContact"/> to Open Api v2.0
4848
/// </summary>
4949
public void SerializeAsV2(IOpenApiWriter writer)
5050
{
51-
WriteInternal(writer);
51+
WriteInternal(writer, OpenApiSpecVersion.OpenApi2_0);
5252
}
5353

54-
private void WriteInternal(IOpenApiWriter writer)
54+
private void WriteInternal(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
5555
{
5656
if (writer == null)
5757
{
@@ -70,7 +70,7 @@ private void WriteInternal(IOpenApiWriter writer)
7070
writer.WriteProperty(OpenApiConstants.Email, Email);
7171

7272
// extensions
73-
writer.WriteExtensions(Extensions);
73+
writer.WriteExtensions(Extensions, specVersion);
7474

7575
writer.WriteEndObject();
7676
}

src/Microsoft.OpenApi/Models/OpenApiDocument.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void SerializeAsV3(IOpenApiWriter writer)
9797
writer.WriteOptionalObject(OpenApiConstants.ExternalDocs, ExternalDocs, (w, e) => e.SerializeAsV3(w));
9898

9999
// extensions
100-
writer.WriteExtensions(Extensions);
100+
writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi3_0);
101101

102102
writer.WriteEndObject();
103103
}
@@ -214,7 +214,7 @@ public void SerializeAsV2(IOpenApiWriter writer)
214214
writer.WriteOptionalObject(OpenApiConstants.ExternalDocs, ExternalDocs, (w, e) => e.SerializeAsV2(w));
215215

216216
// extensions
217-
writer.WriteExtensions(Extensions);
217+
writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi2_0);
218218

219219
writer.WriteEndObject();
220220
}

0 commit comments

Comments
 (0)