Remove converter Write() that takes property name (dotnet/corefx#38932)
authorSteve Harter <steveharter@users.noreply.github.com>
Wed, 26 Jun 2019 18:11:04 +0000 (11:11 -0700)
committerGitHub <noreply@github.com>
Wed, 26 Jun 2019 18:11:04 +0000 (11:11 -0700)
Commit migrated from https://github.com/dotnet/corefx/commit/d33be8575490a723395f7fcce1be1fd735405406

37 files changed:
src/libraries/System.Text.Json/ref/System.Text.Json.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterBoolean.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterByte.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterByteArray.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterChar.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterDateTime.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterDateTimeOffset.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterDecimal.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterDouble.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterEnum.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterGuid.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterInt16.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterInt32.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterInt64.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterJsonElement.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterKeyValuePair.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterObject.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterSByte.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterSingle.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterString.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterUInt16.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterUInt32.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterUInt64.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/JsonValueConverterUri.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonConverterOfT.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonPropertyInfoNotNullable.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonPropertyInfoNotNullableContravariant.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonPropertyInfoNullable.cs
src/libraries/System.Text.Json/src/System/Text/Json/Serialization/JsonSerializer.Write.HandleDictionary.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests.Array.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests.Attribute.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests.BadConverters.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests.Exceptions.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests.Object.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests.Point.cs
src/libraries/System.Text.Json/tests/Serialization/CustomConverterTests.ReadAhead.cs
src/libraries/System.Text.Json/tests/Serialization/Value.WriteTests.GenericCollections.cs

index 0bc8bdd..4989200 100644 (file)
@@ -476,7 +476,6 @@ namespace System.Text.Json.Serialization
         protected internal JsonConverter() { }
         public override bool CanConvert(System.Type typeToConvert) { throw null; }
         public abstract T Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options);
-        public virtual void Write(System.Text.Json.Utf8JsonWriter writer, T value, System.Text.Json.JsonEncodedText propertyName, System.Text.Json.JsonSerializerOptions options) { }
         public abstract void Write(System.Text.Json.Utf8JsonWriter writer, T value, System.Text.Json.JsonSerializerOptions options);
     }
     [System.AttributeUsageAttribute(System.AttributeTargets.Property, AllowMultiple=false)]
index ee5a2a3..755f4a2 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override bool Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.True && reader.TokenType != JsonTokenType.False)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetBoolean();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteBooleanValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, bool value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteBoolean(propertyName, value);
-        }
     }
 }
index f3e566a..b668fe4 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override byte Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetByte();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, byte value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 5b9001d..df47813 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override byte[] Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.String)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetBytesFromBase64();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteBase64StringValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, byte[] value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteBase64String(propertyName, value);
-        }
     }
 }
index 8428f60..a7e7995 100644 (file)
@@ -10,11 +10,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override char Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.String)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetString()[0];
         }
 
@@ -28,16 +23,5 @@ namespace System.Text.Json.Serialization.Converters
 #endif
                 );
         }
-
-        public override void Write(Utf8JsonWriter writer, char value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteString(propertyName,
-#if BUILDING_INBOX_LIBRARY
-                MemoryMarshal.CreateSpan(ref value, 1)
-#else
-                value.ToString()
-#endif
-                );
-        }
     }
 }
index 35d2caa..cdd837f 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.String)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetDateTime();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteStringValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, DateTime value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteString(propertyName, value);
-        }
     }
 }
index 563eb01..268c164 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.String)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetDateTimeOffset();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteStringValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, DateTimeOffset value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteString(propertyName, value);
-        }
     }
 }
index 6c16247..f951e39 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override decimal Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetDecimal();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, decimal value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 0a19329..c53708d 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override double Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetDouble();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, double value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index be23946..027e3df 100644 (file)
@@ -212,66 +212,5 @@ namespace System.Text.Json.Serialization.Converters
                     break;
             }
         }
