From a3dab91a592f6b5f6287ee4d1f2fc3b916c18cf9 Mon Sep 17 00:00:00 2001 From: Yoh Deadfall Date: Mon, 22 May 2023 19:03:16 +0300 Subject: [PATCH 1/5] Preencoded JSON property names in FieldConverter --- .../Core/Infer/Field/FieldConverter.cs | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs index 131f00f8704..6effa7238c7 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs @@ -12,6 +12,9 @@ namespace Elastic.Clients.Elasticsearch; internal sealed class FieldConverter : JsonConverter { + private static readonly JsonEncodedText FieldProperty = JsonEncodedText.Encode("field"); + private static readonly JsonEncodedText FormatProperty = JsonEncodedText.Encode("format"); + private IElasticsearchClientSettings _settings; public override void WriteAsPropertyName(Utf8JsonWriter writer, Field value, JsonSerializerOptions options) @@ -51,16 +54,17 @@ private static Field ReadObjectField(ref Utf8JsonReader reader) var propertyName = reader.GetString(); reader.Read(); - switch (propertyName) + if (reader.ValueTextEquals(FieldProperty.EncodedUtf8Bytes)) + { + field = reader.GetString(); + } + else if (reader.ValueTextEquals(FormatProperty.EncodedUtf8Bytes)) + { + format = reader.GetString(); + } + else { - case "field": - field = reader.GetString(); - break; - case "format": - format = reader.GetString(); - break; - default: - throw new JsonException("Unexpected property while reading `Field`."); + throw new JsonException("Unexpected property while reading `Field`."); } } } @@ -92,9 +96,9 @@ public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOpt else { writer.WriteStartObject(); - writer.WritePropertyName("field"); + writer.WritePropertyName(FieldProperty); writer.WriteStringValue(fieldName); - writer.WritePropertyName("format"); + writer.WritePropertyName(FormatProperty); writer.WriteStringValue(value.Format); writer.WriteEndObject(); } From 1142bd3dfce31bed660cc032be7b6c0a79594158 Mon Sep 17 00:00:00 2001 From: Yoh Deadfall Date: Mon, 22 May 2023 19:10:18 +0300 Subject: [PATCH 2/5] Optmized property writes --- .../Core/Infer/Field/FieldConverter.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs index 6effa7238c7..12e7e81d33e 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs @@ -96,10 +96,8 @@ public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOpt else { writer.WriteStartObject(); - writer.WritePropertyName(FieldProperty); - writer.WriteStringValue(fieldName); - writer.WritePropertyName(FormatProperty); - writer.WriteStringValue(value.Format); + writer.WriteString(FieldProperty, fieldName); + writer.WriteString(FormatProperty, value.Format); writer.WriteEndObject(); } } From 3fc69e8b89b896d0fa0a48537a791ca012eec1e7 Mon Sep 17 00:00:00 2001 From: Yoh Deadfall Date: Mon, 22 May 2023 19:31:49 +0300 Subject: [PATCH 3/5] Nameof expressions instead of hardcoded type names --- .../Core/Infer/Field/FieldConverter.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs index 12e7e81d33e..3ee89672ad9 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs @@ -64,7 +64,7 @@ private static Field ReadObjectField(ref Utf8JsonReader reader) } else { - throw new JsonException("Unexpected property while reading `Field`."); + throw new JsonException($"Unexpected property while reading `{nameof(Field)}`."); } } } @@ -74,7 +74,7 @@ private static Field ReadObjectField(ref Utf8JsonReader reader) return new Field(field, format); } - throw new JsonException("Unable to read `Field` from JSON."); + throw new JsonException($"Unable to read `{nameof(Field)}` from JSON."); } public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOptions options) From ce3c0a33c3a782090f21cec4c7fcadecd22019db Mon Sep 17 00:00:00 2001 From: Yoh Deadfall Date: Mon, 22 May 2023 19:32:50 +0300 Subject: [PATCH 4/5] Removed unreachable code --- .../Core/Infer/Field/FieldConverter.cs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs index 3ee89672ad9..c63e5cf46eb 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs @@ -81,12 +81,6 @@ public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOpt { InitializeSettings(options); - if (value is null) - { - writer.WriteNullValue(); - return; - } - var fieldName = _settings.Inferrer.Field(value); if (string.IsNullOrEmpty(value.Format)) From 7db556afac969d7d3d5d5dc2050adcea1a0fb633 Mon Sep 17 00:00:00 2001 From: Yoh Deadfall Date: Wed, 24 May 2023 19:40:07 +0300 Subject: [PATCH 5/5] Fixed property reading --- .../Core/Infer/Field/FieldConverter.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs index c63e5cf46eb..43cfededc56 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs @@ -51,15 +51,14 @@ private static Field ReadObjectField(ref Utf8JsonReader reader) { if (reader.TokenType == JsonTokenType.PropertyName) { - var propertyName = reader.GetString(); - reader.Read(); - if (reader.ValueTextEquals(FieldProperty.EncodedUtf8Bytes)) { + reader.Read(); field = reader.GetString(); } else if (reader.ValueTextEquals(FormatProperty.EncodedUtf8Bytes)) { + reader.Read(); format = reader.GetString(); } else