Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
a19d268
Add an in-box array-backed IBufferWriter<T>
ahsonkhan Apr 15, 2019
b522e0c
Update Utf8JsonWriter ref and main writer file.
ahsonkhan Apr 15, 2019
341d937
Fix JsonWriter WriteValue APIs.
ahsonkhan Apr 15, 2019
9caf27c
Use Environment.NewLine static and invert some stream conditions.
ahsonkhan Apr 15, 2019
38a3834
Update JsonWriter properties and fix serializer build breaks.
ahsonkhan Apr 16, 2019
61f51c4
Update JsonWriter unit tests.
ahsonkhan Apr 16, 2019
1406858
Add xml comments, clean up, and improve test coverage.
ahsonkhan Apr 17, 2019
449d935
Update JsonDocument and JsonSerializer to react to JsonWriter changes.
ahsonkhan Apr 17, 2019
ec4d03f
Normalize the reference assembly.
ahsonkhan Apr 17, 2019
5a060d1
Do not escape/validate comments and update issue number.
ahsonkhan Apr 17, 2019
fc5c82a
Do not escape comments and validate they don't contain embedded
ahsonkhan Apr 17, 2019
b44b6b8
Merge branch 'master' of https://github.com/dotnet/corefx into Redesi…
ahsonkhan Apr 17, 2019
d6213e3
Remove dead code and update issue number in comments.
ahsonkhan Apr 17, 2019
50e832c
Throw InvalidOEx instead of ArgEx if IBW doesn't give requested memory.
ahsonkhan Apr 17, 2019
f94ca69
Fix test build breaks for netfx.
ahsonkhan Apr 17, 2019
6aa5efc
Remove dead code and fix source packaging.
ahsonkhan Apr 18, 2019
5af4802
Merge branch 'master' of https://github.com/dotnet/corefx into Redesi…
ahsonkhan Apr 18, 2019
695c9df
Address PR feedback.
ahsonkhan Apr 18, 2019
4cecd6a
Disable writing floats test on windows
ahsonkhan Apr 18, 2019
4d7a90e
8 digit floats don't work well on older TFMs. Reduce to 7.
ahsonkhan Apr 18, 2019
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
Prev Previous commit
Next Next commit
Update JsonDocument and JsonSerializer to react to JsonWriter changes.
  • Loading branch information
