Skip to content

Commit 469c362

Browse files
Mpdreamzrusscam
authored andcommitted
Add documentation for serialization formatting (#3826)
* Documented that formatting is a hint and added some xmldocs on IElasticsearchSerializer * XmlDocs for the json serializer extensions
1 parent 29eb3a5 commit 469c362

File tree

5 files changed

+62
-17
lines changed

5 files changed

+62
-17
lines changed

src/Elasticsearch.Net/Serialization/ElasticsearchSerializerExtensions.cs

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
using Elasticsearch.Net.Extensions;
2-
using Elasticsearch.Net.Utf8Json;
32

43
namespace Elasticsearch.Net
54
{
65
public static class ElasticsearchSerializerExtensions
76
{
7+
/// <summary>
8+
/// Extension method that serializes an instance of <typeparamref name="T"/> to a byte array.
9+
/// </summary>
810
public static byte[] SerializeToBytes<T>(
911
this IElasticsearchSerializer serializer,
1012
T data,
11-
SerializationFormatting formatting = SerializationFormatting.Indented) =>
13+
SerializationFormatting formatting = SerializationFormatting.None) =>
1214
SerializeToBytes(serializer, data, RecyclableMemoryStreamFactory.Default, formatting);
1315

16+
/// <summary>
17+
/// Extension method that serializes an instance of <typeparamref name="T"/> to a byte array.
18+
/// </summary>
19+
/// <param name="memoryStreamFactory">
20+
/// A factory yielding MemoryStream instances, defaults to <see cref="RecyclableMemoryStreamFactory"/>
21+
/// that yields memory streams backed by pooled byte arrays.
22+
/// </param>
1423
public static byte[] SerializeToBytes<T>(
1524
this IElasticsearchSerializer serializer,
1625
T data,
1726
IMemoryStreamFactory memoryStreamFactory,
18-
SerializationFormatting formatting = SerializationFormatting.Indented
27+
SerializationFormatting formatting = SerializationFormatting.None
1928
)
2029
{
2130
memoryStreamFactory = memoryStreamFactory ?? RecyclableMemoryStreamFactory.Default;
@@ -26,17 +35,27 @@ public static byte[] SerializeToBytes<T>(
2635
}
2736
}
2837

38+
/// <summary>
39+
/// Extension method that serializes an instance of <typeparamref name="T"/> to a string.
40+
/// </summary>
2941
public static string SerializeToString<T>(
3042
this IElasticsearchSerializer serializer,
3143
T data,
32-
SerializationFormatting formatting = SerializationFormatting.Indented) =>
44+
SerializationFormatting formatting = SerializationFormatting.None) =>
3345
SerializeToString(serializer, data, RecyclableMemoryStreamFactory.Default, formatting);
3446

47+
/// <summary>
48+
/// Extension method that serializes an instance of <typeparamref name="T"/> to a string.
49+
/// </summary>
50+
/// <param name="memoryStreamFactory">
51+
/// A factory yielding MemoryStream instances, defaults to <see cref="RecyclableMemoryStreamFactory"/>
52+
/// that yields memory streams backed by pooled byte arrays.
53+
/// </param>
3554
public static string SerializeToString<T>(
3655
this IElasticsearchSerializer serializer,
3756
T data,
3857
IMemoryStreamFactory memoryStreamFactory,
39-
SerializationFormatting formatting = SerializationFormatting.Indented
58+
SerializationFormatting formatting = SerializationFormatting.None
4059
)
4160
{
4261
memoryStreamFactory = memoryStreamFactory ?? RecyclableMemoryStreamFactory.Default;

src/Elasticsearch.Net/Serialization/IElasticsearchSerializer.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,34 @@ namespace Elasticsearch.Net
77
{
88
public interface IElasticsearchSerializer
99
{
10+
/// <summary> Deserialize <paramref name="stream"/> to an instance of <paramref name="type"/> </summary>
1011
object Deserialize(Type type, Stream stream);
1112

13+
/// <summary> Deserialize <paramref name="stream"/> to an instance of <typeparamref name="T" /></summary>
1214
T Deserialize<T>(Stream stream);
1315

16+
/// <inheritdoc cref="DeserializeAsync"/>
1417
Task<object> DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default);
1518

19+
/// <inheritdoc cref="DeserializeAsync{T}"/>
1620
Task<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default);
1721

18-
void Serialize<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.Indented);
22+
/// <summary>
23+
/// Serialize an instance of <typeparamref name="T"/> to <paramref name="stream"/> using <paramref name="formatting"/>.
24+
/// </summary>
25+
/// <param name="data">The instance of <typeparamref name="T"/> that we want to serialize</param>
26+
/// <param name="stream">The stream to serialize to</param>
27+
/// <param name="formatting">
28+
/// Formatting hint, note no all implementations of <see cref="IElasticsearchSerializer"/> are able to
29+
/// satisfy this hint, including the default serializer that is shipped with 7.0.
30+
/// </param>
31+
void Serialize<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.None);
1932

