/// <summary> /// Serializes the object to JSON. /// </summary> /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param> /// <param name="obj">The object to serialize to JSON.</param> internal static void Serialize(JsonWriter writer, SeedNodeSafetyCheck obj) { // Required properties are always serialized, optional properties are serialized when not null. writer.WriteStartObject(); writer.WriteProperty(obj.Kind, "Kind", SafetyCheckKindConverter.Serialize); writer.WriteEndObject(); }
/// <summary> /// Serializes the object to JSON. /// </summary> /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param> /// <param name="obj">The object to serialize to JSON.</param> internal static void Serialize(JsonWriter writer, SeedNodeSafetyCheck obj) { // Required properties are always serialized, optional properties are serialized when not null. writer.WriteStartObject(); writer.WriteProperty(obj.Kind.ToString(), "Kind", JsonWriterExtensions.WriteStringValue); writer.WriteEndObject(); }
public static SafetyCheck CreateRandomSafetyCheck(this Random random) { SafetyCheck result; SafetyCheckKind kind = random.CreateRandom <SafetyCheckKind>(); switch (kind) { case SafetyCheckKind.EnsureSeedNodeQuorum: result = new SeedNodeSafetyCheck(kind); break; case SafetyCheckKind.EnsurePartitionQuorum: case SafetyCheckKind.WaitForInBuildReplica: case SafetyCheckKind.WaitForPrimaryPlacement: case SafetyCheckKind.WaitForPrimarySwap: case SafetyCheckKind.WaitForReconfiguration: case SafetyCheckKind.EnsureAvailability: result = new PartitionSafetyCheck(kind, random.CreateRandom <Guid>()); break; default: result = new UnknownSafetyCheck(kind); break; } return(result); }
/// <inheritdoc /> public override object ReadJson( JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { ThrowIf.Null(reader, "reader"); if (reader.TokenType == JsonToken.Null) { return(null); } SafetyCheck result = null; var wrapperJObject = JObject.Load(reader); JToken safetyCheckJToken = wrapperJObject[JsonSerializerImplConstants.SafetyCheck]; if (safetyCheckJToken != null) { JToken safetyCheckKindJToken = safetyCheckJToken[JsonSerializerImplConstants.Kind]; SafetyCheckKind kind = (SafetyCheckKind)safetyCheckKindJToken.ToObject(typeof(SafetyCheckKind)); switch (kind) { case SafetyCheckKind.EnsureSeedNodeQuorum: result = new SeedNodeSafetyCheck(kind); break; case SafetyCheckKind.EnsurePartitionQuorum: case SafetyCheckKind.WaitForInBuildReplica: case SafetyCheckKind.WaitForPrimaryPlacement: case SafetyCheckKind.WaitForPrimarySwap: case SafetyCheckKind.WaitForReconfiguration: case SafetyCheckKind.EnsureAvailability: JToken partitionIdJToken = safetyCheckJToken[JsonSerializerImplConstants.PartitionId]; Guid partitionId = partitionIdJToken.ToObject <Guid>(serializer); result = new PartitionSafetyCheck(kind, partitionId); break; default: result = new UnknownSafetyCheck(kind); break; } } return(result); }