Exemple #1
0
 public override bool Equals(object obj)
 {
     return(this.Compare(obj, rhs => _hashCode == rhs._hashCode &&
                         WorkflowId == rhs.WorkflowId &&
                         ApplicationId == rhs.ApplicationId &&
                         CommandId == rhs.CommandId &&
                         Party == rhs.Party &&
                         !ActAs.Except(rhs.ActAs).Any() &&
                         !ReadAs.Except(rhs.ReadAs).Any() &&
                         MinLedgerTimeAbs == rhs.MinLedgerTimeAbs &&
                         MinLedgerTimeRel == rhs.MinLedgerTimeRel &&
                         DeduplicationTime == rhs.DeduplicationTime &&
                         !CommandList.Except(rhs.CommandList).Any()));
 }
Exemple #2
0
        public bool ReadInternal(ReadAs? readAs = null)
        {
            switch (this.CurrentState)
            {
                case State.Start:
                    if (Context.IsObject && readAs == null)
                    {
                        this.SetToken(JsonToken.StartObject);
                        return true;
                    }
                    if (Context.IsArray && readAs == null)
                    {
                        this.SetToken(JsonToken.StartArray);
                        return true;
                    }
                    ReadDatum(Context.Datum, readAs);
                    return true;

                case State.Complete:
                case State.Closed:
                    return false;

                case State.Property:
                {
                    ReadDatum(Context.AssocPairs.Current.val, readAs);
                    return true;
                }

                case State.ObjectStart:
                case State.ArrayStart:
                case State.PostValue:
                    if (this.stack.Count == 0)
                        return false;

                    if (Context.IsArray)
                    {
                        if (Context.Array.MoveNext())
                        {
                            ReadDatum(Context.Array.Current);
                            return true;
                        }

                        //else pop state, no more elements
                        this.stack.Pop();
                        SetToken(JsonToken.EndArray);
                        return true;
                    }

                    if (Context.IsObject && readAs == null)
                    {
                        if (Context.AssocPairs.MoveNext())
                        {
                            SetToken(JsonToken.PropertyName, Context.AssocPairs.Current.key);
                            return true;
                        }

                        //else pop state, no more elements
                        this.stack.Pop();
                        SetToken(JsonToken.EndObject);
                        return true;
                    }

                    return false;
            }
            return false;
        }
Exemple #3
0
        private bool ReadAsSpecialType(Datum datum, ReadAs? readAs)
        {
            if (readAs == null) return false;
            if (datum.type == Datum.DatumType.R_NULL) return false;

            if (readAs == ReadAs.DateTime)
            {
                // JSON.NET is giving us a hint that it's expecting a DateTime.
                var dateTime = DateTimeDatumConverter.Instance.Value.ConvertDatum(datum);
                this.SetToken(JsonToken.Date, dateTime);
                return true;
            }
            if (readAs == ReadAs.DateTimeOffset)
            {
                // JSON.NET is giving us a hint that it's expecting a DateTimeOffset.
                var dateTimeOffset = DateTimeOffsetDatumConverter.Instance.Value.ConvertDatum(datum);
                this.SetToken(JsonToken.Date, dateTimeOffset);
                return true;
            }
            if (readAs == ReadAs.Int32)
            {
                this.SetToken(JsonToken.Integer, Convert.ToInt32(datum.r_num));
                return true;
            }
            if (readAs == ReadAs.ByteArray)
            {
                var bytes = ArrayDatumConverterFactory.Instance.Get<byte[]>(
                    PrimitiveDatumConverterFactory.Instance
                    ).ConvertDatum(datum);
                this.SetToken(JsonToken.Bytes, bytes);
                return true;
            }

            return false;
        }
Exemple #4
0
        private void ReadDatum(Datum datum, ReadAs? readAs = null)
        {
            if (ReadAsSpecialType(datum, readAs))
            {
                return;
            }
            switch (datum.type)
            {
                case Datum.DatumType.R_NUM:
                    SetToken(JsonToken.Float, datum.r_num);
                    return;
                case Datum.DatumType.R_STR:
                    SetToken(JsonToken.String, datum.r_str);
                    return;
                case Datum.DatumType.R_BOOL:
                    SetToken(JsonToken.Boolean, datum.r_bool);
                    return;
                case Datum.DatumType.R_NULL:
                    SetToken(JsonToken.Null);
                    return;

                    //The datum stores more structure
                case Datum.DatumType.R_ARRAY:
                    SetToken(JsonToken.StartArray);
                    stack.Push(new DatumReaderToken(datum));
                    return;
                case Datum.DatumType.R_OBJECT:
                    SetToken(JsonToken.StartObject);
                    stack.Push(new DatumReaderToken(datum));
                    return;

                default:
                    Demand.Require(true, "Unknown handing datum type {0}.", datum.type);
                    return;
            }
        }