Skip to content

Commit 5a22dad

Browse files
committed
Improve serialization
1 parent f13c767 commit 5a22dad

File tree

779 files changed

+51313
-13644
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

779 files changed

+51313
-13644
lines changed

Elasticsearch.sln

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tests.ClusterLauncher", "te
5757
EndProject
5858
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elastic.Clients.Elasticsearch.JsonNetSerializer", "src\Elastic.Clients.Elasticsearch.JsonNetSerializer\Elastic.Clients.Elasticsearch.JsonNetSerializer.csproj", "{8C9275D9-29CE-4A20-8FD5-6B26C6CAAADB}"
5959
EndProject
60-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elastic.Clients.Elasticsearch.Serverless", "src\Elastic.Clients.Elasticsearch.Serverless\Elastic.Clients.Elasticsearch.Serverless.csproj", "{49D7F5A7-AA32-492B-B957-0E3325861F55}"
61-
EndProject
6260
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "tests\Tests\Tests.csproj", "{6FD804B2-CE80-41CB-A411-2023F34C18FE}"
6361
EndProject
6462
Global
@@ -107,10 +105,6 @@ Global
107105
{8C9275D9-29CE-4A20-8FD5-6B26C6CAAADB}.Debug|Any CPU.Build.0 = Debug|Any CPU
108106
{8C9275D9-29CE-4A20-8FD5-6B26C6CAAADB}.Release|Any CPU.ActiveCfg = Release|Any CPU
109107
{8C9275D9-29CE-4A20-8FD5-6B26C6CAAADB}.Release|Any CPU.Build.0 = Release|Any CPU
110-
{49D7F5A7-AA32-492B-B957-0E3325861F55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
111-
{49D7F5A7-AA32-492B-B957-0E3325861F55}.Debug|Any CPU.Build.0 = Debug|Any CPU
112-
{49D7F5A7-AA32-492B-B957-0E3325861F55}.Release|Any CPU.ActiveCfg = Release|Any CPU
113-
{49D7F5A7-AA32-492B-B957-0E3325861F55}.Release|Any CPU.Build.0 = Release|Any CPU
114108
{6FD804B2-CE80-41CB-A411-2023F34C18FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
115109
{6FD804B2-CE80-41CB-A411-2023F34C18FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
116110
{6FD804B2-CE80-41CB-A411-2023F34C18FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -130,7 +124,6 @@ Global
130124
{68D1BFDC-F447-4D2C-AF81-537807636610} = {1FE49D14-216A-41EE-A177-E42BFF53E0DC}
131125
{F6162603-D134-4121-8106-2BA4DAD7350B} = {362B2776-4B29-46AB-B237-56776B5372B6}
132126
{8C9275D9-29CE-4A20-8FD5-6B26C6CAAADB} = {D455EC79-E1E0-4509-B297-0DA3AED8DFF7}
133-
{49D7F5A7-AA32-492B-B957-0E3325861F55} = {D455EC79-E1E0-4509-B297-0DA3AED8DFF7}
134127
{6FD804B2-CE80-41CB-A411-2023F34C18FE} = {362B2776-4B29-46AB-B237-56776B5372B6}
135128
EndGlobalSection
136129
GlobalSection(ExtensibilityGlobals) = postSolution
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// Licensed to Elasticsearch B.V under one or more agreements.
2+
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3+
// See the LICENSE file in the project root for more information.
4+
5+
// Contains internal parameterless constructors used by the deserializer.
6+
7+
namespace Elastic.Clients.Elasticsearch.Eql
8+
{
9+
public partial class EqlSearchRequest
10+
{
11+
internal EqlSearchRequest()
12+
{ }
13+
}
14+
}
15+
16+
namespace Elastic.Clients.Elasticsearch.IndexManagement
17+
{
18+
public partial class PutMappingRequest
19+
{
20+
internal PutMappingRequest()
21+
{ }
22+
}
23+
}
24+
25+
namespace Elastic.Clients.Elasticsearch.IndexManagement
26+
{
27+
public partial class PutTemplateRequest
28+
{
29+
internal PutTemplateRequest()
30+
{ }
31+
}
32+
}
33+
34+
namespace Elastic.Clients.Elasticsearch.Inference
35+
{
36+
public partial class InferenceRequest
37+
{
38+
internal InferenceRequest()
39+
{ }
40+
}
41+
}
42+
43+
namespace Elastic.Clients.Elasticsearch.QueryRules
44+
{
45+
public partial class PutRuleRequest
46+
{
47+
internal PutRuleRequest()
48+
{ }
49+
}
50+
}
51+
52+
namespace Elastic.Clients.Elasticsearch.QueryRules
53+
{
54+
public partial class PutRulesetRequest
55+
{
56+
internal PutRulesetRequest()
57+
{ }
58+
}
59+
}
60+
61+
namespace Elastic.Clients.Elasticsearch
62+
{
63+
public partial class SearchMvtRequest
64+
{
65+
internal SearchMvtRequest()
66+
{ }
67+
}
68+
}
69+
70+
namespace Elastic.Clients.Elasticsearch.Snapshot
71+
{
72+
public partial class CreateSnapshotRequest
73+
{
74+
internal CreateSnapshotRequest()
75+
{ }
76+
}
77+
}
78+
79+
namespace Elastic.Clients.Elasticsearch.Synonyms
80+
{
81+
public partial class PutSynonymRequest
82+
{
83+
internal PutSynonymRequest()
84+
{ }
85+
}
86+
}
87+
88+
namespace Elastic.Clients.Elasticsearch
89+
{
90+
public partial class TermVectorsRequest<TDocument>
91+
{
92+
internal TermVectorsRequest()
93+
{ }
94+
}
95+
}
96+
97+
namespace Elastic.Clients.Elasticsearch
98+
{
99+
public sealed partial class UpdateRequest<TDocument, TPartialDocument>
100+
{
101+
internal UpdateRequest()
102+
{ }
103+
}
104+
}

src/Elastic.Clients.Elasticsearch/Elastic.Clients.Elasticsearch.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@
1919
<CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
2020
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
2121
<Nullable>annotations</Nullable>
22+
<PolySharpIncludeRuntimeSupportedAttributes>true</PolySharpIncludeRuntimeSupportedAttributes>
2223
</PropertyGroup>
2324
<ItemGroup>
2425
<PackageReference Include="Elastic.Transport" Version="0.5.7" />
26+
<PackageReference Include="PolySharp" Version="1.15.0">
27+
<PrivateAssets>all</PrivateAssets>
28+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
29+
</PackageReference>
2530
</ItemGroup>
2631
<ItemGroup>
2732
<InternalsVisibleTo Include="Tests" Key="$(ExposedPublicKey)" />

src/Elastic.Clients.Elasticsearch/_Generated/Api/AsyncSearch/AsyncSearchStatusResponse.g.cs

Lines changed: 147 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,161 @@
1818
#nullable restore
1919

2020
using Elastic.Clients.Elasticsearch.Fluent;
21+
using Elastic.Clients.Elasticsearch.Next;
2122
using Elastic.Clients.Elasticsearch.Serialization;
2223
using Elastic.Transport.Products.Elasticsearch;
2324
using System;
2425
using System.Collections.Generic;
26+
using System.Linq.Expressions;
27+
using System.Text.Json;
2528
using System.Text.Json.Serialization;
2629

2730
namespace Elastic.Clients.Elasticsearch.AsyncSearch;
2831

32+
internal sealed partial class AsyncSearchStatusResponseConverter : System.Text.Json.Serialization.JsonConverter<AsyncSearchStatusResponse>
33+
{
34+
private static readonly System.Text.Json.JsonEncodedText PropClusters = System.Text.Json.JsonEncodedText.Encode("_clusters");
35+
private static readonly System.Text.Json.JsonEncodedText PropCompletionStatus = System.Text.Json.JsonEncodedText.Encode("completion_status");
36+
private static readonly System.Text.Json.JsonEncodedText PropCompletionTime = System.Text.Json.JsonEncodedText.Encode("completion_time");
37+
private static readonly System.Text.Json.JsonEncodedText PropCompletionTimeInMillis = System.Text.Json.JsonEncodedText.Encode("completion_time_in_millis");
38+
private static readonly System.Text.Json.JsonEncodedText PropExpirationTime = System.Text.Json.JsonEncodedText.Encode("expiration_time");
39+
private static readonly System.Text.Json.JsonEncodedText PropExpirationTimeInMillis = System.Text.Json.JsonEncodedText.Encode("expiration_time_in_millis");
40+
private static readonly System.Text.Json.JsonEncodedText PropId = System.Text.Json.JsonEncodedText.Encode("id");
41+
private static readonly System.Text.Json.JsonEncodedText PropIsPartial = System.Text.Json.JsonEncodedText.Encode("is_partial");
42+
private static readonly System.Text.Json.JsonEncodedText PropIsRunning = System.Text.Json.JsonEncodedText.Encode("is_running");
43+
private static readonly System.Text.Json.JsonEncodedText PropShards = System.Text.Json.JsonEncodedText.Encode("_shards");
44+
private static readonly System.Text.Json.JsonEncodedText PropStartTime = System.Text.Json.JsonEncodedText.Encode("start_time");
45+
private static readonly System.Text.Json.JsonEncodedText PropStartTimeInMillis = System.Text.Json.JsonEncodedText.Encode("start_time_in_millis");
46+
47+
public override AsyncSearchStatusResponse Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options)
48+
{
49+
reader.ValidateToken(System.Text.Json.JsonTokenType.StartObject);
50+
LocalJsonProperty<Elastic.Clients.Elasticsearch.ClusterStatistics?> propClusters = default;
51+
LocalJsonProperty<int?> propCompletionStatus = default;
52+
LocalJsonProperty<DateTimeOffset?> propCompletionTime = default;
53+
LocalJsonProperty<long?> propCompletionTimeInMillis = default;
54+
LocalJsonProperty<DateTimeOffset?> propExpirationTime = default;
55+
LocalJsonProperty<long> propExpirationTimeInMillis = default;
56+
LocalJsonProperty<string?> propId = default;
57+
LocalJsonProperty<bool> propIsPartial = default;
58+
LocalJsonProperty<bool> propIsRunning = default;
59+
LocalJsonProperty<Elastic.Clients.Elasticsearch.ShardStatistics> propShards = default;
60+
LocalJsonProperty<DateTimeOffset?> propStartTime = default;
61+
LocalJsonProperty<long> propStartTimeInMillis = default;
62+
while (reader.Read() && reader.TokenType is System.Text.Json.JsonTokenType.PropertyName)
63+
{
64+
if (propClusters.TryRead(ref reader, options, PropClusters))
65+
{
66+
continue;
67+
}
68+
69+
if (propCompletionStatus.TryRead(ref reader, options, PropCompletionStatus))
70+
{
71+
continue;
72+
}
73+
74+
if (propCompletionTime.TryRead(ref reader, options, PropCompletionTime))
75+
{
76+
continue;
77+
}
78+
79+
if (propCompletionTimeInMillis.TryRead(ref reader, options, PropCompletionTimeInMillis))
80+
{
81+
continue;
82+
}
83+
84+
if (propExpirationTime.TryRead(ref reader, options, PropExpirationTime))
85+
{
86+
continue;
87+
}
88+
89+
if (propExpirationTimeInMillis.TryRead(ref reader, options, PropExpirationTimeInMillis))
90+
{
91+
continue;
92+
}
93+
94+
if (propId.TryRead(ref reader, options, PropId))
95+
{
96+
continue;
97+
}
98+
99+
if (propIsPartial.TryRead(ref reader, options, PropIsPartial))
100+
{
101+
continue;
102+
}
103+
104+
if (propIsRunning.TryRead(ref reader, options, PropIsRunning))
105+
{
106+
continue;
107+
}
108+
109+
if (propShards.TryRead(ref reader, options, PropShards))
110+
{
111+
continue;
112+
}
113+
114+
if (propStartTime.TryRead(ref reader, options, PropStartTime))
115+
{
116+
continue;
117+
}
118+
119+
if (propStartTimeInMillis.TryRead(ref reader, options, PropStartTimeInMillis))
120+
{
121+
continue;
122+
}
123+
124+
throw new System.Text.Json.JsonException($"Unknown JSON property '{reader.GetString()}' for type '{typeToConvert.Name}'.");
125+
}
126+
127+
reader.ValidateToken(System.Text.Json.JsonTokenType.EndObject);
128+
return new AsyncSearchStatusResponse
129+
{
130+
Clusters = propClusters.Value
131+
,
132+
CompletionStatus = propCompletionStatus.Value
133+
,
134+
CompletionTime = propCompletionTime.Value
135+
,
136+
CompletionTimeInMillis = propCompletionTimeInMillis.Value
137+
,
138+
ExpirationTime = propExpirationTime.Value
139+
,
140+
ExpirationTimeInMillis = propExpirationTimeInMillis.Value
141+
,
142+
Id = propId.Value
143+
,
144+
IsPartial = propIsPartial.Value
145+
,
146+
IsRunning = propIsRunning.Value
147+
,
148+
Shards = propShards.Value
149+
,
150+
StartTime = propStartTime.Value
151+
,
152+
StartTimeInMillis = propStartTimeInMillis.Value
153+
};
154+
}
155+
156+
public override void Write(System.Text.Json.Utf8JsonWriter writer, AsyncSearchStatusResponse value, System.Text.Json.JsonSerializerOptions options)
157+
{
158+
writer.WriteStartObject();
159+
writer.WriteProperty(options, PropClusters, value.Clusters);
160+
writer.WriteProperty(options, PropCompletionStatus, value.CompletionStatus);
161+
writer.WriteProperty(options, PropCompletionTime, value.CompletionTime);
162+
writer.WriteProperty(options, PropCompletionTimeInMillis, value.CompletionTimeInMillis);
163+
writer.WriteProperty(options, PropExpirationTime, value.ExpirationTime);
164+
writer.WriteProperty(options, PropExpirationTimeInMillis, value.ExpirationTimeInMillis);
165+
writer.WriteProperty(options, PropId, value.Id);
166+
writer.WriteProperty(options, PropIsPartial, value.IsPartial);
167+
writer.WriteProperty(options, PropIsRunning, value.IsRunning);
168+
writer.WriteProperty(options, PropShards, value.Shards);
169+
writer.WriteProperty(options, PropStartTime, value.StartTime);
170+
writer.WriteProperty(options, PropStartTimeInMillis, value.StartTimeInMillis);
171+
writer.WriteEndObject();
172+
}
173+
}
174+
175+
[JsonConverter(typeof(AsyncSearchStatusResponseConverter))]
29176
public sealed partial class AsyncSearchStatusResponse : ElasticsearchResponse
30177
{
31178
/// <summary>
@@ -34,7 +181,6 @@ public sealed partial class AsyncSearchStatusResponse : ElasticsearchResponse
34181
/// Not shown for local-only searches.
35182
/// </para>
36183
/// </summary>
37-
[JsonInclude, JsonPropertyName("_clusters")]
38184
public Elastic.Clients.Elasticsearch.ClusterStatistics? Clusters { get; init; }
39185

40186
/// <summary>
@@ -44,7 +190,6 @@ public sealed partial class AsyncSearchStatusResponse : ElasticsearchResponse
44190
/// 503 indicates that the async search was completed with an error.
45191
/// </para>
46192
/// </summary>
47-
[JsonInclude, JsonPropertyName("completion_status")]
48193
public int? CompletionStatus { get; init; }
49194

50195
/// <summary>
@@ -53,21 +198,16 @@ public sealed partial class AsyncSearchStatusResponse : ElasticsearchResponse
53198
/// when the search has completed.
54199
/// </para>
55200
/// </summary>
56-
[JsonInclude, JsonPropertyName("completion_time")]
57201
public DateTimeOffset? CompletionTime { get; init; }
58-
[JsonInclude, JsonPropertyName("completion_time_in_millis")]
59202
public long? CompletionTimeInMillis { get; init; }
60203

61204
/// <summary>
62205
/// <para>
63206
/// Indicates when the async search will expire.
64207
/// </para>
65208
/// </summary>
66-
[JsonInclude, JsonPropertyName("expiration_time")]
67209
public DateTimeOffset? ExpirationTime { get; init; }
68-
[JsonInclude, JsonPropertyName("expiration_time_in_millis")]
69210
public long ExpirationTimeInMillis { get; init; }
70-
[JsonInclude, JsonPropertyName("id")]
71211
public string? Id { get; init; }
72212

73213
/// <summary>
@@ -76,7 +216,6 @@ public sealed partial class AsyncSearchStatusResponse : ElasticsearchResponse
76216
/// While the query is running, <c>is_partial</c> is always set to <c>true</c>.
77217
/// </para>
78218
/// </summary>
79-
[JsonInclude, JsonPropertyName("is_partial")]
80219
public bool IsPartial { get; init; }
81220

82221
/// <summary>
@@ -85,18 +224,14 @@ public sealed partial class AsyncSearchStatusResponse : ElasticsearchResponse
85224
/// NOTE: If the search failed after some shards returned their results or the node that is coordinating the async search dies, results may be partial even though <c>is_running</c> is <c>false</c>.
86225
/// </para>
87226
/// </summary>
88-
[JsonInclude, JsonPropertyName("is_running")]
89227
public bool IsRunning { get; init; }
90228

91229
/// <summary>
92230
/// <para>
93231
/// Indicates how many shards have run the query so far.
94232
/// </para>
95233
/// </summary>
96-
[JsonInclude, JsonPropertyName("_shards")]
97234
public Elastic.Clients.Elasticsearch.ShardStatistics Shards { get; init; }
98-
[JsonInclude, JsonPropertyName("start_time")]
99235
public DateTimeOffset? StartTime { get; init; }
100-
[JsonInclude, JsonPropertyName("start_time_in_millis")]
101236
public long StartTimeInMillis { get; init; }
102237
}

0 commit comments

Comments
 (0)