public List <SingleResource> CreateIncludedRepresentations(List <object> primaryResourceList, IResourceMapping resourceMapping, Context context) { var includedList = new List <SingleResource>(); var primaryResourceIdentifiers = primaryResourceList.Select(x => { var id = new SingleResourceIdentifier { Id = resourceMapping.IdGetter(x).ToString(), Type = resourceMapping.ResourceType, MetaData = GetRelationshipMetadata(x) }; return(id); }); var alreadyVisitedObjects = new HashSet <SingleResourceIdentifier>(primaryResourceIdentifiers, new SingleResourceIdentifierComparer()); foreach (var resource in primaryResourceList) { includedList.AddRange( AppendIncludedRepresentationRecursive( resource, resourceMapping, alreadyVisitedObjects, context)); } if (includedList.Any()) { return(includedList); } return(null); }
public SingleResource CreateResourceRepresentation(object objectGraph, IResourceMapping resourceMapping, Context context) { var urlBuilder = new UrlBuilder { RoutePrefix = context.RoutePrefix }; var result = new SingleResource(); result.Id = resourceMapping.IdGetter(objectGraph).ToString(); result.Type = resourceMapping.ResourceType; result.Attributes = resourceMapping.PropertyGetters.ToDictionary(kvp => kvp.Key, kvp => kvp.Value(objectGraph)); if (resourceMapping.UrlTemplate != null) { result.Links = CreateLinks(resourceMapping, urlBuilder, result); } if (resourceMapping.Relationships.Any()) { result.Relationships = CreateRelationships(objectGraph, result.Id, resourceMapping, context); } return(result); }
public List<SingleResource> CreateIncludedRepresentations(List<object> primaryResourceList, IResourceMapping resourceMapping, Context context) { var includedList = new List<SingleResource>(); var alreadyVisitedObjects = new HashSet<object>(primaryResourceList); foreach (var resource in primaryResourceList) { try { _parentId = resourceMapping.IdGetter(resource).ToString(); } catch (Exception) { _parentId = string.Empty; } AppendIncludedRepresentationRecursive(resource, resourceMapping, includedList, alreadyVisitedObjects, context); } return includedList; }
public SingleResource CreateResourceRepresentation( object objectGraph, IResourceMapping resourceMapping, Context context) { var result = new SingleResource(); result.Id = resourceMapping.IdGetter(objectGraph).ToString(); result.Type = resourceMapping.ResourceType; result.Attributes = resourceMapping.GetAttributes(objectGraph, configuration.GetJsonSerializerSettings()); result.Links = GetObjectLinkData(objectGraph); result.Links.Add("self", linkBuilder.FindResourceSelfLink(context, result.Id, resourceMapping)); result.MetaData = GetObjectMetadata(objectGraph); if (resourceMapping.Relationships.Any()) { result.Relationships = CreateRelationships(objectGraph, result.Id, resourceMapping, context); } return(result); }
public SingleResource CreateResourceRepresentation( object objectGraph, IResourceMapping resourceMapping, Context context) { var result = new SingleResource(); result.Id = resourceMapping.IdGetter(objectGraph).ToString(); result.Type = resourceMapping.ResourceType; result.Attributes = resourceMapping.GetAttributes(objectGraph); result.Links = new Dictionary <string, ILink>() { { "self", linkBuilder.FindResourceSelfLink(context, result.Id, resourceMapping) } }; if (resourceMapping.Relationships.Any()) { result.Relationships = CreateRelationships(objectGraph, result.Id, resourceMapping, context); } return(result); }
public SingleResource CreateResourceRepresentation( object objectGraph, IResourceMapping resourceMapping, Context context) { var result = new SingleResource(); result.Id = resourceMapping.IdGetter(objectGraph).ToString(); result.Type = resourceMapping.ResourceType; result.Attributes = resourceMapping.PropertyGetters.ToDictionary(kvp => kvp.Key, kvp => kvp.Value(objectGraph)); result.Links = new Dictionary<string, ILink>() { { "self", linkBuilder.FindResourceSelfLink(context, result.Id, resourceMapping) } }; if (resourceMapping.Relationships.Any()) { result.Relationships = CreateRelationships(objectGraph, result.Id, resourceMapping, context); } return result; }
public SingleResource CreateResourceRepresentation(object objectGraph, IResourceMapping resourceMapping, Context context, bool isIncludedResource = false, Type ownerType = null) { var urlBuilder = new UrlBuilder { RoutePrefix = context.RoutePrefix }; var result = new SingleResource(); result.Id = resourceMapping.IdGetter(objectGraph).ToString(); result.Type = resourceMapping.ResourceType; result.Attributes = resourceMapping.PropertyGetters.ToDictionary(kvp => kvp.Key, kvp => kvp.Value(objectGraph)); if (resourceMapping.UrlTemplate != null) { result.Links = CreateLinks(resourceMapping, urlBuilder, result, _parentId); } if (resourceMapping.Relationships.Any()) result.Relationships = CreateRelationships(objectGraph, result.Id, resourceMapping, context, result.Type); if (resourceMapping.PipelineModule != null) { resourceMapping.PipelineModule.Run(resourceMapping.ResourceRepresentationType, result, isIncludedResource, resourceMapping.RequestedFields); } result.OwnerType = ownerType; return result; }
public SingleResource CreateResourceRepresentation(object objectGraph, IResourceMapping resourceMapping, Context context) { var urlBuilder = new UrlBuilder { RoutePrefix = context.RoutePrefix }; var result = new SingleResource(); result.Id = resourceMapping.IdGetter(objectGraph).ToString(); result.Type = resourceMapping.ResourceType; result.Attributes = resourceMapping.PropertyGetters.ToDictionary(kvp => kvp.Key, kvp => kvp.Value(objectGraph)); if (resourceMapping.UrlTemplate != null) result.Links = CreateLinks(resourceMapping, urlBuilder, result); if (resourceMapping.Relationships.Any()) result.Relationships = CreateRelationships(objectGraph, result.Id, resourceMapping, context); return result; }