Skip to content

Commit b98b6d0

Browse files
authored
Merge pull request #269 from Microsoft/dm/vnext/settings-fix
Fixed exposing writer Settings object
2 parents abfc519 + 10031d0 commit b98b6d0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+79
-135
lines changed

src/Microsoft.OpenApi.Readers/V2/OpenApiXmlDeserializer.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
// Licensed under the MIT license.
33

44
using System;
5+
using Microsoft.OpenApi.Exceptions;
56
using Microsoft.OpenApi.Extensions;
67
using Microsoft.OpenApi.Models;
8+
using Microsoft.OpenApi.Readers.Exceptions;
79
using Microsoft.OpenApi.Readers.ParseNodes;
810

911
namespace Microsoft.OpenApi.Readers.V2
@@ -25,7 +27,14 @@ internal static partial class OpenApiV2Deserializer
2527
{
2628
"namespace", (o, n) =>
2729
{
28-
o.Namespace = new Uri(n.GetScalarValue(), UriKind.Absolute);
30+
if (Uri.IsWellFormedUriString(n.GetScalarValue(), UriKind.Absolute))
31+
{
32+
o.Namespace = new Uri(n.GetScalarValue(), UriKind.Absolute);
33+
}
34+
else
35+
{
36+
throw new OpenApiReaderException($"Xml Namespace requires absolute URL. '{n.GetScalarValue()}' is not valid.");
37+
}
2938
}
3039
},
3140
{

src/Microsoft.OpenApi/Any/OpenApiArray.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ 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+
/// <param name="specVersion">Version of the OpenAPI specification that that will be output.</param>
24+
public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
2425
{
2526
writer.WriteStartArray();
2627

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">Version of the OpenAPI specification that that will be output.</param>
23+
public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
2324
{
2425
writer.WriteAny(this);
2526
}

src/Microsoft.OpenApi/Any/OpenApiObject.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ 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+
/// <param name="specVersion">Version of the OpenAPI specification that that will be output.</param>
24+
public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion)
2425
{
2526
writer.WriteStartObject();
2627

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: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public static void Serialize<T>(
8383
/// <typeparam name="T">the <see cref="IOpenApiSerializable"/></typeparam>
8484
/// <param name="element">The Open API element.</param>
8585
/// <param name="writer">The output writer.</param>
86-
/// <param name="specVersion">The Open API specification version.</param>
86+
/// <param name="specVersion">Version of the specification the output should conform to</param>
8787
public static void Serialize<T>(this T element, IOpenApiWriter writer, OpenApiSpecVersion specVersion)
8888
where T : IOpenApiSerializable
8989
{
@@ -114,18 +114,6 @@ public static void Serialize<T>(this T element, IOpenApiWriter writer, OpenApiSp
114114
writer.Flush();
115115
}
116116

117-
/// <summary>
118-
/// Serializes the <see cref="IOpenApiSerializable"/> to Open API document using the given specification version and writer.
119-
/// </summary>
120-
/// <typeparam name="T">the <see cref="IOpenApiSerializable"/></typeparam>
121-
/// <param name="element">The Open API element.</param>
122-
/// <param name="writer">The output writer.</param>
123-
public static void Serialize<T>(this T element, IOpenApiWriter writer)
124-
where T : IOpenApiSerializable
125-
{
126-
element.Serialize(writer, writer.Settings.SpecVersion);
127-
}
128-
129117
/// <summary>
130118
/// Serializes the <see cref="IOpenApiSerializable"/> to the Open API document as a string in JSON format.
131119
/// </summary>

src/Microsoft.OpenApi/Interfaces/IOpenApiExtension.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public interface IOpenApiExtension
1414
/// Write out contents of custom extension
1515
/// </summary>
1616
/// <param name="writer"></param>
17-
void Write(IOpenApiWriter writer);
17+
/// <param name="specVersion">Version of the OpenAPI specification that that will be output.</param>
18+
void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion);
1819
}
1920
}

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
}

0 commit comments

Comments
 (0)