public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var push = value as PushNotification;

            if (push == null)
            {
                writer.WriteNull();
                return;
            }

            writer.StartObject();
            // Write push type
            if (string.IsNullOrWhiteSpace(push.Query) == false)
            {
                writer.WriteProperty("query", push.Query);
            }
            else if (push.Channels.Count() > 0)
            {
                writer.WriteArray("channels", push.Channels);
            }
            else if (push.DeviceIds.Count() > 0)
            {
                writer.WriteArray("deviceids", push.DeviceIds);
            }
            else
            {
                writer.WriteProperty("broadcast", true);
            }
            // Write data
            WriteData(writer, push);
            // Write platform options
            WritePlatformOptions(writer, push.PlatformOptions);
            writer.EndObject();
        }
        public void Serialize(JsonWriter writer, object obj, JsonSerializer serializer)
        {
            if (obj == null)
            {
                return;
            }

            var issue = (Issue)obj;

            writer.WriteStartObject();
            writer.WriteValue(RedmineKeys.ISSUE);

            writer.WriteProperty(RedmineKeys.SUBJECT, issue.Subject);
            writer.WriteProperty(RedmineKeys.DESCRIPTION, issue.Description);
            writer.WriteProperty(RedmineKeys.NOTES, issue.Notes);

            if (issue.Id != 0)
            {
                writer.WriteProperty(RedmineKeys.PRIVATE_NOTES, issue.PrivateNotes);
            }

            writer.WriteProperty(RedmineKeys.IS_PRIVATE, issue.IsPrivate);

            writer.WriteIdIfNotNull(RedmineKeys.PROJECT_ID, issue.Project);
            writer.WriteIdIfNotNull(RedmineKeys.PRIORITY_ID, issue.Priority);
            writer.WriteIdIfNotNull(RedmineKeys.STATUS_ID, issue.Status);
            writer.WriteIdIfNotNull(RedmineKeys.CATEGORY_ID, issue.Category);
            writer.WriteIdIfNotNull(RedmineKeys.TRACKER_ID, issue.Tracker);
            writer.WriteIdIfNotNull(RedmineKeys.ASSIGNED_TO_ID, issue.AssignedTo);
            writer.WriteIdIfNotNull(RedmineKeys.FIXED_VERSION_ID, issue.FixedVersion);
            writer.WriteValueOrEmpty(RedmineKeys.ESTIMATED_HOURS, issue.EstimatedHours);

            writer.WriteIdOrEmpty(RedmineKeys.PARENT_ISSUE_ID, issue.ParentIssue);
            writer.WriteDateOrEmpty(RedmineKeys.START_DATE, issue.StartDate);
            writer.WriteDateOrEmpty(RedmineKeys.DUE_DATE, issue.DueDate);
            writer.WriteDateOrEmpty(RedmineKeys.UPDATED_ON, issue.DueDate);

            if (issue.DoneRatio != null)
            {
                writer.WriteProperty(RedmineKeys.DONE_RATIO, issue.DoneRatio.Value.ToString(CultureInfo.InvariantCulture));
            }

            if (issue.SpentHours != null)
            {
                writer.WriteProperty(RedmineKeys.SPENT_HOURS, issue.SpentHours.Value.ToString(CultureInfo.InvariantCulture));
            }

            writer.WriteArray(RedmineKeys.UPLOADS, issue.Uploads, new UploadConverter(), serializer);
            writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, issue.CustomFields, new IssueCustomFieldConverter(), serializer);

            writer.WriteIdsArray(RedmineKeys.WATCHER_USER_IDS, issue.Watchers);

            writer.WriteEndObject();
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        public override void WriteJson(JsonWriter writer)
        {
            using (new JsonObject(writer, RedmineKeys.USER))
            {
                writer.WriteProperty(RedmineKeys.LOGIN, Login);
                writer.WriteProperty(RedmineKeys.FIRST_NAME, FirstName);
                writer.WriteProperty(RedmineKeys.LAST_NAME, LastName);
                writer.WriteProperty(RedmineKeys.MAIL, Email);

                if (!string.IsNullOrEmpty(MailNotification))
                {
                    writer.WriteProperty(RedmineKeys.MAIL_NOTIFICATION, MailNotification);
                }

                if (!string.IsNullOrEmpty(Password))
                {
                    writer.WriteProperty(RedmineKeys.PASSWORD, Password);
                }

                if (AuthenticationModeId.HasValue)
                {
                    writer.WriteValueOrEmpty(RedmineKeys.AUTH_SOURCE_ID, AuthenticationModeId);
                }

                writer.WriteBoolean(RedmineKeys.MUST_CHANGE_PASSWORD, MustChangePassword);
                writer.WriteProperty(RedmineKeys.STATUS, ((int)Status).ToString(CultureInfo.InvariantCulture));

                if (CustomFields != null)
                {
                    writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, CustomFields);
                }
            }
        }
 private static void WriteTags(JsonWriter writer, Entity entity, JsonSerializer serializer)
 {
     if (entity.Tags.Count() > 0)
     {
         writer.WriteArray("__tags", entity.Tags);
     }
 }
