Skip to content

Advance reader when not expected JSON token #3833

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 21, 2019
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
3 changes: 3 additions & 0 deletions src/Nest/Aggregations/Bucket/Terms/TermsExcludeFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ public TermsExclude Deserialize(ref JsonReader reader, IJsonFormatterResolver fo
{
var token = reader.GetCurrentJsonToken();
if (token == JsonToken.Null)
{
reader.ReadNext();
return null;
}

TermsExclude termsExclude;
switch (token)
Expand Down
3 changes: 3 additions & 0 deletions src/Nest/Aggregations/Bucket/Terms/TermsIncludeFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ public TermsInclude Deserialize(ref JsonReader reader, IJsonFormatterResolver fo
{
var token = reader.GetCurrentJsonToken();
if (token == JsonToken.Null)
{
reader.ReadNext();
return null;
}

TermsInclude termsInclude;
switch (token)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ internal class PercentileRanksAggregationFormatter : IJsonFormatter<IPercentileR
public IPercentileRanksAggregation Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
{
reader.ReadNextBlock();
return null;
}

var count = 0;
var percentiles = new PercentileRanksAggregation();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@ internal class PercentilesAggregationFormatter : IJsonFormatter<IPercentilesAggr
public IPercentilesAggregation Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
{
reader.ReadNextBlock();
return null;
}

var count = 0;
var percentiles = new PercentilesAggregation();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ internal class MovingAverageAggregationFormatter : IJsonFormatter<IMovingAverage
public IMovingAverageAggregation Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
{
reader.ReadNextBlock();
return null;
}

var count = 0;
var aggregation = new MovingAverageAggregation();
Expand Down
3 changes: 3 additions & 0 deletions src/Nest/CommonAbstractions/Fields/FieldValuesFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ internal class FieldValuesFormatter : IJsonFormatter<FieldValues>
public FieldValues Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
{
reader.ReadNextBlock();
return null;
}

var count = 0;
var fields = new Dictionary<string, LazyDocument>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ internal class IndexNameFormatter : IJsonFormatter<IndexName>, IObjectPropertyNa
{
public IndexName Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.String) return null;
if (reader.GetCurrentJsonToken() != JsonToken.String)
{
reader.ReadNextBlock();
return null;
}

IndexName indexName = reader.ReadString();
return indexName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public Indices Deserialize(ref JsonReader reader, IJsonFormatterResolver formatt
{
if (reader.GetCurrentJsonToken() != JsonToken.BeginArray)
{
reader.ReadNext();
reader.ReadNextBlock();
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public PropertyName Deserialize(ref JsonReader reader, IJsonFormatterResolver fo
{
if (reader.GetCurrentJsonToken() != JsonToken.String)
{
reader.ReadNext();
reader.ReadNextBlock();
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public RelationName Deserialize(ref JsonReader reader, IJsonFormatterResolver fo
return relationName;
}

reader.ReadNextBlock();
return null;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ public void Serialize(ref JsonWriter writer, ILazyDocument value, IJsonFormatter
public ILazyDocument Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() == JsonToken.Null)
{
reader.ReadNextBlock();
return null;
}

var arraySegment = reader.ReadNextBlockSegment();

Expand All @@ -50,7 +53,7 @@ internal static void WriteUnindented(ref JsonReader reader, ref JsonWriter write
var c = 0;
while (reader.ReadIsInObject(ref c))
{
if (c != 1)
if (c != 1)
writer.WriteRaw((byte)',');
writer.WritePropertyName(reader.ReadPropertyName());
WriteUnindented(ref reader, ref writer);
Expand All @@ -64,7 +67,7 @@ internal static void WriteUnindented(ref JsonReader reader, ref JsonWriter write
var c = 0;
while (reader.ReadIsInArray(ref c))
{
if (c != 1)
if (c != 1)
writer.WriteRaw((byte)',');
WriteUnindented(ref reader, ref writer);
}
Expand Down Expand Up @@ -108,7 +111,7 @@ public void Serialize(ref JsonWriter writer, LazyDocument value, IJsonFormatterR

public LazyDocument Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() == JsonToken.Null)
if (reader.ReadIsNull())
return null;

var arraySegment = reader.ReadNextBlockSegment();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,25 @@ internal class NullableDateTimeOffsetEpochMillisecondsFormatter : IJsonFormatter
{
var token = reader.GetCurrentJsonToken();

if (token == JsonToken.String)
switch (token)
{
var formatter = formatterResolver.GetFormatter<DateTimeOffset>();
return formatter.Deserialize(ref reader, formatterResolver);
case JsonToken.String:
{
var formatter = formatterResolver.GetFormatter<DateTimeOffset>();
return formatter.Deserialize(ref reader, formatterResolver);
}
case JsonToken.Null:
reader.ReadNext();
return null;
case JsonToken.Number:
{
var millisecondsSinceEpoch = reader.ReadDouble();
var dateTimeOffset = DateTimeUtil.Epoch.AddMilliseconds(millisecondsSinceEpoch);
return dateTimeOffset;
}
default:
throw new Exception($"Cannot deserialize {nameof(DateTimeOffset)} from token {token}");
}
if (token == JsonToken.Null)
return null;

if (token == JsonToken.Number)
{
var millisecondsSinceEpoch = reader.ReadDouble();
var dateTimeOffset = DateTimeUtil.Epoch.AddMilliseconds(millisecondsSinceEpoch);
return dateTimeOffset;
}

throw new Exception($"Cannot deserialize {nameof(DateTimeOffset)} from token {token}");
}

public void Serialize(ref JsonWriter writer, DateTimeOffset? value, IJsonFormatterResolver formatterResolver)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public IDictionary<IndexName, double> Deserialize(ref JsonReader reader, IJsonFo
}
return dictionary;
default:
reader.ReadNextBlock();
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ internal class NullableDateTimeOffsetEpochSecondsFormatter : IJsonFormatter<Date
public DateTimeOffset? Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.Number)
{
reader.ReadNextBlock();
return null;
}

var secondsSinceEpoch = reader.ReadDouble();
var dateTimeOffset = DateTimeUtil.Epoch.AddSeconds(secondsSinceEpoch);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,10 @@ internal class SortOrderFormatter<TSortOrder> : IJsonFormatter<TSortOrder>
public TSortOrder Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
{
reader.ReadNextBlock();
return null;
}

var count = 0;
var sortOrder = new TSortOrder();
Expand Down
4 changes: 3 additions & 1 deletion src/Nest/CommonOptions/Fuzziness/FuzzinessFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ public Fuzziness Deserialize(ref JsonReader reader, IJsonFormatterResolver forma
var high = NumberConverter.ReadInt32(rawAuto.Array, commaIndex + 1, out _);
return Fuzziness.AutoLength(low, high);
}
case JsonToken.Number: {
case JsonToken.Number:
{
var value = reader.ReadNumberSegment();

if (value.IsDouble())
Expand All @@ -85,6 +86,7 @@ public Fuzziness Deserialize(ref JsonReader reader, IJsonFormatterResolver forma
}
}
default:
reader.ReadNextBlock();
return null;
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/Nest/CommonOptions/Geo/DistanceFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ internal class DistanceFormatter : IJsonFormatter<Distance>
public Distance Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.String)
{
reader.ReadNextBlock();
return null;
}

var value = reader.ReadString();
return value == null
Expand Down
3 changes: 3 additions & 0 deletions src/Nest/CommonOptions/Scripting/ScriptFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ internal class ScriptFormatter : IJsonFormatter<IScript>
public IScript Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
{
reader.ReadNextBlock();
return null;
}

var count = 0;
IScript script = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,10 @@ public MultiTermQueryRewrite Deserialize(ref JsonReader reader, IJsonFormatterRe
var token = reader.GetCurrentJsonToken();

if (token == JsonToken.Null)
{
reader.ReadNext();
return null;
}

if (token != JsonToken.String)
throw new Exception($"Invalid token type {token} to deserialize {nameof(MultiTermQueryRewrite)} from");
Expand Down
2 changes: 1 addition & 1 deletion src/Nest/QueryDsl/TermLevel/Fuzzy/FuzzyQueryFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public override void SerializeInternal(ref JsonWriter writer, IFuzzyQuery value,

public override IFuzzyQuery Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() == JsonToken.Null)
if (reader.ReadIsNull())
return null;

var count = 0;
Expand Down
3 changes: 3 additions & 0 deletions src/Nest/QueryDsl/TermLevel/Terms/TermsQueryFormatter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@ internal class TermsQueryFormatter : IJsonFormatter<ITermsQuery>
public ITermsQuery Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() != JsonToken.BeginObject)
{
reader.ReadNextBlock();
return null;
}

ITermsQuery query = new TermsQuery();
var count = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ internal class SuggestContextFormatter : IJsonFormatter<ISuggestContext>

public ISuggestContext Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
{
if (reader.GetCurrentJsonToken() == JsonToken.Null)
if (reader.ReadIsNull())
return null;

var segment = reader.ReadNextBlockSegment();
Expand Down