< Summary

Information
Class: System.Text.Json.Serialization.JsonResumableConverter<T>
Assembly: System.Text.Json
File(s): C:\h\w\B31A098C\w\BB5A0A33\e\runtime-utils\Runner\runtime\src\libraries\System.Text.Json\src\System\Text\Json\Serialization\JsonResumableConverterOfT.cs
Line coverage
4%
Covered lines: 1
Uncovered lines: 21
Coverable lines: 22
Total lines: 51
Line coverage: 4.5%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
Read(...)100%110%
Write(...)100%110%

File(s)

C:\h\w\B31A098C\w\BB5A0A33\e\runtime-utils\Runner\runtime\src\libraries\System.Text.Json\src\System\Text\Json\Serialization\JsonResumableConverterOfT.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System.Text.Json.Serialization.Metadata;
 5
 6namespace System.Text.Json.Serialization
 7{
 8    /// <summary>
 9    /// Base class for converters that are able to resume after reading or writing to a buffer.
 10    /// This is used when the Stream-based serialization APIs are used.
 11    /// </summary>
 12    /// <typeparam name="T"></typeparam>
 13    internal abstract class JsonResumableConverter<T> : JsonConverter<T>
 14    {
 230115        public override bool HandleNull => false;
 16
 17        public sealed override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
 018        {
 019            ArgumentNullException.ThrowIfNull(options);
 20
 21            // Bridge from resumable to value converters.
 22
 023            ReadStack state = default;
 024            JsonTypeInfo jsonTypeInfo = options.GetTypeInfoInternal(typeToConvert);
 025            state.Initialize(jsonTypeInfo);
 26
 027            TryRead(ref reader, typeToConvert, options, ref state, out T? value, out _);
 028            return value;
 029        }
 30
 31        public sealed override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options)
 032        {
 033            ArgumentNullException.ThrowIfNull(options);
 34
 35            // Bridge from resumable to value converters.
 036            WriteStack state = default;
 037            JsonTypeInfo typeInfo = options.GetTypeInfoInternal(typeof(T));
 038            state.Initialize(typeInfo);
 39
 40            try
 041            {
 042                TryWrite(writer, value, options, ref state);
 043            }
 044            catch
 045            {
 046                state.DisposePendingDisposablesOnException();
 047                throw;
 48            }
 049        }
 50    }
 51}