Skip to content

Commit 2ec73e8

Browse files
floberndgithub-actions[bot]
authored andcommitted
Fix NPE when deserializing invalid SearchResponse (#8516)
1 parent 7cae7e2 commit 2ec73e8

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

src/Elastic.Clients.Elasticsearch/_Shared/Api/SearchResponse.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ namespace Elastic.Clients.Elasticsearch;
1111
public partial class SearchResponse<TDocument>
1212
{
1313
[JsonIgnore]
14-
public IReadOnlyCollection<Core.Search.Hit<TDocument>> Hits => HitsMetadata.Hits;
14+
public IReadOnlyCollection<Core.Search.Hit<TDocument>> Hits => HitsMetadata?.Hits ?? [];
1515

1616
[JsonIgnore]
17-
public IReadOnlyCollection<TDocument> Documents => HitsMetadata.Hits.Select(s => s.Source).ToReadOnlyCollection();
17+
public IReadOnlyCollection<TDocument> Documents => HitsMetadata?.Hits?.Select(s => s.Source).ToReadOnlyCollection() ?? [];
1818

1919
[JsonIgnore]
2020
public long Total => HitsMetadata?.Total?.Value1?.Value ?? HitsMetadata?.Total?.Value2 ?? -1;

src/Elastic.Clients.Elasticsearch/_Shared/Core/Infer/Field/FieldConverter.cs

+10
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ public override Field Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSe
2222

2323
public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOptions options)
2424
{
25+
if (value is null)
26+
{
27+
throw new ArgumentNullException(nameof(value));
28+
}
29+
2530
var settings = options.GetContext<IElasticsearchClientSettings>();
2631
var fieldName = settings.Inferrer.Field(value);
2732

@@ -37,6 +42,11 @@ public override Field ReadAsPropertyName(ref Utf8JsonReader reader, Type typeToC
3742

3843
public override void WriteAsPropertyName(Utf8JsonWriter writer, Field value, JsonSerializerOptions options)
3944
{
45+
if (value is null)
46+
{
47+
throw new ArgumentNullException(nameof(value));
48+
}
49+
4050
var settings = options.GetContext<IElasticsearchClientSettings>();
4151

4252
writer.WritePropertyName(settings.Inferrer.Field(value));

src/Elastic.Clients.Elasticsearch/_Shared/Core/Infer/Fields/FieldsConverter.cs

+10
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ public override Fields Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
2121

2222
public override void Write(Utf8JsonWriter writer, Fields value, JsonSerializerOptions options)
2323
{
24+
if (value is null)
25+
{
26+
throw new ArgumentNullException(nameof(value));
27+
}
28+
2429
writer.WriteCollectionValue(options, value.ListOfFields, null);
2530
}
2631
}
@@ -61,6 +66,11 @@ public override Fields Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
6166

6267
public override void Write(Utf8JsonWriter writer, Fields value, JsonSerializerOptions options)
6368
{
69+
if (value is null)
70+
{
71+
throw new ArgumentNullException(nameof(value));
72+
}
73+
6474
writer.WriteSingleOrManyCollectionValue(options, value.ListOfFields, null);
6575
}
6676
}

0 commit comments

Comments
 (0)