ahsonkhan committed Apr 17, 2019
commit 449d935ed7a6ac9b13f3922cd609cdec664360f4
6 changes: 3 additions & 3 deletions src/System.Text.Json/ref/System.Text.Json.cs
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ public readonly partial struct JsonElement
public bool TryGetUInt32(out uint value) { throw null; }
[System.CLSCompliantAttribute(false)]
public bool TryGetUInt64(out ulong value) { throw null; }
public void WriteAsProperty(System.ReadOnlySpan<byte> utf8PropertyName, ref System.Text.Json.Utf8JsonWriter writer) { }
public void WriteAsProperty(System.ReadOnlySpan<char> propertyName, ref System.Text.Json.Utf8JsonWriter writer) { }
public void WriteAsValue(ref System.Text.Json.Utf8JsonWriter writer) { }
public void WriteAsProperty(System.ReadOnlySpan<byte> utf8PropertyName, System.Text.Json.Utf8JsonWriter writer) { }
public void WriteAsProperty(System.ReadOnlySpan<char> propertyName, System.Text.Json.Utf8JsonWriter writer) { }
public void WriteAsValue(System.Text.Json.Utf8JsonWriter writer) { }
public partial struct ArrayEnumerator : System.Collections.Generic.IEnumerable<System.Text.Json.JsonElement>, System.Collections.Generic.IEnumerator<System.Text.Json.JsonElement>, System.Collections.IEnumerable, System.Collections.IEnumerator, System.IDisposable
{
private object _dummy;
Expand Down
1 change: 0 additions & 1 deletion src/System.Text.Json/src/System.Text.Json.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@
<Compile Include="System\Text\Json\Serialization\JsonSerializer.Write.HandleEnumerable.cs" />
<Compile Include="System\Text\Json\Serialization\JsonSerializer.Write.HandleObject.cs" />
<Compile Include="System\Text\Json\Serialization\JsonSerializer.Write.String.cs" />
<Compile Include="System\Text\Json\Serialization\JsonSerializer.Write.HandleValue.cs" />
<Compile Include="System\Text\Json\Serialization\JsonSerializerOptions.cs" />
<Compile Include="System\Text\Json\Serialization\Policies\JsonValueConverter.cs" />
<Compile Include="System\Text\Json\Serialization\PooledBufferWriter.cs" />
Expand Down
36 changes: 18 additions & 18 deletions src/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,7 @@ internal JsonElement CloneElement(int index)
/// </summary>
internal void WriteElementTo(
int index,
ref Utf8JsonWriter writer,
Utf8JsonWriter writer,
ReadOnlySpan<char> propertyName)
{
CheckNotDisposed();
Expand All @@ -614,14 +614,14 @@ internal void WriteElementTo(
{
case JsonTokenType.StartObject:
writer.WriteStartObject(propertyName);
WriteComplexElement(index, ref writer);
WriteComplexElement(index, writer);
return;
case JsonTokenType.StartArray:
writer.WriteStartArray(propertyName);
WriteComplexElement(index, ref writer);
WriteComplexElement(index, writer);
return;
case JsonTokenType.String:
WriteString(propertyName, row, ref writer);
WriteString(propertyName, row, writer);
return;
case JsonTokenType.True:
writer.WriteBoolean(propertyName, value: true);
Expand All @@ -647,7 +647,7 @@ internal void WriteElementTo(
/// </summary>
internal void WriteElementTo(
int index,
ref Utf8JsonWriter writer,
Utf8JsonWriter writer,
ReadOnlySpan<byte> propertyName)
{
CheckNotDisposed();
Expand All @@ -658,14 +658,14 @@ internal void WriteElementTo(
{
case JsonTokenType.StartObject:
writer.WriteStartObject(propertyName);
WriteComplexElement(index, ref writer);
WriteComplexElement(index, writer);
return;
case JsonTokenType.StartArray:
writer.WriteStartArray(propertyName);
WriteComplexElement(index, ref writer);
WriteComplexElement(index, writer);
return;
case JsonTokenType.String:
WriteString(propertyName, row, ref writer);
WriteString(propertyName, row, writer);
return;
case JsonTokenType.True:
writer.WriteBoolean(propertyName, value: true);
Expand All @@ -691,7 +691,7 @@ internal void WriteElementTo(
/// </summary>
internal void WriteElementTo(
int index,
ref Utf8JsonWriter writer)
Utf8JsonWriter writer)
{
CheckNotDisposed();

Expand All @@ -701,14 +701,14 @@ internal void WriteElementTo(
{
case JsonTokenType.StartObject:
writer.WriteStartObject();
WriteComplexElement(index, ref writer);
WriteComplexElement(index, writer);
return;
case JsonTokenType.StartArray:
writer.WriteStartArray();
WriteComplexElement(index, ref writer);
WriteComplexElement(index, writer);
return;
case JsonTokenType.String:
WriteString(row, ref writer);
WriteString(row, writer);
return;
case JsonTokenType.Number:
writer.WriteNumberValue(_utf8Json.Slice(row.Location, row.SizeOrLength).Span);
Expand All @@ -727,7 +727,7 @@ internal void WriteElementTo(
Debug.Fail($"Unexpected encounter with JsonTokenType {row.TokenType}");
}

private void WriteComplexElement(int index, ref Utf8JsonWriter writer)
private void WriteComplexElement(int index, Utf8JsonWriter writer)
{
int endIndex = GetEndIndex(index, true);

Expand All @@ -739,7 +739,7 @@ private void WriteComplexElement(int index, ref Utf8JsonWriter writer)
switch (row.TokenType)
{
case JsonTokenType.String:
WriteString(row, ref writer);
WriteString(row, writer);
continue;
case JsonTokenType.Number:
writer.WriteNumberValue(_utf8Json.Slice(row.Location, row.SizeOrLength).Span);
Expand Down Expand Up @@ -778,7 +778,7 @@ private void WriteComplexElement(int index, ref Utf8JsonWriter writer)
switch (propertyValue.TokenType)
{
case JsonTokenType.String:
WriteString(propertyName, propertyValue, ref writer);
WriteString(propertyName, propertyValue, writer);
continue;
case JsonTokenType.Number:
writer.WriteNumber(
Expand Down Expand Up @@ -844,7 +844,7 @@ private static void ClearAndReturn(ArraySegment<byte> rented)
}
}

private void WriteString(ReadOnlySpan<byte> propertyName, in DbRow row, ref Utf8JsonWriter writer)
private void WriteString(ReadOnlySpan<byte> propertyName, in DbRow row, Utf8JsonWriter writer)
{
ArraySegment<byte> rented = default;

Expand All @@ -860,7 +860,7 @@ private void WriteString(ReadOnlySpan<byte> propertyName, in DbRow row, ref Utf8
}
}

private void WriteString(ReadOnlySpan<char> propertyName, in DbRow row, ref Utf8JsonWriter writer)
private void WriteString(ReadOnlySpan<char> propertyName, in DbRow row, Utf8JsonWriter writer)
{
ArraySegment<byte> rented = default;

Expand All @@ -877,7 +877,7 @@ private void WriteString(ReadOnlySpan<char> propertyName, in DbRow row, ref Utf8
}
}

private void WriteString(in DbRow row, ref Utf8JsonWriter writer)
private void WriteString(in DbRow row, Utf8JsonWriter writer)
{
ArraySegment<byte> rented = default;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -940,11 +940,11 @@ internal string GetPropertyRawText()
/// <exception cref="ObjectDisposedException">
/// The parent <see cref="JsonDocument"/> has been disposed.
/// </exception>
public void WriteAsProperty(ReadOnlySpan<char> propertyName, ref Utf8JsonWriter writer)
public void WriteAsProperty(ReadOnlySpan<char> propertyName, Utf8JsonWriter writer)
{
CheckValidInstance();

_parent.WriteElementTo(_idx, ref writer, propertyName);
_parent.WriteElementTo(_idx, writer, propertyName);
}

/// <summary>
Expand All @@ -960,11 +960,11 @@ public void WriteAsProperty(ReadOnlySpan<char> propertyName, ref Utf8JsonWriter
/// <exception cref="ObjectDisposedException">
/// The parent <see cref="JsonDocument"/> has been disposed.
/// </exception>
public void WriteAsProperty(ReadOnlySpan<byte> utf8PropertyName, ref Utf8JsonWriter writer)
public void WriteAsProperty(ReadOnlySpan<byte> utf8PropertyName, Utf8JsonWriter writer)
{
CheckValidInstance();

_parent.WriteElementTo(_idx, ref writer, utf8PropertyName);
_parent.WriteElementTo(_idx, writer, utf8PropertyName);
}

/// <summary>
Expand All @@ -977,11 +977,11 @@ public void WriteAsProperty(ReadOnlySpan<byte> utf8PropertyName, ref Utf8JsonWri
/// <exception cref="ObjectDisposedException">
/// The parent <see cref="JsonDocument"/> has been disposed.
/// </exception>
public void WriteAsValue(ref Utf8JsonWriter writer)
public void WriteAsValue(Utf8JsonWriter writer)
{
CheckValidInstance();

_parent.WriteElementTo(_idx, ref writer);
_parent.WriteElementTo(_idx, writer);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out bool
return true;
}

public override void Write(bool value, ref Utf8JsonWriter writer)
public override void Write(bool value, Utf8JsonWriter writer)
{
writer.WriteBooleanValue(value);
}

public override void Write(Span<byte> escapedPropertyName, bool value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, bool value, Utf8JsonWriter writer)
{
writer.WriteBoolean(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out byte
return true;
}

public override void Write(byte value, ref Utf8JsonWriter writer)
public override void Write(byte value, Utf8JsonWriter writer)
{
writer.WriteNumberValue(value);
}

public override void Write(Span<byte> escapedPropertyName, byte value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, byte value, Utf8JsonWriter writer)
{
writer.WriteNumber(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,20 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out char
return true;
}

public override void Write(char value, ref Utf8JsonWriter writer)
public override void Write(char value, Utf8JsonWriter writer)
{
#if BUILDING_INBOX_LIBRARY
Span<char> temp = MemoryMarshal.CreateSpan<char>(ref value, 1);
Span<char> temp = MemoryMarshal.CreateSpan(ref value, 1);
writer.WriteStringValue(temp);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: you don't actually need a temp here; it can be a single line to parallel the other else case, e.g.

writer.WriteStringValue(
#if BUILDING_INBOX_LIBRARY
    MemoryMarshal.CreateSpan(ref value, 1)
#else
    value.ToString()
#endif
    );

or something like that.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I decided to keep changes outside of the writer minimal, but that would work.

However, your suggestion does make it a bit harder to read (but VS coloring would help).

cc @steveharter

#else
writer.WriteStringValue(value.ToString());
#endif
}

public override void Write(Span<byte> escapedPropertyName, char value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, char value, Utf8JsonWriter writer)
{
#if BUILDING_INBOX_LIBRARY
Span<char> temp = MemoryMarshal.CreateSpan<char>(ref value, 1);
Span<char> temp = MemoryMarshal.CreateSpan(ref value, 1);
writer.WriteString(escapedPropertyName, temp);
#else
writer.WriteString(escapedPropertyName, value.ToString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out Date
return reader.TryGetDateTime(out value);
}

public override void Write(DateTime value, ref Utf8JsonWriter writer)
public override void Write(DateTime value, Utf8JsonWriter writer)
{
writer.WriteStringValue(value);
}

public override void Write(Span<byte> escapedPropertyName, DateTime value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, DateTime value, Utf8JsonWriter writer)
{
writer.WriteString(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out Date
return reader.TryGetDateTimeOffset(out value);
}

public override void Write(DateTimeOffset value, ref Utf8JsonWriter writer)
public override void Write(DateTimeOffset value, Utf8JsonWriter writer)
{
writer.WriteStringValue(value);
}

public override void Write(Span<byte> escapedPropertyName, DateTimeOffset value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, DateTimeOffset value, Utf8JsonWriter writer)
{
writer.WriteString(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out deci
return reader.TryGetDecimal(out value);
}

public override void Write(decimal value, ref Utf8JsonWriter writer)
public override void Write(decimal value, Utf8JsonWriter writer)
{
writer.WriteNumberValue(value);
}

public override void Write(Span<byte> escapedPropertyName, decimal value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, decimal value, Utf8JsonWriter writer)
{
writer.WriteNumber(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out doub
return reader.TryGetDouble(out value);
}

public override void Write(double value, ref Utf8JsonWriter writer)
public override void Write(double value, Utf8JsonWriter writer)
{
writer.WriteNumberValue(value);
}

public override void Write(Span<byte> escapedPropertyName, double value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, double value, Utf8JsonWriter writer)
{
writer.WriteNumber(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out TVal
return true;
}

public override void Write(TValue value, ref Utf8JsonWriter writer)
public override void Write(TValue value, Utf8JsonWriter writer)
{
if (TreatAsString)
{
Expand All @@ -64,7 +64,7 @@ public override void Write(TValue value, ref Utf8JsonWriter writer)
}
}

public override void Write(Span<byte> escapedPropertyName, TValue value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, TValue value, Utf8JsonWriter writer)
{
if (TreatAsString)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out shor
return true;
}

public override void Write(short value, ref Utf8JsonWriter writer)
public override void Write(short value, Utf8JsonWriter writer)
{
writer.WriteNumberValue(value);
}

public override void Write(Span<byte> escapedPropertyName, short value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, short value, Utf8JsonWriter writer)
{
writer.WriteNumber(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out int
return reader.TryGetInt32(out value);
}

public override void Write(int value, ref Utf8JsonWriter writer)
public override void Write(int value, Utf8JsonWriter writer)
{
writer.WriteNumberValue(value);
}

public override void Write(Span<byte> escapedPropertyName, int value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, int value, Utf8JsonWriter writer)
{
writer.WriteNumber(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out long
return reader.TryGetInt64(out value);
}

public override void Write(long value, ref Utf8JsonWriter writer)
public override void Write(long value, Utf8JsonWriter writer)
{
writer.WriteNumberValue(value);
}

public override void Write(Span<byte> escapedPropertyName, long value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, long value, Utf8JsonWriter writer)
{
writer.WriteNumber(escapedPropertyName, value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ public override bool TryRead(Type valueType, ref Utf8JsonReader reader, out sbyt
return true;
}

public override void Write(sbyte value, ref Utf8JsonWriter writer)
public override void Write(sbyte value, Utf8JsonWriter writer)
{
writer.WriteNumberValue(value);
}

public override void Write(Span<byte> escapedPropertyName, sbyte value, ref Utf8JsonWriter writer)
public override void Write(Span<byte> escapedPropertyName, sbyte value, Utf8JsonWriter writer)
{
writer.WriteNumber(escapedPropertyName, value);
}
Expand Down
Loading