Skip to content

Commit cdd5fda

Browse files
authored
Edit Use OperationType in PathItems.Operation
We can use OperationType in PathItems.Operation now. The deserializer already takes care of converting string to the right enum value. (#77)
1 parent b92b695 commit cdd5fda

File tree

5 files changed

+15
-21
lines changed

5 files changed

+15
-21
lines changed

src/Microsoft.OpenApi/Models/OpenApiPathItem.cs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ namespace Microsoft.OpenApi.Models
1717
/// </summary>
1818
public class OpenApiPathItem : OpenApiElement, IOpenApiExtension
1919
{
20-
private readonly IDictionary<OperationType, OpenApiOperation> _operations
21-
= new Dictionary<OperationType, OpenApiOperation>();
22-
2320
/// <summary>
2421
/// An optional, string summary, intended to apply to all operations in this path.
2522
/// </summary>
@@ -33,13 +30,8 @@ private readonly IDictionary<OperationType, OpenApiOperation> _operations
3330
/// <summary>
3431
/// Gets the definition of operations on this path.
3532
/// </summary>
36-
public IReadOnlyDictionary<string, OpenApiOperation> Operations
37-
{
38-
get
39-
{
40-
return _operations.ToDictionary(o => o.Key.GetDisplayName(), o => o.Value);
41-
}
42-
}
33+
public IDictionary<OperationType, OpenApiOperation> Operations { get; }
34+
= new Dictionary<OperationType, OpenApiOperation>();
4335

4436
/// <summary>
4537
/// An alternative server array to service all operations in this path.
@@ -64,7 +56,7 @@ public IReadOnlyDictionary<string, OpenApiOperation> Operations
6456
/// <param name="operation">The operation item.</param>
6557
public void AddOperation(OperationType operationType, OpenApiOperation operation)
6658
{
67-
_operations[operationType] = operation;
59+
Operations[operationType] = operation;
6860
}
6961

7062
/// <summary>
@@ -86,7 +78,7 @@ internal override void WriteAsV3(IOpenApiWriter writer)
8678
writer.WriteProperty(OpenApiConstants.Description, Description);
8779

8880
// operations
89-
foreach (var operation in _operations)
81+
foreach (var operation in Operations)
9082
{
9183
writer.WriteOptionalObject(operation.Key.GetDisplayName(), operation.Value, (w, o) => o.WriteAsV3(w));
9284
}
@@ -116,7 +108,7 @@ internal override void WriteAsV2(IOpenApiWriter writer)
116108
writer.WriteStartObject();
117109

118110
// operations except "trace"
119-
foreach (var operation in _operations)
111+
foreach (var operation in Operations)
120112
{
121113
if (operation.Key != OperationType.Trace)
122114
{

src/Microsoft.OpenApi/Services/OpenApiVisitorBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public virtual void Visit(OpenApiServer server) { }
1717
public virtual void Visit(OpenApiPaths paths) { }
1818
public virtual void Visit(OpenApiPathItem pathItem) { }
1919
public virtual void Visit(OpenApiServerVariable serverVariable) { }
20-
public virtual void Visit(IReadOnlyDictionary<string,OpenApiOperation> operations) { }
20+
public virtual void Visit(IDictionary<OperationType,OpenApiOperation> operations) { }
2121
public virtual void Visit(OpenApiOperation operation) { }
2222
public virtual void Visit(IList<OpenApiParameter> parameters) { }
2323
public virtual void Visit(OpenApiParameter parameter) { }

test/Microsoft.OpenApi.Readers.Tests/CallbackTests.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// ------------------------------------------------------------
55

66
using System.Linq;
7+
using Microsoft.OpenApi.Models;
78
using Xunit;
89

910
namespace Microsoft.OpenApi.Readers.Tests
@@ -18,11 +19,11 @@ public void LoadSimpleCallback()
1819
var openApiDoc = new OpenApiStreamReader().Read(stream, out var context);
1920

2021
var path = openApiDoc.Paths.First().Value;
21-
var subscribeOperation = path.Operations["post"];
22+
var subscribeOperation = path.Operations[OperationType.Post];
2223

2324
var callback = subscribeOperation.Callbacks["mainHook"];
2425
var pathItem = callback.PathItems.First().Value;
25-
var operation = pathItem.Operations["post"];
26+
var operation = pathItem.Operations[OperationType.Post];
2627

2728
Assert.NotNull(operation);
2829
}
@@ -49,7 +50,7 @@ public void LoadSimpleCallbackWithRefs()
4950

5051
var operationPair = pathItem.Operations.First();
5152
var cboperation = operationPair.Value;
52-
Assert.Equal("post", operationPair.Key);
53+
Assert.Equal(OperationType.Post, operationPair.Key);
5354

5455
Assert.NotNull(callback);
5556
}

test/Microsoft.OpenApi.Readers.Tests/OperationTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void CheckPetStoreFirstOperation()
2828
{
2929
var firstPath = _PetStoreDoc.Paths.First().Value;
3030
var firstOperation = firstPath.Operations.First();
31-
Assert.Equal("get", firstOperation.Key);
31+
Assert.Equal(OperationType.Get, firstOperation.Key);
3232
Assert.Equal("findPets", firstOperation.Value.OperationId);
3333
Assert.Equal(2, firstOperation.Value.Parameters.Count);
3434
}
@@ -65,7 +65,7 @@ public void DoesAPathExist()
6565
[Fact]
6666
public void GetPostOperation()
6767
{
68-
var postOperation = _PetStoreDoc.Paths["/pets"].Operations["post"];
68+
var postOperation = _PetStoreDoc.Paths["/pets"].Operations[OperationType.Post];
6969

7070
Assert.Equal("addPet", postOperation.OperationId);
7171

@@ -75,7 +75,7 @@ public void GetPostOperation()
7575
[Fact]
7676
public void GetResponses()
7777
{
78-
var getOperation = _PetStoreDoc.Paths["/pets"].Operations["get"];
78+
var getOperation = _PetStoreDoc.Paths["/pets"].Operations[OperationType.Get];
7979

8080
var responses = getOperation.Responses;
8181

test/Microsoft.OpenApi.Readers.Tests/SchemaTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// Licensed under the MIT License (MIT). See LICENSE in the repo root for license information.
44
// ------------------------------------------------------------
55

6+
using Microsoft.OpenApi.Models;
67
using Microsoft.OpenApi.Readers.ParseNodes;
78
using Microsoft.OpenApi.Readers.V3;
89
using Xunit;
@@ -18,7 +19,7 @@ public void CheckPetStoreApiInfo()
1819

1920
var openApiDoc = new OpenApiStreamReader().Read(stream, out var context);
2021

21-
var operation = openApiDoc.Paths["/pets"].Operations["get"];
22+
var operation = openApiDoc.Paths["/pets"].Operations[OperationType.Get];
2223
var schema = operation.Responses["200"].Content["application/json"].Schema;
2324
Assert.NotNull(schema);
2425
}

0 commit comments

Comments
 (0)