Skip to content

Commit be9463d

Browse files
authored
Advance reader when not expected JSON token (#3833)
This commit advances the JSON reader when a JSON token is one that is unexpected e.g. when the JSON token is null.
1 parent cdf847e commit be9463d

File tree

22 files changed

+73
-23
lines changed

22 files changed

+73
-23
lines changed

src/Nest/Aggregations/Bucket/Terms/TermsExcludeFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ public TermsExclude Deserialize(ref JsonReader reader, IJsonFormatterResolver fo
1010
{
1111
var token = reader.GetCurrentJsonToken();
1212
if (token == JsonToken.Null)
13+
{
14+
reader.ReadNext();
1315
return null;
16+
}
1417

1518
TermsExclude termsExclude;
1619
switch (token)

src/Nest/Aggregations/Bucket/Terms/TermsIncludeFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ public TermsInclude Deserialize(ref JsonReader reader, IJsonFormatterResolver fo
1717
{
1818
var token = reader.GetCurrentJsonToken();
1919
if (token == JsonToken.Null)
20+
{
21+
reader.ReadNext();
2022
return null;
23+
}
2124

2225
TermsInclude termsInclude;
2326
switch (token)

src/Nest/Aggregations/Metric/PercentileRanks/PercentileRanksAggregationFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ internal class PercentileRanksAggregationFormatter : IJsonFormatter<IPercentileR
2323
public IPercentileRanksAggregation Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
2424
{
2525
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
26+
{
27+
reader.ReadNextBlock();
2628
return null;
29+
}
2730

2831
var count = 0;
2932
var percentiles = new PercentileRanksAggregation();

src/Nest/Aggregations/Metric/Percentiles/PercentilesAggregationFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ internal class PercentilesAggregationFormatter : IJsonFormatter<IPercentilesAggr
2323
public IPercentilesAggregation Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
2424
{
2525
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
26+
{
27+
reader.ReadNextBlock();
2628
return null;
29+
}
2730

2831
var count = 0;
2932
var percentiles = new PercentilesAggregation();

src/Nest/Aggregations/Pipeline/MovingAverage/MovingAverageAggregationFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ internal class MovingAverageAggregationFormatter : IJsonFormatter<IMovingAverage
3131
public IMovingAverageAggregation Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
3232
{
3333
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
34+
{
35+
reader.ReadNextBlock();
3436
return null;
37+
}
3538

3639
var count = 0;
3740
var aggregation = new MovingAverageAggregation();

src/Nest/CommonAbstractions/Fields/FieldValuesFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ internal class FieldValuesFormatter : IJsonFormatter<FieldValues>
1010
public FieldValues Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
1111
{
1212
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
13+
{
14+
reader.ReadNextBlock();
1315
return null;
16+
}
1417

1518
var count = 0;
1619
var fields = new Dictionary<string, LazyDocument>();

src/Nest/CommonAbstractions/Infer/IndexName/IndexNameFormatter.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ internal class IndexNameFormatter : IJsonFormatter<IndexName>, IObjectPropertyNa
66
{
77
public IndexName Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
88
{
9-
if (reader.GetCurrentJsonToken() != JsonToken.String) return null;
9+
if (reader.GetCurrentJsonToken() != JsonToken.String)
10+
{
11+
reader.ReadNextBlock();
12+
return null;
13+
}
1014

1115
IndexName indexName = reader.ReadString();
1216
return indexName;

src/Nest/CommonAbstractions/Infer/Indices/IndicesFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public Indices Deserialize(ref JsonReader reader, IJsonFormatterResolver formatt
99
{
1010
if (reader.GetCurrentJsonToken() != JsonToken.BeginArray)
1111
{
12-
reader.ReadNext();
12+
reader.ReadNextBlock();
1313
return null;
1414
}
1515

src/Nest/CommonAbstractions/Infer/PropertyName/PropertyNameFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public PropertyName Deserialize(ref JsonReader reader, IJsonFormatterResolver fo
88
{
99
if (reader.GetCurrentJsonToken() != JsonToken.String)
1010
{
11-
reader.ReadNext();
11+
reader.ReadNextBlock();
1212
return null;
1313
}
1414

src/Nest/CommonAbstractions/Infer/RelationName/RelationNameFormatter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public RelationName Deserialize(ref JsonReader reader, IJsonFormatterResolver fo
1212
return relationName;
1313
}
1414

15+
reader.ReadNextBlock();
1516
return null;
1617
}
1718

src/Nest/CommonAbstractions/LazyDocument/LazyDocumentFormatter.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,10 @@ public void Serialize(ref JsonWriter writer, ILazyDocument value, IJsonFormatter
2525
public ILazyDocument Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
2626
{
2727
if (reader.GetCurrentJsonToken() == JsonToken.Null)
28+
{
29+
reader.ReadNextBlock();
2830
return null;
31+
}
2932

3033
var arraySegment = reader.ReadNextBlockSegment();
3134

@@ -50,7 +53,7 @@ internal static void WriteUnindented(ref JsonReader reader, ref JsonWriter write
5053
var c = 0;
5154
while (reader.ReadIsInObject(ref c))
5255
{
53-
if (c != 1)
56+
if (c != 1)
5457
writer.WriteRaw((byte)',');
5558
writer.WritePropertyName(reader.ReadPropertyName());
5659
WriteUnindented(ref reader, ref writer);
@@ -64,7 +67,7 @@ internal static void WriteUnindented(ref JsonReader reader, ref JsonWriter write
6467
var c = 0;
6568
while (reader.ReadIsInArray(ref c))
6669
{
67-
if (c != 1)
70+
if (c != 1)
6871
writer.WriteRaw((byte)',');
6972
WriteUnindented(ref reader, ref writer);
7073
}
@@ -108,7 +111,7 @@ public void Serialize(ref JsonWriter writer, LazyDocument value, IJsonFormatterR
108111

109112
public LazyDocument Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
110113
{
111-
if (reader.GetCurrentJsonToken() == JsonToken.Null)
114+
if (reader.ReadIsNull())
112115
return null;
113116

114117
var arraySegment = reader.ReadNextBlockSegment();

src/Nest/CommonAbstractions/SerializationBehavior/JsonFormatters/DateTimeOffsetEpochMillisecondsFormatter.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,25 @@ internal class NullableDateTimeOffsetEpochMillisecondsFormatter : IJsonFormatter
1818
{
1919
var token = reader.GetCurrentJsonToken();
2020

21-
if (token == JsonToken.String)
21+
switch (token)
2222
{
23-
var formatter = formatterResolver.GetFormatter<DateTimeOffset>();
24-
return formatter.Deserialize(ref reader, formatterResolver);
23+
case JsonToken.String:
24+
{
25+
var formatter = formatterResolver.GetFormatter<DateTimeOffset>();
26+
return formatter.Deserialize(ref reader, formatterResolver);
27+
}
28+
case JsonToken.Null:
29+
reader.ReadNext();
30+
return null;
31+
case JsonToken.Number:
32+
{
33+
var millisecondsSinceEpoch = reader.ReadDouble();
34+
var dateTimeOffset = DateTimeUtil.Epoch.AddMilliseconds(millisecondsSinceEpoch);
35+
return dateTimeOffset;
36+
}
37+
default:
38+
throw new Exception($"Cannot deserialize {nameof(DateTimeOffset)} from token {token}");
2539
}
26-
if (token == JsonToken.Null)
27-
return null;
28-
29-
if (token == JsonToken.Number)
30-
{
31-
var millisecondsSinceEpoch = reader.ReadDouble();
32-
var dateTimeOffset = DateTimeUtil.Epoch.AddMilliseconds(millisecondsSinceEpoch);
33-
return dateTimeOffset;
34-
}
35-
36-
throw new Exception($"Cannot deserialize {nameof(DateTimeOffset)} from token {token}");
3740
}
3841

3942
public void Serialize(ref JsonWriter writer, DateTimeOffset? value, IJsonFormatterResolver formatterResolver)

src/Nest/CommonAbstractions/SerializationBehavior/JsonFormatters/IndicesBoostFormatter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public IDictionary<IndexName, double> Deserialize(ref JsonReader reader, IJsonFo
5252
}
5353
return dictionary;
5454
default:
55+
reader.ReadNextBlock();
5556
return null;
5657
}
5758
}

src/Nest/CommonAbstractions/SerializationBehavior/JsonFormatters/NullableDateTimeOffsetEpochSecondsFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ internal class NullableDateTimeOffsetEpochSecondsFormatter : IJsonFormatter<Date
88
public DateTimeOffset? Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
99
{
1010
if (reader.GetCurrentJsonToken() != JsonToken.Number)
11+
{
12+
reader.ReadNextBlock();
1113
return null;
14+
}
1215

1316
var secondsSinceEpoch = reader.ReadDouble();
1417
var dateTimeOffset = DateTimeUtil.Epoch.AddSeconds(secondsSinceEpoch);

src/Nest/CommonAbstractions/SerializationBehavior/JsonFormatters/SortOrderFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ internal class SortOrderFormatter<TSortOrder> : IJsonFormatter<TSortOrder>
88
public TSortOrder Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
99
{
1010
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
11+
{
12+
reader.ReadNextBlock();
1113
return null;
14+
}
1215

1316
var count = 0;
1417
var sortOrder = new TSortOrder();

src/Nest/CommonOptions/Fuzziness/FuzzinessFormatter.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public Fuzziness Deserialize(ref JsonReader reader, IJsonFormatterResolver forma
7070
var high = NumberConverter.ReadInt32(rawAuto.Array, commaIndex + 1, out _);
7171
return Fuzziness.AutoLength(low, high);
7272
}
73-
case JsonToken.Number: {
73+
case JsonToken.Number:
74+
{
7475
var value = reader.ReadNumberSegment();
7576

7677
if (value.IsDouble())
@@ -85,6 +86,7 @@ public Fuzziness Deserialize(ref JsonReader reader, IJsonFormatterResolver forma
8586
}
8687
}
8788
default:
89+
reader.ReadNextBlock();
8890
return null;
8991
}
9092
}

src/Nest/CommonOptions/Geo/DistanceFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ internal class DistanceFormatter : IJsonFormatter<Distance>
77
public Distance Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
88
{
99
if (reader.GetCurrentJsonToken() != JsonToken.String)
10+
{
11+
reader.ReadNextBlock();
1012
return null;
13+
}
1114

1215
var value = reader.ReadString();
1316
return value == null

src/Nest/CommonOptions/Scripting/ScriptFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ internal class ScriptFormatter : IJsonFormatter<IScript>
2020
public IScript Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
2121
{
2222
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
23+
{
24+
reader.ReadNextBlock();
2325
return null;
26+
}
2427

2528
var count = 0;
2629
IScript script = null;

src/Nest/QueryDsl/MultiTermQueryRewrite/MultiTermQueryRewriteFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ public MultiTermQueryRewrite Deserialize(ref JsonReader reader, IJsonFormatterRe
1010
var token = reader.GetCurrentJsonToken();
1111

1212
if (token == JsonToken.Null)
13+
{
14+
reader.ReadNext();
1315
return null;
16+
}
1417

1518
if (token != JsonToken.String)
1619
throw new Exception($"Invalid token type {token} to deserialize {nameof(MultiTermQueryRewrite)} from");

src/Nest/QueryDsl/TermLevel/Fuzzy/FuzzyQueryFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public override void SerializeInternal(ref JsonWriter writer, IFuzzyQuery value,
5050

5151
public override IFuzzyQuery Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
5252
{
53-
if (reader.GetCurrentJsonToken() == JsonToken.Null)
53+
if (reader.ReadIsNull())
5454
return null;
5555

5656
var count = 0;

src/Nest/QueryDsl/TermLevel/Terms/TermsQueryFormatter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ internal class TermsQueryFormatter : IJsonFormatter<ITermsQuery>
2727
public ITermsQuery Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
2828
{
2929
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
30+
{
31+
reader.ReadNextBlock();
3032
return null;
33+
}
3134

3235
ITermsQuery query = new TermsQuery();
3336
var count = 0;

src/Nest/Search/Suggesters/ContextSuggester/SuggestContextFormatter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal class SuggestContextFormatter : IJsonFormatter<ISuggestContext>
1515

1616
public ISuggestContext Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
1717
{
18-
if (reader.GetCurrentJsonToken() == JsonToken.Null)
18+
if (reader.ReadIsNull())
1919
return null;
2020

2121
var segment = reader.ReadNextBlockSegment();

0 commit comments

Comments
 (0)