using MessagePack; using Newtonsoft.Json; using System.Collections.Generic; using System.Runtime.Serialization; using Umbraco.Core.Serialization; namespace Umbraco.Web.PublishedCache.NuCache.DataSource { /// /// The content item 1:M data that is serialized to JSON /// [DataContract] // NOTE: Use DataContract annotations here to control how MessagePack serializes/deserializes the data to use INT keys public class ContentNestedData { // TODO: We don't want to allocate empty arrays //dont serialize empty properties [DataMember(Order = 0)] [JsonProperty("pd")] [JsonConverter(typeof(AutoInterningStringKeyCaseInsensitiveDictionaryConverter))] public Dictionary PropertyData { get; set; } [DataMember(Order = 1)] [JsonProperty("cd")] [JsonConverter(typeof(AutoInterningStringKeyCaseInsensitiveDictionaryConverter))] public Dictionary CultureData { get; set; } [DataMember(Order = 2)] [JsonProperty("us")] public string UrlSegment { get; set; } //Legacy properties used to deserialize existing nucache db entries [DataMember(Order = 3)] [JsonProperty("properties")] [JsonConverter(typeof(CaseInsensitiveDictionaryConverter))] private Dictionary LegacyPropertyData { set { PropertyData = value; } } [DataMember(Order = 4)] [JsonProperty("cultureData")] [JsonConverter(typeof(CaseInsensitiveDictionaryConverter))] private Dictionary LegacyCultureData { set { CultureData = value; } } [DataMember(Order = 5)] [JsonProperty("urlSegment")] private string LegacyUrlSegment { set { UrlSegment = value; } } } }