Example #5
0
        private void ToJson(Stream stream)
        {
            using (JsonWriter jsonWriter = new JsonWriter(stream))
            {
                jsonWriter.WriteObject();

                jsonWriter.WriteMember("Items");
                jsonWriter.WriteArray();

                jsonWriter.WriteObject();
                LinkExtensions.Serialise(GetLinks(), jsonWriter);

                jsonWriter.WriteMember("TimeTriggered");
                jsonWriter.WriteValue(_WebhookNotification.TimeTriggered);

                jsonWriter.WriteMember("SubscriptionType");
                jsonWriter.WriteValue(_WebhookNotification.SubscriptionType);

                if (_WebhookNotification.ObjectDefinition != null)
                {
                    jsonWriter.WriteMember("Value");
                    ObjectInstance instance = new ObjectInstance(_WebhookNotification.ObjectDefinition, _WebhookNotification.ChangedObject);
                    instance.Links = new List <Link>();
                    instance.Serialise(jsonWriter);
                }

                jsonWriter.WriteEndObject();

                jsonWriter.WriteEndArray();
                jsonWriter.WriteEndObject();
                jsonWriter.Flush();
            }
            stream.Position = 0;
        }
        private string LogEventsToJson(IEnumerable <LogEvent> logEvents)
        {
            using (var writer = Globals.TextWriterPool.Take())
            {
                using (var jsonWriter = new JsonWriter(writer.Value, false))
                {
                    if (_Formatter == null || _Formatter is Formatters.JsonLogEventFormatter)
                    {
                        var formatter = (_Formatter ?? Formatters.JsonLogEventFormatter.DefaultInstance);
                        jsonWriter.WriteArrayStart();
                        var doneOne = false;
                        foreach (var item in logEvents)
                        {
                            if (doneOne)
                            {
                                jsonWriter.WriteDelimiter();
                            }

                            formatter.FormatToTextWriter(item, writer.Value);

                            doneOne = true;
                        }
                        jsonWriter.WriteArrayEnd();
                    }
                    else
                    {
                        jsonWriter.WriteArray((from le in logEvents select _Formatter.FormatToString(le)));
                    }

                    jsonWriter.Flush();
                }

                return(writer.Value.GetStringBuilder().ToString());
            }
        }
