From 8162f333164bae59ca714b30fe1362da913d8c10 Mon Sep 17 00:00:00 2001 From: Pierre-Yves FARE <pyfare@gmail.com> Date: Mon, 17 Feb 2025 15:51:28 +0000 Subject: [PATCH] Mark PostTransactionAsync as deprecated since ArangoDB 3.12 --- .../Serialization/JsonNetApiClientSerializationTest.cs | 7 +++++-- .../TransactionApi/TransactionApiClientTest.cs | 6 +++++- .../TransactionApi/ITransactionApiClient.cs | 10 ++++++++-- .../TransactionApi/Models/PostTransactionBody.cs | 4 +++- .../TransactionApi/TransactionApiClient.cs | 1 + 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/arangodb-net-standard.Test/Serialization/JsonNetApiClientSerializationTest.cs b/arangodb-net-standard.Test/Serialization/JsonNetApiClientSerializationTest.cs index 2fde95a7..bb146cb1 100644 --- a/arangodb-net-standard.Test/Serialization/JsonNetApiClientSerializationTest.cs +++ b/arangodb-net-standard.Test/Serialization/JsonNetApiClientSerializationTest.cs @@ -2,7 +2,7 @@ using ArangoDBNetStandard.Serialization; using ArangoDBNetStandard.TransactionApi.Models; using ArangoDBNetStandardTest.Serialization.Models; -using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.IO; using System.Text; @@ -184,7 +184,7 @@ public void Serialize_ShouldCamelCaseBindVars_WhenSerializingPostCursorBodyWithD var serialization = new JsonNetApiClientSerialization(); byte[] jsonBytes = serialization.Serialize(body, new ApiClientSerializationOptions( - useCamelCasePropertyNames: true, + useCamelCasePropertyNames: true, ignoreNullValues: true, applySerializationOptionsToDictionaryValues: true)); @@ -197,6 +197,7 @@ public void Serialize_ShouldCamelCaseBindVars_WhenSerializingPostCursorBodyWithD } [Fact] + [Obsolete] public void Serialize_ShouldNotCamelCaseParams_WhenSerializingPostTransactionBody() { var body = new PostTransactionBody @@ -223,6 +224,7 @@ public void Serialize_ShouldNotCamelCaseParams_WhenSerializingPostTransactionBod [Fact] + [Obsolete] public void Serialize_ShouldCamelCaseParams_WhenSerializingPostTransactionBodyWithDictionaryOption() { var body = new PostTransactionBody @@ -268,6 +270,7 @@ public void Serialize_ShouldNotIgnoreNull_WhenSerializingPostCursorBody() } [Fact] + [Obsolete] public void Serialize_ShouldNotIgnoreNull_WhenSerializingPostTransactionBody() { var body = new PostTransactionBody diff --git a/arangodb-net-standard.Test/TransactionApi/TransactionApiClientTest.cs b/arangodb-net-standard.Test/TransactionApi/TransactionApiClientTest.cs index 093cbc9a..7c0d8682 100644 --- a/arangodb-net-standard.Test/TransactionApi/TransactionApiClientTest.cs +++ b/arangodb-net-standard.Test/TransactionApi/TransactionApiClientTest.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using ArangoDBNetStandard; @@ -250,6 +251,7 @@ public async Task GetTransactionStatus_ShouldThrowException_WhenTheTransctionIdI /// Tests that a post JS transaction succeeds. /// </summary> [Fact] + [Obsolete] public async Task PostTransaction_ShouldSucceed() { await _adb.Document.PostDocumentAsync( @@ -295,6 +297,7 @@ await _adb.Document.PostDocumentAsync( /// </summary> /// <exception cref="ApiErrorException">With ErrorNum 10 missing/invalid action definition for transaction.</exception> [Fact] + [Obsolete] public async Task PostTransaction_ShouldThrow_WhenFunctionDefinitionHasSyntaxErrors() { var ex = await Assert.ThrowsAsync<ApiErrorException>(async () => @@ -314,6 +317,7 @@ await _adb.Transaction.PostTransactionAsync<object>(new PostTransactionBody /// </summary> /// <exception cref="ApiErrorException">With ErrorNum 10 missing/invalid collections definition for transaction.</exception> [Fact] + [Obsolete] public async Task PostTransaction_ShouldThrow_WhenWriteCollectionIsNotDeclared() { var ex = await Assert.ThrowsAsync<ApiErrorException>(async () => diff --git a/arangodb-net-standard/TransactionApi/ITransactionApiClient.cs b/arangodb-net-standard/TransactionApi/ITransactionApiClient.cs index 7fc0bd4b..1b88462b 100644 --- a/arangodb-net-standard/TransactionApi/ITransactionApiClient.cs +++ b/arangodb-net-standard/TransactionApi/ITransactionApiClient.cs @@ -1,4 +1,5 @@ -using System.Threading; +using System; +using System.Threading; using System.Threading.Tasks; using ArangoDBNetStandard.TransactionApi.Models; @@ -87,12 +88,17 @@ Task<StreamTransactionResponse> GetTransactionStatus(string transactionId, CancellationToken token = default); /// <summary> - /// POST a transaction to ArangoDB. + /// [DEPRECATED] POST a JavaScript Transaction to ArangoDB. /// </summary> + /// <remarks> + /// JavaScript Transactions are deprecated from v3.12.0 onward and will be removed in a future version. + /// https://docs.arangodb.com/stable/release-notes/version-3.12/incompatible-changes-in-3-12/#javascript-transactions-deprecated + /// </remarks> /// <typeparam name="T">Type to use for deserializing the object returned by the transaction function.</typeparam> /// <param name="body">Object containing information to submit in the POST transaction request.</param> /// <param name="token">A CancellationToken to observe while waiting for the task to complete or to cancel the task.</param> /// <returns>Response from ArangoDB after processing the request.</returns> + [Obsolete("JavaScript Transactions are deprecated in ArangoDB 3.12, use Stream Transactions instead.")] Task<PostTransactionResponse<T>> PostTransactionAsync<T>(PostTransactionBody body, CancellationToken token = default); } diff --git a/arangodb-net-standard/TransactionApi/Models/PostTransactionBody.cs b/arangodb-net-standard/TransactionApi/Models/PostTransactionBody.cs index a6835bd1..08b6e657 100644 --- a/arangodb-net-standard/TransactionApi/Models/PostTransactionBody.cs +++ b/arangodb-net-standard/TransactionApi/Models/PostTransactionBody.cs @@ -1,10 +1,12 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace ArangoDBNetStandard.TransactionApi.Models { /// <summary> /// Represents information required to make a transaction request to ArangoDB. /// </summary> + [Obsolete] public class PostTransactionBody { /// <summary> diff --git a/arangodb-net-standard/TransactionApi/TransactionApiClient.cs b/arangodb-net-standard/TransactionApi/TransactionApiClient.cs index 8f8af105..058a2f08 100644 --- a/arangodb-net-standard/TransactionApi/TransactionApiClient.cs +++ b/arangodb-net-standard/TransactionApi/TransactionApiClient.cs @@ -61,6 +61,7 @@ public TransactionApiClient(IApiClientTransport client, IApiClientSerialization /// <param name="body">Object containing information to submit in the POST transaction request.</param> /// <param name="token">A CancellationToken to observe while waiting for the task to complete or to cancel the task.</param> /// <returns>Response from ArangoDB after processing the request.</returns> + [Obsolete] public virtual async Task<PostTransactionResponse<T>> PostTransactionAsync<T>( PostTransactionBody body, CancellationToken token = default)