Call nullable WriteValue overloads in TraceJsonWriter (#1139)
Fixes #1138
This commit is contained in:
committed by
James Newton-King
parent
260dfedac5
commit
218c25c859
@@ -7311,6 +7311,36 @@ Path '', line 1, position 1.");
|
||||
Assert.AreEqual(new Guid("d8220a4b-75b1-4b7a-8112-b7bdae956a45"), c.Id);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SerializeNullableGuidCustomWriterOverridesNullableGuid()
|
||||
{
|
||||
NullableGuid ng = new NullableGuid {Id = Guid.Empty};
|
||||
NullableGuidCountingJsonTextWriter writer = new NullableGuidCountingJsonTextWriter(new StreamWriter(Stream.Null));
|
||||
JsonSerializer serializer = JsonSerializer.Create();
|
||||
serializer.Serialize(writer, ng);
|
||||
Assert.AreEqual(1, writer.NullableGuidCount);
|
||||
MemoryTraceWriter traceWriter = new MemoryTraceWriter();
|
||||
serializer.TraceWriter = traceWriter;
|
||||
serializer.Serialize(writer, ng);
|
||||
Assert.AreEqual(2, writer.NullableGuidCount);
|
||||
}
|
||||
|
||||
private class NullableGuidCountingJsonTextWriter : JsonTextWriter
|
||||
{
|
||||
public NullableGuidCountingJsonTextWriter(TextWriter textWriter)
|
||||
: base(textWriter)
|
||||
{
|
||||
}
|
||||
|
||||
public int NullableGuidCount { get; private set; }
|
||||
|
||||
public override void WriteValue(Guid? value)
|
||||
{
|
||||
base.WriteValue(value);
|
||||
++NullableGuidCount;
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DeserializeGuid()
|
||||
{
|
||||
|
||||
@@ -44,6 +44,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(decimal? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(bool value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -51,6 +65,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(bool? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(byte value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -58,6 +86,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(byte? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(char value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -65,6 +107,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(char? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(byte[] value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -86,6 +142,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(DateTime? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
#if !NET20
|
||||
public override void WriteValue(DateTimeOffset value)
|
||||
{
|
||||
@@ -93,6 +163,21 @@ namespace Newtonsoft.Json.Serialization
|
||||
_innerWriter.WriteValue(value);
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(DateTimeOffset? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
public override void WriteValue(double value)
|
||||
@@ -102,6 +187,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(double? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteUndefined()
|
||||
{
|
||||
_textWriter.WriteUndefined();
|
||||
@@ -123,6 +222,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(float? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(Guid value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -130,6 +243,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(Guid? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(int value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -137,6 +264,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(int? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(long value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -144,6 +285,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(long? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(object value)
|
||||
{
|
||||
#if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_1
|
||||
@@ -176,6 +331,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(sbyte? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(short value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -183,6 +352,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(short? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(string value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -197,6 +380,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(TimeSpan? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(uint value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -204,6 +401,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(uint? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(ulong value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -211,6 +422,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(ulong? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteValue(Uri value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
@@ -232,6 +457,20 @@ namespace Newtonsoft.Json.Serialization
|
||||
base.WriteValue(value);
|
||||
}
|
||||
|
||||
public override void WriteValue(ushort? value)
|
||||
{
|
||||
_textWriter.WriteValue(value);
|
||||
_innerWriter.WriteValue(value);
|
||||
if (value.HasValue)
|
||||
{
|
||||
base.WriteValue(value.GetValueOrDefault());
|
||||
}
|
||||
else
|
||||
{
|
||||
base.WriteUndefined();
|
||||
}
|
||||
}
|
||||
|
||||
public override void WriteWhitespace(string ws)
|
||||
{
|
||||
_textWriter.WriteWhitespace(ws);
|
||||
|
||||
Reference in New Issue
Block a user