Example #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        public override void WriteJson(JsonWriter writer)
        {
            using (new JsonObject(writer, RedmineKeys.ISSUE))
            {
                writer.WriteProperty(RedmineKeys.SUBJECT, Subject);
                writer.WriteProperty(RedmineKeys.DESCRIPTION, Description);
                writer.WriteProperty(RedmineKeys.NOTES, Notes);

                if (Id != 0)
                {
                    writer.WriteBoolean(RedmineKeys.PRIVATE_NOTES, PrivateNotes);
                }

                writer.WriteBoolean(RedmineKeys.IS_PRIVATE, IsPrivate);
                writer.WriteIdIfNotNull(RedmineKeys.PROJECT_ID, Project);
                writer.WriteIdIfNotNull(RedmineKeys.PRIORITY_ID, Priority);
                writer.WriteIdIfNotNull(RedmineKeys.STATUS_ID, Status);
                writer.WriteIdIfNotNull(RedmineKeys.CATEGORY_ID, Category);
                writer.WriteIdIfNotNull(RedmineKeys.TRACKER_ID, Tracker);
                writer.WriteIdIfNotNull(RedmineKeys.ASSIGNED_TO_ID, AssignedTo);
                writer.WriteIdIfNotNull(RedmineKeys.FIXED_VERSION_ID, FixedVersion);
                writer.WriteValueOrEmpty(RedmineKeys.ESTIMATED_HOURS, EstimatedHours);

                writer.WriteIdOrEmpty(RedmineKeys.PARENT_ISSUE_ID, ParentIssue);
                writer.WriteDateOrEmpty(RedmineKeys.START_DATE, StartDate);
                writer.WriteDateOrEmpty(RedmineKeys.DUE_DATE, DueDate);
                writer.WriteDateOrEmpty(RedmineKeys.UPDATED_ON, UpdatedOn);

                if (DoneRatio != null)
                {
                    writer.WriteProperty(RedmineKeys.DONE_RATIO, DoneRatio.Value.ToString(CultureInfo.InvariantCulture));
                }

                if (SpentHours != null)
                {
                    writer.WriteProperty(RedmineKeys.SPENT_HOURS, SpentHours.Value.ToString(CultureInfo.InvariantCulture));
                }

                writer.WriteArray(RedmineKeys.UPLOADS, Uploads);
                writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, CustomFields);

                writer.WriteRepeatableElement(RedmineKeys.WATCHER_USER_IDS, (IEnumerable <IValue>)Watchers);
            }
        }
Example #8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="writer"></param>
 public override void WriteJson(JsonWriter writer)
 {
     using (new JsonObject(writer, RedmineKeys.WIKI_PAGE))
     {
         writer.WriteProperty(RedmineKeys.TEXT, Text);
         writer.WriteProperty(RedmineKeys.COMMENTS, Comments);
         writer.WriteValueOrEmpty <int>(RedmineKeys.VERSION, Version);
         writer.WriteArray(RedmineKeys.UPLOADS, Uploads);
     }
 }
Example #9
0
        /// <summary>
        /// Writes doc as JSON either as an array or map depending on JSONWritingOptions.RowsAsMap setting.
        /// Do not call this method directly, instead call rowset.ToJSON() or use JSONWriter class.
        /// Override to perform custom JSOn serialization
        /// </summary>
        public virtual void WriteAsJson(System.IO.TextWriter wri, int nestingLevel, JsonWritingOptions options = null)
        {
            if (options == null || !options.RowsAsMap)
            {
                JsonWriter.WriteArray(wri, this, nestingLevel, options);
                return;
            }

            var map = ToJsonDataMap(options);

            JsonWriter.WriteMap(wri, map, nestingLevel, options);//perform actual Json writing
        }
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            var request = value as UpdateListItemsRequest;

            if (request == null)
            {
                writer.WriteNull();
                return;
            }

            /*
             * "additems" : ["3","4","5"],
             * "adduniqueitems" : ["1","6"],
             * "removeitems": ["2","5"]
             */
            writer.WriteStartObject();
            writer.WritePropertyName(request.Property);
            writer.WriteStartObject();
            if (request.ItemsToAdd.Count > 0)
            {
                if (request.AddUniquely == true)
                {
                    writer.WriteArray("adduniqueitems", request.ItemsToAdd);
                }
                else
                {
                    writer.WriteArray("additems", request.ItemsToAdd);
                }
            }
            if (request.ItemsToRemove.Count > 0)
            {
                writer.WriteArray("removeitems", request.ItemsToRemove);
            }

            writer.WriteEndObject();
            writer.WriteEndObject();
        }
