From f8353526dd37c857a27ab3a9674ce8b82b2289be Mon Sep 17 00:00:00 2001 From: Henrique <999396+hjgraca@users.noreply.github.com> Date: Wed, 14 May 2025 19:42:20 +0100 Subject: [PATCH] feat(JsonTransformer): add AOT support and configure JSON serializer options --- .../Internal/Transform/JsonTransformer.cs | 21 ++++++++++++++++++- .../AppConfig/AppConfigProviderTest.cs | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/libraries/src/AWS.Lambda.Powertools.Parameters/Internal/Transform/JsonTransformer.cs b/libraries/src/AWS.Lambda.Powertools.Parameters/Internal/Transform/JsonTransformer.cs index 36f19a46..136f889f 100644 --- a/libraries/src/AWS.Lambda.Powertools.Parameters/Internal/Transform/JsonTransformer.cs +++ b/libraries/src/AWS.Lambda.Powertools.Parameters/Internal/Transform/JsonTransformer.cs @@ -23,12 +23,31 @@ namespace AWS.Lambda.Powertools.Parameters.Internal.Transform; /// internal class JsonTransformer : ITransformer { + private readonly JsonSerializerOptions _options; + + /// + /// Initializes a new instance of the class. + /// + public JsonTransformer() + { + _options = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; + } + /// /// Deserialize a JSON value from a JSON string. /// /// JSON string. /// JSON value type. /// JSON value. +#if NET6_0_OR_GREATER + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("AOT", "IL3050:RequiresDynamicCode", + Justification = "Types are expected to be known at compile time")] + [System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessage("Trimming", "IL2026:RequiresUnreferencedCode", + Justification = "Types are expected to be preserved")] +#endif public T? Transform(string value) { if (typeof(T) == typeof(string)) @@ -37,6 +56,6 @@ internal class JsonTransformer : ITransformer if (string.IsNullOrWhiteSpace(value)) return default; - return JsonSerializer.Deserialize(value); + return JsonSerializer.Deserialize(value, _options); } } \ No newline at end of file diff --git a/libraries/tests/AWS.Lambda.Powertools.Parameters.Tests/AppConfig/AppConfigProviderTest.cs b/libraries/tests/AWS.Lambda.Powertools.Parameters.Tests/AppConfig/AppConfigProviderTest.cs index 8c664e4e..1577b5b2 100644 --- a/libraries/tests/AWS.Lambda.Powertools.Parameters.Tests/AppConfig/AppConfigProviderTest.cs +++ b/libraries/tests/AWS.Lambda.Powertools.Parameters.Tests/AppConfig/AppConfigProviderTest.cs @@ -13,6 +13,7 @@ * permissions and limitations under the License. */ +using System.Diagnostics.CodeAnalysis; using System.Text; using System.Text.Json; using System.Text.Json.Nodes; @@ -32,6 +33,7 @@ namespace AWS.Lambda.Powertools.Parameters.Tests.AppConfig; +[SuppressMessage("Usage", "xUnit1030:Do not call ConfigureAwait(false) in test method")] public class AppConfigProviderTest { [Fact]