-
-        public override void Write(Utf8JsonWriter writer, T value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            // If strings are allowed, attempt to write it out as a string value
-            if (_converterOptions.HasFlag(EnumConverterOptions.AllowStrings))
-            {
-                string original = value.ToString();
-                if (_nameCache != null && _nameCache.TryGetValue(original, out string transformed))
-                {
-                    writer.WriteString(propertyName, transformed);
-                    return;
-                }
-
-                if (IsValidIdentifier(original))
-                {
-                    transformed = _namingPolicy.ConvertName(original);
-                    writer.WriteString(propertyName, transformed);
-                    if (_nameCache != null)
-                    {
-                        _nameCache.TryAdd(original, transformed);
-                    }
-                    return;
-                }
-            }
-
-            if (!_converterOptions.HasFlag(EnumConverterOptions.AllowNumbers))
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
-            switch (s_enumTypeCode)
-            {
-                case TypeCode.Int32:
-                    writer.WriteNumber(propertyName, Unsafe.As<T, int>(ref value));
-                    break;
-                case TypeCode.UInt32:
-                    writer.WriteNumber(propertyName, Unsafe.As<T, uint>(ref value));
-                    break;
-                case TypeCode.UInt64:
-                    writer.WriteNumber(propertyName, Unsafe.As<T, ulong>(ref value));
-                    break;
-                case TypeCode.Int64:
-                    writer.WriteNumber(propertyName, Unsafe.As<T, long>(ref value));
-                    break;
-                case TypeCode.Int16:
-                    writer.WriteNumber(propertyName, Unsafe.As<T, short>(ref value));
-                    break;
-                case TypeCode.UInt16:
-                    writer.WriteNumber(propertyName, Unsafe.As<T, ushort>(ref value));
-                    break;
-                case TypeCode.Byte:
-                    writer.WriteNumber(propertyName, Unsafe.As<T, byte>(ref value));
-                    break;
-                case TypeCode.SByte:
-                    writer.WriteNumber(propertyName, Unsafe.As<T, sbyte>(ref value));
-                    break;
-                default:
-                    ThrowHelper.ThrowJsonException();
-                    break;
-            }
-        }
     }
 }
index 2404a0c..379fcc3 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override Guid Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.String)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetGuid();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteStringValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, Guid value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteString(propertyName, value);
-        }
     }
 }
index b7e30cd..39d844f 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override short Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetInt16();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, short value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 8ef3424..fb4e28d 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override int Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetInt32();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, int value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 5454bef..6f82397 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override long Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetInt64();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, long value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 4d1901a..57ed5b5 100644 (file)
@@ -18,10 +18,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             value.WriteValue(writer);
         }
-
-        public override void Write(Utf8JsonWriter writer, JsonElement value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            value.WriteProperty(propertyName.ToString(), writer);
-        }
     }
 }
index 9662fe1..2c777b2 100644 (file)
@@ -93,6 +93,7 @@ namespace System.Text.Json.Serialization.Converters
             T k;
             Type typeToConvert = typeof(T);
 
+            // Attempt to use existing converter first before re-entering through JsonSerializer.Read().
             JsonConverter<T> keyConverter = options.GetConverter(typeToConvert) as JsonConverter<T>;
             if (keyConverter == null)
             {
@@ -109,16 +110,17 @@ namespace System.Text.Json.Serialization.Converters
 
         private void WriteProperty<T>(Utf8JsonWriter writer, T value, JsonEncodedText name, JsonSerializerOptions options)
         {
+            writer.WritePropertyName(name);
+
+            // Attempt to use existing converter first before re-entering through JsonSerializer.Write().
             JsonConverter<T> keyConverter = options.GetConverter(typeof(T)) as JsonConverter<T>;
             if (keyConverter == null)
             {
-                // todo: set property name on writer once that functionality exists
-                // JsonSerializer.WriteValue<T>(writer, value, options);
-                throw new NotImplementedException();
+                JsonSerializer.Serialize<T>(writer, value, options);
             }
             else
             {
-                keyConverter.Write(writer, value, name, options);
+                keyConverter.Write(writer, value, options);
             }
         }
 
@@ -129,13 +131,5 @@ namespace System.Text.Json.Serialization.Converters
             WriteProperty(writer, value.Value, _valueName, options);
             writer.WriteEndObject();
         }
-
-        public override void Write(Utf8JsonWriter writer, KeyValuePair<TKey, TValue> value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteStartObject(propertyName);
-            WriteProperty(writer, value.Key, _keyName, options);
-            WriteProperty(writer, value.Value, _valueName, options);
-            writer.WriteEndObject();
-        }
     }
 }
index 6554138..27a361e 100644 (file)
@@ -18,10 +18,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             throw new InvalidOperationException();
         }
-
-        public override void Write(Utf8JsonWriter writer, object value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            throw new InvalidOperationException();
-        }
     }
 }
index 7ac5ebe..239dbbd 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override sbyte Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetSByte();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, sbyte value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 853886f..ba5a3a1 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override float Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetSingle();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, float value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 548e6f3..e3a9b70 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.String)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetString();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteStringValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, string value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteString(propertyName, value);
-        }
     }
 }