Example #11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="writer"></param>
 public override void WriteJson(JsonWriter writer)
 {
     using (new JsonObject(writer, RedmineKeys.USER))
     {
         writer.WriteProperty(RedmineKeys.LOGIN, Login);
         writer.WriteProperty(RedmineKeys.FIRST_NAME, FirstName);
         writer.WriteProperty(RedmineKeys.LAST_NAME, LastName);
         writer.WriteProperty(RedmineKeys.MAIL, Email);
         writer.WriteProperty(RedmineKeys.MAIL_NOTIFICATION, MailNotification);
         writer.WriteProperty(RedmineKeys.PASSWORD, Password);
         writer.WriteProperty(RedmineKeys.MUST_CHANGE_PASSWORD, MustChangePassword.ToString(CultureInfo.InvariantCulture).ToLowerInv());
         writer.WriteValueOrEmpty(RedmineKeys.AUTH_SOURCE_ID, AuthenticationModeId);
         writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, CustomFields);
     }
 }
Example #12
0
 public void SerializeRoot(JsonWriter writer, RootModel root, CalculationTicket ticket)
 {
     writer.Write(root.PortfolioId, JsonNames.PortfolioId);
     writer.Write(JsonNames.LatestChangeset, delegate
     {
         this.Write(writer, root.LatestChangeset);
     });
     writer.WriteArray(root.Items, JsonNames.Items, item =>
     {
         writer.Write(delegate
         {
             this.Write(writer, item);
         });
     });
     this.expressionSerializer.Write(root.TargetTotal, JsonNames.TargetTotal, writer, ticket);
 }
        public String SerializeToJson(IEnumerable <BottomUpPortfolio> portfolios)
        {
            var builder = new StringBuilder();

            using (var writer = new JsonWriter(builder.ToJsonTextWriter()))
            {
                writer.WriteArray(portfolios, portfolio =>
                {
                    writer.Write(delegate
                    {
                        this.portfolioSerializer.SerializeBottomUpPortfolio(portfolio, writer);
                    });
                });
            }
            return(builder.ToString());
        }
Example #14
0
        public String SerializeToJson(RootModel root)
        {
            var builder = new StringBuilder();

            using (var writer = new JsonWriter(builder.ToJsonTextWriter()))
            {
                writer.WriteArray(root.TargetingTypes, targetingType =>
                {
                    writer.Write(delegate
                    {
                        this.serializer.SerializeTargetingType(targetingType, writer);
                    });
                });
            }
            var result = builder.ToString();

            return(result);
        }
Example #15
0
File: Doc.cs Project: kozimir/azos
        /// <summary>
        /// Writes row as JSON either as an array or map depending on JSONWritingOptions.RowsAsMap setting.
        /// Do not call this method directly, instead call rowset.ToJSON() or use JSONWriter class
        /// </summary>
        public void WriteAsJson(System.IO.TextWriter wri, int nestingLevel, JsonWritingOptions options = null)
        {
            if (options == null || !options.RowsAsMap)
            {
                JsonWriter.WriteArray(wri, this, nestingLevel, options);
                return;
            }

            var map = new Dictionary <string, object>();

            foreach (var fd in Schema)
            {
                string name;

                var val = FilterJSONSerializerField(fd, options, out name);
                if (name.IsNullOrWhiteSpace())
                {
                    continue;
                }

                map[name] = val;
            }

            if (this is IAmorphousData)
            {
                var amorph = (IAmorphousData)this;
                if (amorph.AmorphousDataEnabled)
                {
                    foreach (var kv in amorph.AmorphousData)
                    {
                        var key = kv.Key;
                        while (map.ContainsKey(key))
                        {
                            key += "_";
                        }
                        map.Add(key, kv.Value);
                    }
                }
            }

            JsonWriter.WriteMap(wri, map, nestingLevel, options);
        }