20-
Task SerializeAsync<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.Indented,
33+
/// <inheritdoc cref="Serialize{T}"/>
34+
Task SerializeAsync<T>(
35+
T data,
36+
Stream stream,
37+
SerializationFormatting formatting = SerializationFormatting.None,
2138
CancellationToken cancellationToken = default
2239
);
2340
}

src/Elasticsearch.Net/Serialization/LowLevelRequestResponseSerializer.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,37 @@ public class LowLevelRequestResponseSerializer : IElasticsearchSerializer
1414
public object Deserialize(Type type, Stream stream)
1515
{
1616
if (stream == null || stream.CanSeek && stream.Length == 0) return Task.FromResult(type.DefaultValue());
17+
1718
return JsonSerializer.NonGeneric.Deserialize(type, stream, ElasticsearchNetFormatterResolver.Instance);
1819
}
1920

2021
public T Deserialize<T>(Stream stream)
2122
{
2223
if (stream == null || stream.CanSeek && stream.Length == 0) return default(T);
24+
2325
return JsonSerializer.Deserialize<T>(stream, ElasticsearchNetFormatterResolver.Instance);
2426
}
2527

26-
public Task<object> DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default(CancellationToken))
28+
public Task<object> DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default)
2729
{
2830
if (stream == null || stream.CanSeek && stream.Length == 0) return Task.FromResult(type.DefaultValue());
31+
2932
return JsonSerializer.NonGeneric.DeserializeAsync(type, stream, ElasticsearchNetFormatterResolver.Instance);
3033
}
3134

32-
public Task<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default(CancellationToken))
35+
public Task<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default)
3336
{
3437
if (stream == null || stream.CanSeek && stream.Length == 0) return Task.FromResult(default(T));
38+
3539
return JsonSerializer.DeserializeAsync<T>(stream, ElasticsearchNetFormatterResolver.Instance);
3640
}
3741

38-
public void Serialize<T>(T data, Stream writableStream, SerializationFormatting formatting = SerializationFormatting.Indented) =>
39-
JsonSerializer.Serialize(writableStream, data, ElasticsearchNetFormatterResolver.Instance); // TODO: format indentation
42+
public void Serialize<T>(T data, Stream writableStream, SerializationFormatting formatting = SerializationFormatting.None) =>
43+
JsonSerializer.Serialize(writableStream, data, ElasticsearchNetFormatterResolver.Instance);
4044

4145
public Task SerializeAsync<T>(T data, Stream writableStream, SerializationFormatting formatting,
42-
CancellationToken cancellationToken = default(CancellationToken)) =>
43-
JsonSerializer.SerializeAsync(writableStream, data, ElasticsearchNetFormatterResolver.Instance); // TODO: format indentation
46+
CancellationToken cancellationToken = default
47+
) =>
48+
JsonSerializer.SerializeAsync(writableStream, data, ElasticsearchNetFormatterResolver.Instance);
4449
}
4550
}

src/Elasticsearch.Net/Serialization/SerializationFormatting.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
namespace Elasticsearch.Net
22
{
3+
/// <summary>
4+
/// A hint to <see cref="IElasticsearchSerializer"/> how to format the json.
5+
/// Implementation of <see cref="IElasticsearchSerializer"/> might choose to ignore this hint though.
6+
/// </summary>
37
public enum SerializationFormatting
48
{
59
None,

src/Serializers/Nest.JsonNetSerializer/ConnectionSettingsAwareSerializerBase.Customization.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public object Deserialize(Type type, Stream stream)
3535
return _serializer.Deserialize(jsonTextReader, type);
3636
}
3737

38-
public virtual async Task<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default(CancellationToken))
38+
public virtual async Task<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default)
3939
{
4040
using (var streamReader = new StreamReader(stream))
4141
using (var jsonTextReader = new JsonTextReader(streamReader))
@@ -55,7 +55,7 @@ public object Deserialize(Type type, Stream stream)
5555
}
5656
}
5757

58-
public void Serialize<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.Indented)
58+
public void Serialize<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.None)
5959
{
6060
using (var writer = new StreamWriter(stream, ExpectedEncoding, BufferSize, true))
6161
using (var jsonWriter = new JsonTextWriter(writer))
@@ -65,8 +65,8 @@ public void Serialize<T>(T data, Stream stream, SerializationFormatting formatti
6565
}
6666
}
6767

68-
public Task SerializeAsync<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.Indented,
69-
CancellationToken cancellationToken = default(CancellationToken)
68+
public Task SerializeAsync<T>(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.None,
69+
CancellationToken cancellationToken = default
7070
)
7171
{
7272
//This makes no sense now but we need the async method on the interface in 6.x so we can start swapping this out

0 commit comments

Comments
 (0)