internal static string ToIdentifier(EvaluationReasonKind value) { switch (value) { case EvaluationReasonKind.Off: return("OFF"); case EvaluationReasonKind.Fallthrough: return("FALLTHROUGH"); case EvaluationReasonKind.TargetMatch: return("TARGET_MATCH"); case EvaluationReasonKind.RuleMatch: return("RULE_MATCH"); case EvaluationReasonKind.PrerequisiteFailed: return("PREREQUISITE_FAILED"); case EvaluationReasonKind.Error: return("ERROR"); default: throw new ArgumentException(); } }
internal EvaluationReason(EvaluationReasonKind kind, int ruleIndex, string ruleId, string prereqKey, EvaluationErrorKind errorKind) { _kind = kind; _ruleIndex = ruleIndex; _ruleId = ruleId; _prerequisiteKey = prereqKey; _errorKind = errorKind; }
internal EvaluationReason( EvaluationReasonKind kind, int?ruleIndex, string ruleId, string prereqKey, EvaluationErrorKind?errorKind, bool inExperiment, BigSegmentsStatus?bigSegmentsStatus ) { _kind = kind; _ruleIndex = ruleIndex; _ruleId = ruleId; _prerequisiteKey = prereqKey; _errorKind = errorKind; _inExperiment = inExperiment; _bigSegmentsStatus = bigSegmentsStatus; }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { LdValue o = (LdValue)LdValueSerializer.Instance.ReadJson(reader, typeof(LdValue), LdValue.Null, serializer); if (o.IsNull) { return(null); } EvaluationReasonKind kind = (EvaluationReasonKind)Enum.Parse(typeof(EvaluationReasonKind), o.Get("kind").AsString); switch (kind) { case EvaluationReasonKind.OFF: return(EvaluationReason.OffReason); case EvaluationReasonKind.FALLTHROUGH: return(EvaluationReason.FallthroughReason); case EvaluationReasonKind.TARGET_MATCH: return(EvaluationReason.TargetMatchReason); case EvaluationReasonKind.RULE_MATCH: var index = o.Get("ruleIndex").AsInt; var id = o.Get("ruleId").AsString; return(EvaluationReason.RuleMatchReason(index, id)); case EvaluationReasonKind.PREREQUISITE_FAILED: var key = o.Get("prerequisiteKey").AsString; return(EvaluationReason.PrerequisiteFailedReason(key)); case EvaluationReasonKind.ERROR: var errorKind = (EvaluationErrorKind)Enum.Parse(typeof(EvaluationErrorKind), o.Get("errorKind").AsString); return(EvaluationReason.ErrorReason(errorKind)); } throw new ArgumentException(); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject o = serializer.Deserialize <JObject>(reader); if (o == null) { return(null); } EvaluationReasonKind kind = o.GetValue("kind").ToObject <EvaluationReasonKind>(); switch (kind) { case EvaluationReasonKind.OFF: return(EvaluationReason.OffReason); case EvaluationReasonKind.FALLTHROUGH: return(EvaluationReason.FallthroughReason); case EvaluationReasonKind.TARGET_MATCH: return(EvaluationReason.TargetMatchReason); case EvaluationReasonKind.RULE_MATCH: var index = (int)o.GetValue("ruleIndex"); var id = (string)o.GetValue("ruleId"); return(EvaluationReason.RuleMatchReason(index, id)); case EvaluationReasonKind.PREREQUISITE_FAILED: var key = (string)o.GetValue("prerequisiteKey"); return(EvaluationReason.PrerequisiteFailedReason(key)); case EvaluationReasonKind.ERROR: var errorKind = o.GetValue("errorKind").ToObject <EvaluationErrorKind>(); return(EvaluationReason.ErrorReason(errorKind)); } throw new ArgumentException(); }
private static EvaluationReason?ReadJsonInternal(ref JReader reader, bool nullable) { var obj = (nullable ? reader.ObjectOrNull() : reader.Object()) .WithRequiredProperties(_requiredProperties); if (!obj.IsDefined) { return(null); } try { EvaluationReasonKind kind = EvaluationReasonKind.Error; int? ruleIndex = null; string ruleId = null; string prerequisiteKey = null; EvaluationErrorKind?errorKind = null; bool inExperiment = false; BigSegmentsStatus?bigSegmentsStatus = null; while (obj.Next(ref reader)) { var name = obj.Name; if (name == "kind") { try { kind = EvaluationReasonKindConverter.FromIdentifier(reader.String()); } catch (ArgumentException) { throw new SyntaxException("unsupported value for \"kind\"", 0); } } else if (name == "ruleIndex") { ruleIndex = reader.Int(); } else if (name == "ruleId") { ruleId = reader.String(); } else if (name == "prerequisiteKey") { prerequisiteKey = reader.String(); } else if (name == "errorKind") { try { errorKind = EvaluationErrorKindConverter.FromIdentifier(reader.String()); } catch (ArgumentException) { throw new SyntaxException("unsupported value for \"errorKind\"", 0); } } else if (name == "inExperiment") { inExperiment = reader.Bool(); } else if (name == "bigSegmentsStatus") { try { bigSegmentsStatus = BigSegmentsStatusConverter.FromIdentifier(reader.String()); } catch (ArgumentException) { throw new SyntaxException("unsupported value for \"bigSegmentsStatus\"", 0); } } } EvaluationReason reason; switch (kind) // it's guaranteed to have a value, otherwise there'd be a required property error above { case EvaluationReasonKind.Off: reason = EvaluationReason.OffReason; break; case EvaluationReasonKind.Fallthrough: reason = EvaluationReason.FallthroughReason; break; case EvaluationReasonKind.TargetMatch: reason = EvaluationReason.TargetMatchReason; break; case EvaluationReasonKind.RuleMatch: reason = EvaluationReason.RuleMatchReason(ruleIndex ?? 0, ruleId); break; case EvaluationReasonKind.PrerequisiteFailed: reason = EvaluationReason.PrerequisiteFailedReason(prerequisiteKey); break; case EvaluationReasonKind.Error: reason = EvaluationReason.ErrorReason(errorKind ?? EvaluationErrorKind.Exception); break; default: return(null); } if (inExperiment) { reason = reason.WithInExperiment(true); } if (bigSegmentsStatus.HasValue) { reason = reason.WithBigSegmentsStatus(bigSegmentsStatus); } return(reason); } catch (Exception e) { throw reader.TranslateException(e); } }
public void WriteJsonValue(EvaluationReasonKind instance, IValueWriter writer) => writer.String(ToIdentifier((EvaluationReasonKind)instance));