Example #16
0
        private string GenerateJsonSchema()
        {
            List <string> required = new List <string>();
            MemoryStream  stream   = new MemoryStream();
            JsonWriter    writer   = new JsonWriter(stream);

            writer.WriteObject();

            writer.WriteMember("$schema");
            writer.WriteValue("http://json-schema.org/draft-04/schema");

            writer.WriteMember("title");
            writer.WriteValue(Object.Name);

            writer.WriteMember("type");
            writer.WriteValue("object");

            writer.WriteMember("properties");

            AddJsonProperties(writer, Object.GetProperties(), false);

            if (required.Count > 0)
            {
                writer.WriteMember("required");
                writer.WriteArray();
                foreach (string requirement in required)
                {
                    writer.WriteValue(requirement);
                }
                writer.WriteEndArray();
            }

            writer.WriteEndObject();

            writer.Flush();
            stream.Position = 0;

            string unformattedJsonBody = new StreamReader(stream).ReadToEnd();
            object parsedJson          = JsonConvert.DeserializeObject(unformattedJsonBody);

            return(JsonConvert.SerializeObject(parsedJson, Newtonsoft.Json.Formatting.Indented));
        }
 private static void WriteProperties(JsonWriter writer, Entity entity, JsonSerializer serializer)
 {
     foreach (var property in entity.Properties)
     {
         if (property.Value is NullValue)
         {
             writer.WritePropertyName(property.Key);
             writer.WriteNull();
         }
         else if (property.Value is MultiValue)
         {
             var collection = property.Value.GetValues <string>();
             writer.WriteArray(property.Key, collection);
         }
         else
         {
             writer.WriteProperty(property.Key, property.Value.GetValue <string>());
         }
     }
 }
Example #18
0
File: Doc.cs Project: rstonkus/azos
        /// <summary>
        /// Writes doc as JSON either as an array or map depending on JSONWritingOptions.RowsAsMap setting.
        /// Do not call this method directly, instead call rowset.ToJSON() or use JSONWriter class.
        /// Override to perform custom JSOn serialization
        /// </summary>
        public virtual void WriteAsJson(System.IO.TextWriter wri, int nestingLevel, JsonWritingOptions options = null)
        {
            if (options == null || !options.RowsAsMap)
            {
                JsonWriter.WriteArray(wri, this, nestingLevel, options);
                return;
            }

            var map = new Dictionary <string, object>();

            foreach (var fd in Schema)
            {
                string name;

                var val = FilterJsonSerializerField(fd, options, out name);
                if (name.IsNullOrWhiteSpace())
                {
                    continue;                   //field was excluded for Json serialization
                }
                AddJsonSerializerField(fd, options, map, name, val);
            }

            if (this is IAmorphousData amorph)
            {
                if (amorph.AmorphousDataEnabled)
                {
                    foreach (var kv in amorph.AmorphousData)
                    {
                        var key = kv.Key;
                        while (map.ContainsKey(key))
                        {
                            key += "_";
                        }
                        AddJsonSerializerField(null, options, map, key, kv.Value);
                    }
                }
            }

            JsonWriter.WriteMap(wri, map, nestingLevel, options);//perform actual Json writing
        }
Example #19
0
 public void Serialise(JsonWriter writer)
 {
     writer.WriteObject();
     if (Links != null)
     {
         Links.Serialise(writer);
     }
     if (!string.IsNullOrEmpty(_Resource.InstanceID))
     {
         writer.WriteMember("InstanceID");
         writer.WriteValue(_Resource.InstanceID);
     }
     foreach (Model.PropertyDefinition propertyMetadata in ObjectDefinition.Properties)
     {
         Model.Property property = _Resource.GetProperty(propertyMetadata.PropertyID);
         if (property != null)
         {
             if (propertyMetadata.IsCollection)
             {
                 if ((property.Values != null) && (property.Values.Count > 0))
                 {
                     writer.WriteMember(propertyMetadata.SerialisationName);
                     writer.WriteArray();
                     foreach (Model.PropertyValue item in property.Values)
                     {
                         Serialise(writer, propertyMetadata.DataType, item);
                     }
                     writer.WriteEndArray();
                 }
             }
             else
             {
                 writer.WriteMember(propertyMetadata.SerialisationName);
                 Serialise(writer, propertyMetadata.DataType, property.Value);
             }
         }
     }
     writer.WriteEndObject();
 }