index e4ad298..4939aff 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override ushort Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetUInt16();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, ushort value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 7519ec8..c9edf4f 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override uint Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetUInt32();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, uint value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index a974c5a..4bb1414 100644 (file)
@@ -8,11 +8,6 @@ namespace System.Text.Json.Serialization.Converters
     {
         public override ulong Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
         {
-            if (reader.TokenType != JsonTokenType.Number)
-            {
-                ThrowHelper.ThrowJsonException();
-            }
-
             return reader.GetUInt64();
         }
 
@@ -20,10 +15,5 @@ namespace System.Text.Json.Serialization.Converters
         {
             writer.WriteNumberValue(value);
         }
-
-        public override void Write(Utf8JsonWriter writer, ulong value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            writer.WriteNumber(propertyName, value);
-        }
     }
 }
index 6b72caf..ac319ba 100644 (file)
@@ -24,11 +24,5 @@ namespace System.Text.Json.Serialization.Converters
             // TODO: remove preprocessing when https://github.com/dotnet/corefx/issues/38647 is implemented.
             writer.WriteStringValue(value.ToString());
         }
-
-        public override void Write(Utf8JsonWriter writer, Uri value, JsonEncodedText propertyName, JsonSerializerOptions options)
-        {
-            // TODO: remove preprocessing when https://github.com/dotnet/corefx/issues/38647 is implemented.
-            writer.WriteString(propertyName, value.ToString());
-        }
     }
 }
index 5aa05b7..7c6e49c 100644 (file)
@@ -50,15 +50,6 @@ namespace System.Text.Json.Serialization
         /// <param name="options">The <see cref="JsonSerializerOptions"/> being used.</param>
         public abstract void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options);
 
-        /// <summary>
-        /// todo: remove this method once the writer supports setting a property name
-        /// </summary>
-        /// <param name="writer"></param>
-        /// <param name="value"></param>
-        /// <param name="propertyName"></param>
-        /// <param name="options"></param>
-        public virtual void Write(Utf8JsonWriter writer, T value, JsonEncodedText propertyName, JsonSerializerOptions options) { throw new NotImplementedException(); }
-
         internal override Type TypeToConvert => typeof(T);
     }
 }
index 3a84542..079c0a8 100644 (file)
@@ -86,12 +86,10 @@ namespace System.Text.Json
             {
                 if (EscapedName.HasValue)
                 {
-                    Converter.Write(writer, value, EscapedName.Value, Options);
-                }
-                else
-                {
-                    Converter.Write(writer, value, Options);
+                    writer.WritePropertyName(EscapedName.Value);
                 }
+
+                Converter.Write(writer, value, Options);
             }
         }
 
index dfa9193..c71ba60 100644 (file)
@@ -87,12 +87,10 @@ namespace System.Text.Json.Serialization
             {
                 if (EscapedName.HasValue)
                 {
-                    Converter.Write(writer, value, EscapedName.Value, Options);
-                }
-                else
-                {
-                    Converter.Write(writer, value, Options);
+                    writer.WritePropertyName(EscapedName.Value);
                 }
+
+                Converter.Write(writer, value, Options);
             }
         }
 
index 46dc319..06cfd71 100644 (file)
@@ -72,12 +72,10 @@ namespace System.Text.Json
             {
                 if (EscapedName.HasValue)
                 {
-                    Converter.Write(writer, value.GetValueOrDefault(), EscapedName.Value, Options);
-                }
-                else
-                {
-                    Converter.Write(writer, value.GetValueOrDefault(), Options);
+                    writer.WritePropertyName(EscapedName.Value);
                 }
+
+                Converter.Write(writer, value.GetValueOrDefault(), Options);
             }
         }
 
index 2cf1d0f..da8c6b6 100644 (file)
@@ -134,7 +134,8 @@ namespace System.Text.Json
             else
             {
                 JsonEncodedText escapedKey = JsonEncodedText.Encode(key);
-                converter.Write(writer, value, escapedKey, options);
+                writer.WritePropertyName(escapedKey);
+                converter.Write(writer, value, options);
             }
         }
     }
index 82d00e1..f951568 100644 (file)
@@ -49,23 +49,6 @@ namespace System.Text.Json.Serialization.Tests
 
                 writer.WriteStringValue(builder.ToString());
             }
-
-            public override void Write(Utf8JsonWriter writer, long[] value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                var builder = new StringBuilder();
-
-                for (int i = 0; i < value.Length; i++)
-                {
-                    builder.Append(value[i].ToString());
-
-                    if (i != value.Length - 1)
-                    {
-                        builder.Append(",");
-                    }
-                }
-
-                writer.WriteString(propertyName, builder.ToString());
-            }
         }
 
         [Fact]
index d65663b..b70002f 100644 (file)
@@ -122,12 +122,6 @@ namespace System.Text.Json.Serialization.Tests
                 string stringValue = $"{value.X - _offset},{value.Y - _offset}";
                 writer.WriteStringValue(stringValue);
             }
