Skip to content

Commit a59fe93

Browse files
committed
Metrics AOT ready, New SerializationContext
1 parent a1a53c2 commit a59fe93

File tree

7 files changed

+64
-6
lines changed

7 files changed

+64
-6
lines changed

libraries/src/AWS.Lambda.Powertools.Metrics/AWS.Lambda.Powertools.Metrics.csproj

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,12 @@
55
<Description>Powertools for AWS Lambda (.NET) - Metrics package.</Description>
66
<AssemblyName>AWS.Lambda.Powertools.Metrics</AssemblyName>
77
<RootNamespace>AWS.Lambda.Powertools.Metrics</RootNamespace>
8+
<Version>1.9.3</Version>
89
</PropertyGroup>
910

1011
<ItemGroup>
1112
<ProjectReference Include="..\AWS.Lambda.Powertools.Common\AWS.Lambda.Powertools.Common.csproj" PrivateAssets="All" />
12-
</ItemGroup>
13-
14-
<ItemGroup>
15-
<Folder Include="Serializer\" />
13+
<TrimmerRootAssembly Include="AWS.Lambda.Powertools.Common" />
1614
</ItemGroup>
1715

1816
</Project>

libraries/src/AWS.Lambda.Powertools.Metrics/Model/MetricResolution.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ namespace AWS.Lambda.Powertools.Metrics;
66
/// <summary>
77
/// Enum MetricResolution
88
/// </summary>
9-
// [JsonConverter(typeof(StringEnumConverter))]
109
public enum MetricResolution
1110
{
1211
/// <summary>

libraries/src/AWS.Lambda.Powertools.Metrics/Model/MetricUnit.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ namespace AWS.Lambda.Powertools.Metrics;
2121
/// <summary>
2222
/// Enum MetricUnit
2323
/// </summary>
24+
#if NET8_0_OR_GREATER
25+
[JsonConverter(typeof(JsonStringEnumConverter<MetricUnit>))]
26+
#else
2427
[JsonConverter(typeof(StringEnumConverter))]
28+
#endif
2529
public enum MetricUnit
2630
{
2731
/// <summary>

libraries/src/AWS.Lambda.Powertools.Metrics/Model/RootNode.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ public string Serialize()
6565
{
6666
if (string.IsNullOrWhiteSpace(AWS.GetNamespace())) throw new SchemaValidationException("namespace");
6767

68+
#if NET8_0_OR_GREATER
69+
70+
return JsonSerializer.Serialize(this, typeof(RootNode), MetricsSerializationContext.Default);
71+
#else
6872
return JsonSerializer.Serialize(this);
73+
#endif
6974
}
7075
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License").
5+
* You may not use this file except in compliance with the License.
6+
* A copy of the License is located at
7+
*
8+
* http://aws.amazon.com/apache2.0
9+
*
10+
* or in the "license" file accompanying this file. This file is distributed
11+
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12+
* express or implied. See the License for the specific language governing
13+
* permissions and limitations under the License.
14+
*/
15+
16+
using System.Collections.Generic;
17+
using System.Text.Json.Serialization;
18+
19+
namespace AWS.Lambda.Powertools.Metrics;
20+
21+
#if NET8_0_OR_GREATER
22+
/// <summary>
23+
/// Source generator for Metrics types
24+
/// </summary>
25+
[JsonSerializable(typeof(string))]
26+
[JsonSerializable(typeof(double))]
27+
[JsonSerializable(typeof(List<double>))]
28+
[JsonSerializable(typeof(MetricUnit))]
29+
[JsonSerializable(typeof(MetricDefinition))]
30+
[JsonSerializable(typeof(DimensionSet))]
31+
[JsonSerializable(typeof(Metadata))]
32+
[JsonSerializable(typeof(MetricDirective))]
33+
[JsonSerializable(typeof(MetricResolution))]
34+
[JsonSerializable(typeof(MetricsContext))]
35+
[JsonSerializable(typeof(RootNode))]
36+
public partial class MetricsSerializationContext : JsonSerializerContext
37+
{
38+
39+
}
40+
#endif

libraries/src/AWS.Lambda.Powertools.Metrics/Serializer/StringEnumConverter.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@
2222

2323
namespace AWS.Lambda.Powertools.Metrics;
2424

25+
#if NET6_0
26+
2527
/// <summary>
2628
/// Class StringEnumConverter.
2729
/// Implements the <see cref="System.Text.Json.Serialization.JsonConverterFactory" />
30+
/// .NET 6 only
2831
/// </summary>
2932
/// <seealso cref="System.Text.Json.Serialization.JsonConverterFactory" />
3033
public class StringEnumConverter : JsonConverterFactory
@@ -95,4 +98,5 @@ public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializer
9598
_allowIntegerValues).CreateConverter(typeToConvert, options)
9699
: _baseConverter.CreateConverter(typeToConvert, options);
97100
}
98-
}
101+
}
102+
#endif

libraries/src/Directory.Build.props

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@
1919

2020
</PropertyGroup>
2121

22+
<PropertyGroup Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
23+
<!-- Enable to force errors on AOT common warnings -->
24+
<!-- <WarningsAsErrors>IL2026,IL2067,IL2075</WarningsAsErrors>-->
25+
<IsTrimmable>true</IsTrimmable>
26+
<EnableTrimAnalyzer>true</EnableTrimAnalyzer>
27+
<IsAotCompatible>true</IsAotCompatible>
28+
</PropertyGroup>
29+
2230
<ItemGroup>
2331
<None Include="README.md" Pack="true" PackagePath="\" />
2432
<None Include="../../AWSLogo128x128.png" Pack="true" Visible="false" PackagePath="" />

0 commit comments

Comments
 (0)