Example #20
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="writer"></param>
        public override void WriteJson(JsonWriter writer)
        {
            using (new JsonObject(writer, RedmineKeys.PROJECT))
            {
                writer.WriteProperty(RedmineKeys.NAME, Name);
                writer.WriteProperty(RedmineKeys.IDENTIFIER, Identifier);
                writer.WriteIfNotDefaultOrNull(RedmineKeys.DESCRIPTION, Description);
                writer.WriteIfNotDefaultOrNull(RedmineKeys.HOMEPAGE, HomePage);
                writer.WriteIfNotDefaultOrNull(RedmineKeys.INHERIT_MEMBERS, InheritMembers);
                writer.WriteIfNotDefaultOrNull(RedmineKeys.IS_PUBLIC, IsPublic);
                writer.WriteIdIfNotNull(RedmineKeys.PARENT_ID, Parent);
                writer.WriteRepeatableElement(RedmineKeys.TRACKER_IDS, (IEnumerable <IValue>)Trackers);
                writer.WriteRepeatableElement(RedmineKeys.ENABLED_MODULE_NAMES, (IEnumerable <IValue>)EnabledModules);

                if (Id == 0)
                {
                    writer.WriteRepeatableElement(RedmineKeys.ISSUE_CUSTOM_FIELD_IDS, (IEnumerable <IValue>)CustomFields);
                    return;
                }

                writer.WriteArray(RedmineKeys.CUSTOM_FIELDS, CustomFields);
            }
        }
Example #21
0
        private void ToJson(Stream stream)
        {
            JsonWriter writer = new JsonWriter(stream);

            writer.WriteObject();
            _Instances.Links.Serialise(writer);
            _Instances.PageInfo.Serialise(writer);

            writer.WriteMember("Items");
            writer.WriteArray();
            if (_Instances.Items != null)
            {
                foreach (ObjectInstance instance in _Instances.Items)
                {
                    instance.Serialise(writer);
                }
            }
            writer.WriteEndArray();
            writer.WriteEndObject();
            writer.Flush();

            stream.Position = 0;
        }
Example #22
0
 protected internal override void WriteJson(JsonWriter writer) =>
 writer.WriteArray(Value);