-
-            public override void Write(Utf8JsonWriter writer, AttributedPoint value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                string stringValue = $"{value.X - _offset},{value.Y - _offset}";
-                writer.WriteString(propertyName, stringValue);
-            }
         }
 
         [Fact]
index 2670c90..2df6def 100644 (file)
@@ -29,11 +29,6 @@ namespace System.Text.Json.Serialization.Tests
             {
                 throw new SuccessException();
             }
-
-            public override void Write(Utf8JsonWriter writer, Customer value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                throw new SuccessException();
-            }
         }
 
         [Fact]
@@ -139,11 +134,6 @@ namespace System.Text.Json.Serialization.Tests
             {
                 writer.WriteStartObject();
             }
-
-            public override void Write(Utf8JsonWriter writer, Level3 value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                writer.WriteStartObject(propertyName);
-            }
         }
 
         [Fact]
index e6f5383..77298a5 100644 (file)
@@ -20,11 +20,6 @@ namespace System.Text.Json.Serialization.Tests
             {
                 throw new TException();
             }
-
-            public override void Write(Utf8JsonWriter writer, int value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                throw new TException();
-            }
         }
 
         public static void ConverterFailNoRethrow<TException>() where TException : Exception, new()
index 82ed9af..e045639 100644 (file)
@@ -42,11 +42,6 @@ namespace System.Text.Json.Serialization.Tests
                 // Write the name of the type.
                 writer.WriteStringValue(value.GetType().ToString());
             }
-
-            public override void Write(Utf8JsonWriter writer, object value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                writer.WriteString(propertyName, value.GetType().ToString());
-            }
         }
 
         [Fact]
@@ -119,11 +114,6 @@ namespace System.Text.Json.Serialization.Tests
             {
                 throw new InvalidOperationException("Directly writing object not supported");
             }
-
-            public override void Write(Utf8JsonWriter writer, object value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                throw new InvalidOperationException("Directly writing object not supported");
-            }
         }
 
         [Fact]
index c3c46b4..20bdf3a 100644 (file)
@@ -60,12 +60,6 @@ namespace System.Text.Json.Serialization.Tests
                 string stringValue = $"{value.X - _coordinateOffset},{value.Y - _coordinateOffset}";
                 writer.WriteStringValue(stringValue);
             }
-
-            public override void Write(Utf8JsonWriter writer, Point value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                string stringValue = $"{value.X - _coordinateOffset},{value.Y - _coordinateOffset}";
-                writer.WriteString(propertyName, stringValue);
-            }
         }
 
         [Fact]
@@ -214,17 +208,6 @@ namespace System.Text.Json.Serialization.Tests
 
                 writer.WriteEndObject();
             }
-
-            // todo: remove this method once writer supports setting property name.
-            public override void Write(Utf8JsonWriter writer, Point value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                writer.WriteStartObject(propertyName);
-
-                string stringValue = $"{value.X},{value.Y}";
-                writer.WriteString("COORD", stringValue);
-
-                writer.WriteEndObject();
-            }
         }
 
         [Fact]
index c5619ee..39587be 100644 (file)
@@ -277,25 +277,6 @@ namespace System.Text.Json.Serialization.Tests
 
                 writer.WriteEndObject();
             }
-
-            // todo: remove this method once writer supports setting property name.
-            public override void Write(Utf8JsonWriter writer, ClassWithStringProperties value, JsonEncodedText propertyName, JsonSerializerOptions options)
-            {
-                writer.WriteStartObject(propertyName);
-
-                writer.WriteString("MyString0", value.MyString0);
-                writer.WriteString("MyString1", value.MyString1);
-                writer.WriteString("MyString2", value.MyString2);
-                writer.WriteString("MyString3", value.MyString3);
-                writer.WriteString("MyString4", value.MyString4);
-                writer.WriteString("MyString5", value.MyString5);
-                writer.WriteString("MyString6", value.MyString6);
-                writer.WriteString("MyString7", value.MyString7);
-                writer.WriteString("MyString8", value.MyString8);
-                writer.WriteString("MyString9", value.MyString9);
-
-                writer.WriteEndObject();
-            }
         }
     }
 }
index 8760e35..0f4e46c 100644 (file)
@@ -646,7 +646,7 @@ namespace System.Text.Json.Serialization.Tests
             Assert.Equal(@"[{""Key"":""123"",""Value"":123},{""Key"":""456"",""Value"":456}]", json);
         }
 
-        [Fact(Skip = "Disabled until writer enables property name to be set")]
+        [Fact]
         public static void WriteKeyValuePairOfList()
         {
             KeyValuePair<string, List<int>> input = new KeyValuePair<string, List<int>>("Key", new List<int> { 1, 2, 3 });