Skip to content

Commit 2e516a5

Browse files
committed
Merge branch 'release/2.0.0' into mk/sync-v2-with-vnext
2 parents d04b22b + d302b5d commit 2e516a5

File tree

13 files changed

+171
-158
lines changed

13 files changed

+171
-158
lines changed

src/Microsoft.OpenApi.Hidi/Formatters/PowerShellFormatter.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ public override void Visit(OpenApiSchema schema)
5252

5353
public override void Visit(OpenApiPathItem pathItem)
5454
{
55-
if (pathItem.Operations.TryGetValue(OperationType.Put, out var value))
55+
if (pathItem.Operations.TryGetValue(OperationType.Put, out var value) &&
56+
value.OperationId != null)
5657
{
5758
var operationId = value.OperationId;
5859
pathItem.Operations[OperationType.Put].OperationId = ResolvePutOperationId(operationId);
@@ -67,14 +68,14 @@ public override void Visit(OpenApiOperation operation)
6768
throw new ArgumentException($"OperationId is required {PathString}", nameof(operation));
6869

6970
var operationId = operation.OperationId;
70-
var operationTypeExtension = operation.Extensions.GetExtension("x-ms-docs-operation-type");
71+
var operationTypeExtension = operation.Extensions?.GetExtension("x-ms-docs-operation-type");
7172
if (operationTypeExtension.IsEquals("function"))
72-
operation.Parameters = ResolveFunctionParameters(operation.Parameters);
73+
operation.Parameters = ResolveFunctionParameters(operation.Parameters ?? new List<OpenApiParameter>());
7374

7475
// Order matters. Resolve operationId.
7576
operationId = RemoveHashSuffix(operationId);
7677
if (operationTypeExtension.IsEquals("action") || operationTypeExtension.IsEquals("function"))
77-
operationId = RemoveKeyTypeSegment(operationId, operation.Parameters);
78+
operationId = RemoveKeyTypeSegment(operationId, operation.Parameters ?? new List<OpenApiParameter>());
7879
operationId = SingularizeAndDeduplicateOperationId(operationId.SplitByChar('.'));
7980
operationId = ResolveODataCastOperationId(operationId);
8081
operationId = ResolveByRefOperationId(operationId);

src/Microsoft.OpenApi/Models/OpenApiComponents.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.OpenApi.Models.References;
99
using Microsoft.OpenApi.Writers;
1010

11+
#nullable enable
1112

1213
namespace Microsoft.OpenApi.Models
1314
{
@@ -19,60 +20,60 @@ public class OpenApiComponents : IOpenApiSerializable, IOpenApiExtensible
1920
/// <summary>
2021
/// An object to hold reusable <see cref="OpenApiSchema"/> Objects.
2122
/// </summary>
22-
public IDictionary<string, OpenApiSchema> Schemas { get; set; } = new Dictionary<string, OpenApiSchema>();
23+
public IDictionary<string, OpenApiSchema>? Schemas { get; set; } = new Dictionary<string, OpenApiSchema>();
2324

2425
/// <summary>
2526
/// An object to hold reusable <see cref="OpenApiResponse"/> Objects.
2627
/// </summary>
27-
public virtual IDictionary<string, OpenApiResponse> Responses { get; set; } = new Dictionary<string, OpenApiResponse>();
28+
public virtual IDictionary<string, OpenApiResponse>? Responses { get; set; } = new Dictionary<string, OpenApiResponse>();
2829

2930
/// <summary>
3031
/// An object to hold reusable <see cref="OpenApiParameter"/> Objects.
3132
/// </summary>
32-
public virtual IDictionary<string, OpenApiParameter> Parameters { get; set; } =
33+
public virtual IDictionary<string, OpenApiParameter>? Parameters { get; set; } =
3334
new Dictionary<string, OpenApiParameter>();
3435

3536
/// <summary>
3637
/// An object to hold reusable <see cref="OpenApiExample"/> Objects.
3738
/// </summary>
38-
public virtual IDictionary<string, OpenApiExample> Examples { get; set; } = new Dictionary<string, OpenApiExample>();
39+
public virtual IDictionary<string, OpenApiExample>? Examples { get; set; } = new Dictionary<string, OpenApiExample>();
3940

4041
/// <summary>
4142
/// An object to hold reusable <see cref="OpenApiRequestBody"/> Objects.
4243
/// </summary>
43-
public virtual IDictionary<string, OpenApiRequestBody> RequestBodies { get; set; } =
44+
public virtual IDictionary<string, OpenApiRequestBody>? RequestBodies { get; set; } =
4445
new Dictionary<string, OpenApiRequestBody>();
4546

4647
/// <summary>
4748
/// An object to hold reusable <see cref="OpenApiHeader"/> Objects.
4849
/// </summary>
49-
public virtual IDictionary<string, OpenApiHeader> Headers { get; set; } = new Dictionary<string, OpenApiHeader>();
50+
public virtual IDictionary<string, OpenApiHeader>? Headers { get; set; } = new Dictionary<string, OpenApiHeader>();
5051

5152
/// <summary>
5253
/// An object to hold reusable <see cref="OpenApiSecurityScheme"/> Objects.
5354
/// </summary>
54-
public virtual IDictionary<string, OpenApiSecurityScheme> SecuritySchemes { get; set; } =
55+
public virtual IDictionary<string, OpenApiSecurityScheme>? SecuritySchemes { get; set; } =
5556
new Dictionary<string, OpenApiSecurityScheme>();
5657

5758
/// <summary>
5859
/// An object to hold reusable <see cref="OpenApiLink"/> Objects.
5960
/// </summary>
60-
public virtual IDictionary<string, OpenApiLink> Links { get; set; } = new Dictionary<string, OpenApiLink>();
61+
public virtual IDictionary<string, OpenApiLink>? Links { get; set; } = new Dictionary<string, OpenApiLink>();
6162

6263
/// <summary>
6364
/// An object to hold reusable <see cref="OpenApiCallback"/> Objects.
6465
/// </summary>
65-
public virtual IDictionary<string, OpenApiCallback> Callbacks { get; set; } = new Dictionary<string, OpenApiCallback>();
66+
public virtual IDictionary<string, OpenApiCallback>? Callbacks { get; set; } = new Dictionary<string, OpenApiCallback>();
6667

6768
/// <summary>
6869
/// An object to hold reusable <see cref="OpenApiPathItem"/> Object.
6970
/// </summary>
70-
public virtual IDictionary<string, OpenApiPathItem> PathItems { get; set; } = new Dictionary<string, OpenApiPathItem>();
71+
public virtual IDictionary<string, OpenApiPathItem>? PathItems { get; set; } = new Dictionary<string, OpenApiPathItem>();
7172

7273
/// <summary>
7374
/// This object MAY be extended with Specification Extensions.
7475
/// </summary>
75-
public virtual IDictionary<string, IOpenApiExtension> Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
76+
public virtual IDictionary<string, IOpenApiExtension>? Extensions { get; set; } = new Dictionary<string, IOpenApiExtension>();
7677

7778
/// <summary>
7879
/// Parameter-less constructor
@@ -82,7 +83,7 @@ public OpenApiComponents() { }
8283
/// <summary>
8384
/// Initializes a copy of an <see cref="OpenApiComponents"/> object
8485
/// </summary>
85-
public OpenApiComponents(OpenApiComponents components)
86+
public OpenApiComponents(OpenApiComponents? components)
8687
{
8788
Schemas = components?.Schemas != null ? new Dictionary<string, OpenApiSchema>(components.Schemas) : null;
8889
Responses = components?.Responses != null ? new Dictionary<string, OpenApiResponse>(components.Responses) : null;

0 commit comments

Comments
 (0)