Esempio n. 1
0
        /// <summary>
        /// Merges another result.
        /// </summary>
        /// <param name="value">The result to merge.</param>
        public virtual void Merge(IIntegrationResult value)
        {
            // Apply some rules to the status merging - basically apply a hierachy of status codes
            if ((value.Status == IntegrationStatus.Exception) || (this.status == IntegrationStatus.Unknown))
            {
                this.status = value.Status;
            }
            else if (((value.Status == IntegrationStatus.Failure) ||
                      (value.Status == IntegrationStatus.Cancelled)) &&
                     (this.status != IntegrationStatus.Exception))
            {
                this.status = value.Status;
            }

            // Merge the exceptions
            if (value.ExceptionResult != null)
            {
                if (this.exception != null)
                {
                    var mutliple = this.exception as MultipleIntegrationFailureException;
                    if (mutliple == null)
                    {
                        mutliple       = new MultipleIntegrationFailureException(this.exception);
                        this.exception = mutliple;
                    }
                    mutliple.AddFailure(value.ExceptionResult);
                }
                else
                {
                    this.exception = value.ExceptionResult;
                }
            }

            // Merge the results
            foreach (ITaskResult result in value.TaskResults)
            {
                AddTaskResult(result);
            }
        }
        /// <summary>
        /// Merges another result.
        /// </summary>
        /// <param name="value">The result to merge.</param>
        public virtual void Merge(IIntegrationResult value)
        {
            // Apply some rules to the status merging - basically apply a hierachy of status codes
            if ((value.Status == IntegrationStatus.Exception) || (this.status == IntegrationStatus.Unknown))
            {
                this.status = value.Status;
            }
            else if (((value.Status == IntegrationStatus.Failure) ||
                (value.Status == IntegrationStatus.Cancelled)) &&
                (this.status != IntegrationStatus.Exception))
            {
                this.status = value.Status;
            }

            // Merge the exceptions
            if (value.ExceptionResult != null)
            {
                if (this.exception != null)
                {
                    var mutliple = this.exception as MultipleIntegrationFailureException;
                    if (mutliple == null)
                    {
                        mutliple = new MultipleIntegrationFailureException(this.exception);
                        this.exception = mutliple;
                    }
                    mutliple.AddFailure(value.ExceptionResult);
                }
                else
                {
                    this.exception = value.ExceptionResult;
                }
            }

            // Merge the results
            foreach (ITaskResult result in value.TaskResults)
            {
                AddTaskResult(result);
            }
        }