From e3c680b42fe729dc67be42eca01cff9adc8684a4 Mon Sep 17 00:00:00 2001 From: Irvine Sunday Date: Thu, 24 Oct 2024 20:16:24 +0300 Subject: [PATCH 1/3] Disambiguate put and patch operation ids --- .../Operation/ComplexPropertyUpdateOperationHandler.cs | 5 +++-- .../Operation/EntityUpdateOperationHandler.cs | 3 ++- .../Operation/NavigationPropertyUpdateOperationHandler.cs | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Microsoft.OpenApi.OData.Reader/Operation/ComplexPropertyUpdateOperationHandler.cs b/src/Microsoft.OpenApi.OData.Reader/Operation/ComplexPropertyUpdateOperationHandler.cs index e9a40921c..cb9e616f1 100644 --- a/src/Microsoft.OpenApi.OData.Reader/Operation/ComplexPropertyUpdateOperationHandler.cs +++ b/src/Microsoft.OpenApi.OData.Reader/Operation/ComplexPropertyUpdateOperationHandler.cs @@ -39,8 +39,9 @@ protected override void SetBasicInfo(OpenApiOperation operation) // OperationId if (Context.Settings.EnableOperationId) - { - operation.OperationId = EdmModelHelper.GenerateComplexPropertyPathOperationId(Path, Context, "Update"); + { + string prefix = OperationType == OperationType.Patch ? "Update" : "Set"; + operation.OperationId = EdmModelHelper.GenerateComplexPropertyPathOperationId(Path, Context, prefix); } } diff --git a/src/Microsoft.OpenApi.OData.Reader/Operation/EntityUpdateOperationHandler.cs b/src/Microsoft.OpenApi.OData.Reader/Operation/EntityUpdateOperationHandler.cs index eb317b3f0..3595b30b7 100644 --- a/src/Microsoft.OpenApi.OData.Reader/Operation/EntityUpdateOperationHandler.cs +++ b/src/Microsoft.OpenApi.OData.Reader/Operation/EntityUpdateOperationHandler.cs @@ -50,7 +50,8 @@ protected override void SetBasicInfo(OpenApiOperation operation) if (Context.Settings.EnableOperationId) { string typeName = entityType.Name; - string operationName = $"Update{ Utils.UpperFirstChar(typeName)}"; + string prefix = OperationType == OperationType.Patch ? "Update" : "Set"; + string operationName = $"{prefix}{ Utils.UpperFirstChar(typeName)}"; if (keySegment.IsAlternateKey) { string alternateKeyName = string.Join("", keySegment.Identifier.Split(',').Select(static x => Utils.UpperFirstChar(x))); diff --git a/src/Microsoft.OpenApi.OData.Reader/Operation/NavigationPropertyUpdateOperationHandler.cs b/src/Microsoft.OpenApi.OData.Reader/Operation/NavigationPropertyUpdateOperationHandler.cs index 0ae4b5009..35a47c932 100644 --- a/src/Microsoft.OpenApi.OData.Reader/Operation/NavigationPropertyUpdateOperationHandler.cs +++ b/src/Microsoft.OpenApi.OData.Reader/Operation/NavigationPropertyUpdateOperationHandler.cs @@ -41,7 +41,7 @@ protected override void SetBasicInfo(OpenApiOperation operation) // OperationId if (Context.Settings.EnableOperationId) { - string prefix = "Update"; + string prefix = OperationType == OperationType.Patch ? "Update" : "Set"; operation.OperationId = GetOperationId(prefix); } From 5504d985ade8e5c658fd1ac155ea75d7aa6ac1bc Mon Sep 17 00:00:00 2001 From: Irvine Sunday Date: Fri, 25 Oct 2024 20:24:46 +0300 Subject: [PATCH 2/3] Update tests --- .../Operation/ComplexPropertyPutOperationHandlerTests.cs | 4 ++-- .../Operation/EntityPutOperationHandlerTests.cs | 2 +- .../Operation/NavigationPropertyPutOperationHandlerTests.cs | 2 +- .../Resources/TripService.OpenApi.V2.json | 4 ++-- .../Resources/TripService.OpenApi.V2.yaml | 4 ++-- .../Resources/TripService.OpenApi.json | 4 ++-- .../Resources/TripService.OpenApi.yaml | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/ComplexPropertyPutOperationHandlerTests.cs b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/ComplexPropertyPutOperationHandlerTests.cs index e7c317ecd..bde8ab378 100644 --- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/ComplexPropertyPutOperationHandlerTests.cs +++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/ComplexPropertyPutOperationHandlerTests.cs @@ -61,7 +61,7 @@ public void CreateComplexPropertyPutOperationReturnsCorrectOperationForSingle(bo if (enableOperationId) { - Assert.Equal("Customers.UpdateBillingAddress", put.OperationId); + Assert.Equal("Customers.SetBillingAddress", put.OperationId); } else { @@ -108,7 +108,7 @@ public void CreateComplexPropertyPutOperationReturnsCorrectOperationForCollectio if (enableOperationId) { - Assert.Equal("Customers.UpdateAlternativeAddresses", put.OperationId); + Assert.Equal("Customers.SetAlternativeAddresses", put.OperationId); } else { diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EntityPutOperationHandlerTests.cs b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EntityPutOperationHandlerTests.cs index b3b677409..96634cd4c 100644 --- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EntityPutOperationHandlerTests.cs +++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/EntityPutOperationHandlerTests.cs @@ -66,7 +66,7 @@ public void CreateEntityPutOperationReturnsCorrectOperation(bool enableOperation if (enableOperationId) { - Assert.Equal("Customers.Customer.UpdateCustomer", putOperation.OperationId); + Assert.Equal("Customers.Customer.SetCustomer", putOperation.OperationId); } else { diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/NavigationPropertyPutOperationHandlerTests.cs b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/NavigationPropertyPutOperationHandlerTests.cs index 4f23fc411..91f1763ae 100644 --- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/NavigationPropertyPutOperationHandlerTests.cs +++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Operation/NavigationPropertyPutOperationHandlerTests.cs @@ -71,7 +71,7 @@ public void CreateNavigationPutOperationReturnsCorrectOperation(bool enableOpera if (enableOperationId) { - Assert.Equal("People.UpdateBestFriend", operation.OperationId); + Assert.Equal("People.SetBestFriend", operation.OperationId); } else { diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json index 66b473dd9..2d2dfadba 100644 --- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json +++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.json @@ -165,7 +165,7 @@ "Airlines.Airline" ], "summary": "Update entity in Airlines", - "operationId": "Airlines.Airline.UpdateAirline", + "operationId": "Airlines.Airline.SetAirline", "consumes": [ "application/json" ], @@ -534,7 +534,7 @@ "Airports.AirportLocation" ], "summary": "Update property Location value.", - "operationId": "Airports.UpdateLocation", + "operationId": "Airports.SetLocation", "consumes": [ "application/json" ], diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml index cdfc23d3c..a725e263c 100644 --- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml +++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.V2.yaml @@ -107,7 +107,7 @@ paths: tags: - Airlines.Airline summary: Update entity in Airlines - operationId: Airlines.Airline.UpdateAirline + operationId: Airlines.Airline.SetAirline consumes: - application/json parameters: @@ -349,7 +349,7 @@ paths: tags: - Airports.AirportLocation summary: Update property Location value. - operationId: Airports.UpdateLocation + operationId: Airports.SetLocation consumes: - application/json parameters: diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json index ca9d60f85..6e7c19f9b 100644 --- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json +++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.json @@ -192,7 +192,7 @@ "Airlines.Airline" ], "summary": "Update entity in Airlines", - "operationId": "Airlines.Airline.UpdateAirline", + "operationId": "Airlines.Airline.SetAirline", "parameters": [ { "name": "AirlineCode", @@ -609,7 +609,7 @@ "Airports.AirportLocation" ], "summary": "Update property Location value.", - "operationId": "Airports.UpdateLocation", + "operationId": "Airports.SetLocation", "parameters": [ { "name": "IcaoCode", diff --git a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml index 9be2c24ce..968aec797 100644 --- a/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml +++ b/test/Microsoft.OpenAPI.OData.Reader.Tests/Resources/TripService.OpenApi.yaml @@ -125,7 +125,7 @@ paths: tags: - Airlines.Airline summary: Update entity in Airlines - operationId: Airlines.Airline.UpdateAirline + operationId: Airlines.Airline.SetAirline parameters: - name: AirlineCode in: path @@ -398,7 +398,7 @@ paths: tags: - Airports.AirportLocation summary: Update property Location value. - operationId: Airports.UpdateLocation + operationId: Airports.SetLocation parameters: - name: IcaoCode in: path From b5f53572026a3f37ee0ad56823f95fcdae0e8258 Mon Sep 17 00:00:00 2001 From: Irvine Sunday Date: Fri, 25 Oct 2024 20:34:38 +0300 Subject: [PATCH 3/3] Updates release note --- .../Microsoft.OpenAPI.OData.Reader.csproj | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj b/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj index 77cbd55ac..f87c2c29a 100644 --- a/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj +++ b/src/Microsoft.OpenApi.OData.Reader/Microsoft.OpenAPI.OData.Reader.csproj @@ -15,7 +15,7 @@ net8.0 Microsoft.OpenApi.OData true - 2.0.0-preview.6 + 2.0.0-preview.7 This package contains the codes you need to convert OData CSDL to Open API Document of Model. © Microsoft Corporation. All rights reserved. Microsoft OpenApi OData EDM @@ -32,6 +32,7 @@ - Replaced integer types by number types - Further fix for generating unique operation ids for paths with composable overloaded functions where all functions in path are overloaded #594 - Further fix for generating unique operation ids for navigation property paths with composable overloaded functions #596 + - Updates PUT operation id prefix from Update to Set #600 Microsoft.OpenApi.OData.Reader ..\..\tool\Microsoft.OpenApi.OData.snk