Example #23
0
 public void Serialise(JsonWriter writer)
 {
     writer.WriteObject();
     if (Links != null)
     {
         Links.Serialise(writer);
     }
     if (!string.IsNullOrEmpty(_Resource.InstanceID))
     {
         writer.WriteMember("InstanceID");
         writer.WriteValue(_Resource.InstanceID);
     }
     foreach (Model.PropertyDefinition propertyMetadata in ObjectDefinition.Properties)
     {
         Model.Property property = _Resource.GetProperty(propertyMetadata.PropertyID);
         if (property != null)
         {
             if (propertyMetadata.IsCollection)
             {
                 if ((property.Values != null) && (property.Values.Count > 0))
                 {
                     writer.WriteMember(propertyMetadata.SerialisationName);
                     writer.WriteArray();
                     foreach (Model.PropertyValue item in property.Values)
                     {
                         Serialise(writer, propertyMetadata.DataType, item);
                     }
                     writer.WriteEndArray();
                 }
             }
             else
             {
                 writer.WriteMember(propertyMetadata.SerialisationName);
                 Serialise(writer, propertyMetadata.DataType, property.Value);
             }
         }
     }
     writer.WriteEndObject();
 }
        private void ToJson(Stream stream)
        {
            using (JsonWriter jsonWriter = new JsonWriter(stream))
            {
                jsonWriter.WriteObject();

                jsonWriter.WriteMember("Items");
                jsonWriter.WriteArray();

                jsonWriter.WriteObject();
                LinkExtensions.Serialise(GetLinks(), jsonWriter);

                jsonWriter.WriteMember("TimeTriggered");
                jsonWriter.WriteValue(_WebhookNotification.TimeTriggered);

                jsonWriter.WriteMember("SubscriptionType");
                jsonWriter.WriteValue(_WebhookNotification.SubscriptionType);

                if (_WebhookNotification.ObjectDefinition != null)
                {
                    jsonWriter.WriteMember("Value");
                    ObjectInstance instance = new ObjectInstance(_WebhookNotification.ObjectDefinition, _WebhookNotification.ChangedObject);
                    instance.Links = new List<Link>();
                    instance.Serialise(jsonWriter);
                }

                jsonWriter.WriteEndObject();

                jsonWriter.WriteEndArray();
                jsonWriter.WriteEndObject();
                jsonWriter.Flush();
            }
            stream.Position = 0;
        }
 /// <summary>
 /// Writes <see cref="IDataValidationResults"/> object into JSON.
 /// </summary>
 /// <param name="jsonWriter">The <see cref="JsonWriter"/>.</param>
 /// <param name="dataValidationResults">The <see cref="IDataValidationResults"/> object.</param>
 /// <returns>This <see cref="JsonWriter"/> for fluent coding.</returns>
 public static JsonWriter Write(this JsonWriter jsonWriter, IDataValidationResults dataValidationResults)
 {
     return(jsonWriter.WriteArray(dataValidationResults, (writer, entry) => writer.Write(entry)));
 }
        private static void WriteAcls(JsonWriter writer, List <Claim> allowed, List <Claim> denied, List <ResetRequest> reset)
        {
            var map = new Dictionary <SidTypeKey, ClaimGroup>();

            allowed.For(x =>
            {
                ClaimGroup group;
                var key = new SidTypeKey {
                    Sid = x.Sid, Type = x.ClaimType
                };
                if (map.TryGetValue(key, out group) == false)
                {
                    group = new ClaimGroup {
                        Sid = x.Sid, Type = x.ClaimType
                    }
                }
                ;
                group.Allowed.Add(x.AccessType);
            });
            denied.For(x =>
            {
                ClaimGroup group;
                var key = new SidTypeKey {
                    Sid = x.Sid, Type = x.ClaimType
                };
                if (map.TryGetValue(key, out group) == false)
                {
                    group = new ClaimGroup {
                        Sid = x.Sid, Type = x.ClaimType
                    }
                }
                ;
                group.Denied.Add(x.AccessType);
            });
            reset.For(x =>
            {
                ClaimGroup group;
                var key = new SidTypeKey {
                    Sid = x.Sid, Type = x.Type
                };
                if (map.TryGetValue(key, out group) == false)
                {
                    group = new ClaimGroup {
                        Sid = x.Sid, Type = x.Type
                    }
                }
                ;
                group.Reset.Add(x.Access);
            });

            writer.WriteStartArray();
            map.Values.For(x =>
            {
                writer.WriteStartObject();
                writer.WriteProperty("sid", x.Sid);
                writer.WriteProperty("type", x.Type.ToString().ToLower());
                if (x.Allowed.Count > 0)
                {
                    writer.WriteArray("allow", x.Allowed.Select(y => y.ToString().ToLower()));
                }
                if (x.Denied.Count > 0)
                {
                    writer.WriteArray("deny", x.Denied.Select(y => y.ToString().ToLower()));
                }
                if (x.Reset.Count > 0)
                {
                    writer.WriteArray("dontcare", x.Reset.Select(y => y.ToString().ToLower()));
                }
                writer.WriteEndObject();
            });
            writer.WriteEndArray();
        }