Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@

namespace Elastic.Transport;

#pragma warning disable IL2026, IL3050 // Implementing classes must make sure to use an AOT compatible JsonSerializerOptions.TypeInfoResolver

/// <summary>
/// An abstract implementation of a transport <see cref="Serializer"/> which serializes using the Microsoft
/// <c>System.Text.Json</c> library.
Expand Down Expand Up @@ -50,6 +48,8 @@ public override T Deserialize<T>(Stream stream)
}

/// <inheritdoc />
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public override object? Deserialize(Type type, Stream stream)
{
if (TryReturnDefault(stream, out object deserialize))
Expand All @@ -70,6 +70,8 @@ public override ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToke
}

/// <inheritdoc />
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public override ValueTask<object?> DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default)
{
if (TryReturnDefault(stream, out object deserialize))
Expand All @@ -79,22 +81,30 @@ public override ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToke
}

/// <inheritdoc />
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public override void Serialize<T>(T data, Stream stream,
SerializationFormatting formatting = SerializationFormatting.None) =>
JsonSerializer.Serialize(stream, data, GetJsonSerializerOptions(formatting));

/// <inheritdoc />
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public override void Serialize(object? data, Type type, Stream stream, SerializationFormatting formatting = SerializationFormatting.None,
CancellationToken cancellationToken = default) =>
JsonSerializer.Serialize(stream, data, type, GetJsonSerializerOptions(formatting));

/// <inheritdoc />
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public override Task SerializeAsync<T>(T data, Stream stream,
SerializationFormatting formatting = SerializationFormatting.None,
CancellationToken cancellationToken = default) =>
JsonSerializer.SerializeAsync(stream, data, GetJsonSerializerOptions(formatting), cancellationToken);

/// <inheritdoc />
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public override Task SerializeAsync(object? data, Type type, Stream stream, SerializationFormatting formatting = SerializationFormatting.None,
CancellationToken cancellationToken = default) =>
JsonSerializer.SerializeAsync(stream, data, type, GetJsonSerializerOptions(formatting), cancellationToken);
Expand Down Expand Up @@ -140,5 +150,3 @@ private static bool TryReturnDefault<T>(Stream? stream, out T deserialize)
return (stream is null) || stream == Stream.Null || (stream.CanSeek && stream.Length == 0);
}
}

#pragma warning restore IL2026, IL3050
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@

namespace Elastic.Transport.Extensions;

#pragma warning disable IL2026, IL3050 // SystemTextJsonSerializer implementations must make sure to use an AOT compatible JsonSerializerOptions.TypeInfoResolver

/// <summary>
/// A set of handy extension methods for <see cref="Serializer"/>
/// </summary>
Expand Down Expand Up @@ -42,6 +40,8 @@ public static byte[] SerializeToBytes<T>(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static byte[] SerializeToBytes<T>(
this Serializer serializer,
T? data,
Expand Down Expand Up @@ -86,6 +86,8 @@ public static byte[] SerializeToBytes(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static byte[] SerializeToBytes(
this Serializer serializer,
object? data,
Expand Down Expand Up @@ -130,6 +132,8 @@ public static string SerializeToString<T>(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static string SerializeToString<T>(
this Serializer serializer,
T? data,
Expand Down Expand Up @@ -177,6 +181,8 @@ public static string SerializeToString(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static string SerializeToString(
this Serializer serializer,
object? data,
Expand Down Expand Up @@ -229,6 +235,8 @@ public static void Serialize<T>(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static void Serialize<T>(
this Serializer serializer,
T? data,
Expand Down Expand Up @@ -288,6 +296,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static void Serialize(
this Serializer serializer,
object? data,
Expand Down Expand Up @@ -329,6 +339,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static T? Deserialize<T>(
this Serializer serializer,
string input,
Expand Down Expand Up @@ -358,6 +370,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static object? Deserialize(
this Serializer serializer,
string input,
Expand Down Expand Up @@ -388,6 +402,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static T? Deserialize<T>(
this Serializer serializer,
ReadOnlySpan<byte> span,
Expand Down Expand Up @@ -417,6 +433,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static object? Deserialize(
this Serializer serializer,
ReadOnlySpan<byte> span,
Expand Down Expand Up @@ -447,6 +465,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static T? Deserialize<T>(
this Serializer serializer,
ReadOnlySpan<char> span,
Expand Down Expand Up @@ -476,6 +496,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static object? Deserialize(
this Serializer serializer,
ReadOnlySpan<char> span,
Expand Down Expand Up @@ -506,6 +528,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static T? Deserialize<T>(
this Serializer serializer,
ref Utf8JsonReader reader,
Expand Down Expand Up @@ -542,6 +566,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static object? Deserialize(
this Serializer serializer,
ref Utf8JsonReader reader,
Expand Down Expand Up @@ -579,6 +605,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static T? Deserialize<T>(
this Serializer serializer,
JsonNode node,
Expand Down Expand Up @@ -613,6 +641,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static object? Deserialize(
this Serializer serializer,
JsonNode node,
Expand Down Expand Up @@ -648,6 +678,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static T? Deserialize<T>(
this Serializer serializer,
JsonElement node,
Expand Down Expand Up @@ -682,6 +714,8 @@ public static void Serialize(
/// that yields memory streams backed by pooled byte arrays.
/// </param>
/// <returns>The deserialized data.</returns>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static object? Deserialize(
this Serializer serializer,
JsonElement node,
Expand Down Expand Up @@ -713,6 +747,8 @@ public static void Serialize(
/// <param name="serializer"><inheritdoc cref="Serializer" path="/summary"/></param>
/// <param name="options">Receives the <see cref="JsonSerializerOptions"/>.</param>
/// <param name="formatting"><inheritdoc cref="SerializationFormatting" path="/summary"/></param>
[UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "We always provide a static JsonTypeInfoResolver")]
[UnconditionalSuppressMessage("AotAnalysis", "IL3050:RequiresDynamicCode", Justification = "We always provide a static JsonTypeInfoResolver")]
public static bool TryGetJsonSerializerOptions(
this Serializer serializer,
[NotNullWhen(true)] out JsonSerializerOptions? options,
Expand All @@ -728,5 +764,3 @@ public static bool TryGetJsonSerializerOptions(
return false;
}
}

#pragma warning restore IL2026, IL3050
Loading