tools/Elastic.CommonSchema.Generator/Views/PropertiesReaderJsonConverterBase.Generated.cshtml (76 lines of code) (raw):

@using System.Collections.Generic @using System.Linq @inherits Elastic.CommonSchema.Generator.Views.CodeTemplatePage<Elastic.CommonSchema.Generator.Projection.CommonSchemaTypesProjection> // Licensed to Elasticsearch B.V under one or more agreements. // Elasticsearch B.V licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information /* IMPORTANT NOTE ============== This file has been generated. If you wish to submit a PR please modify the original csharp file and submit the PR with that change. Thanks! */ using System; using System.Collections.Generic; using System.Text.Json; using System.Text.Json.Serialization; namespace Elastic.CommonSchema.Serialization; @foreach (var kv in Model.EntitiesWithPropertiesAtRoot) { var entity = kv.Key; <text> /// <summary> Specialized converter for <see cref="@(entity.Name)"/> </summary> internal partial class @(entity.Name)EntityJsonConverter : PropertiesReaderJsonConverterBase@(Raw("<"))@(entity.Name)@Raw(">") { /// <inheritdoc cref="PropertiesReaderJsonConverterBase{T}.ReadProperties"/> protected override bool ReadProperties(ref Utf8JsonReader reader, @entity.Name ecsEvent, JsonSerializerOptions options) { var propertyName = reader.GetString(); reader.Read(); return propertyName switch { @foreach (var property in entity.BaseFieldSet.ValueProperties) { var name = property.JsonProperty; <text> "@(name)" => ReadProp@(Raw(property.ReadJsonType))(ref reader, "@name", ecsEvent, (b, v) => b.@(property.Name) = v), </text> } @foreach (var property in entity.BaseFieldSet.InlineObjectProperties) { var name = property.JsonProperty; <text> "@(name)" => ReadProp<@(Raw(property.InlineObject.Name))>(ref reader, "@name", ecsEvent, (b, v) => b.@(property.Name) = v, options), </text> } _ => ReadProperty(ref reader, propertyName, ecsEvent, options) }; } private partial bool ReadProperty(ref Utf8JsonReader reader, string propertyName, @entity.Name ecsEvent, JsonSerializerOptions options); /// <inheritdoc cref="JsonConverter{T}.Write"/> public override void Write(Utf8JsonWriter writer, @entity.Name value, JsonSerializerOptions options) { if (value == null || !value.ShouldSerialize) { writer.WriteNullValue(); return; } writer.WriteStartObject(); @foreach (var field in entity.BaseFieldSet.ValueProperties) { if (kv.Value.Contains(field.JsonProperty)) { continue; } <text> WriteProp@(Raw(field.ReadJsonType))(writer, "@field.JsonProperty", value.@field.Name); </text> } @foreach (var property in entity.BaseFieldSet.InlineObjectProperties) { var name = property.JsonProperty; <text> WriteProp(writer, "@(name)", value.@(property.Name), options); </text> } writer.WriteEndObject(); } } </text> }