Skip to content

Remove DocumentData, instead use ResourceObject #403

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 11, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion benchmarks/Serialization/JsonApiDeserializer_Benchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace Benchmarks.Serialization {
public class JsonApiDeserializer_Benchmarks {
private const string TYPE_NAME = "simple-types";
private static readonly string Content = JsonConvert.SerializeObject(new Document {
Data = new DocumentData {
Data = new ResourceObject {
Type = TYPE_NAME,
Id = "1",
Attributes = new Dictionary<string, object> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public virtual async Task<IActionResult> PatchAsync(TId id, [FromBody] T entity)
}

[HttpPatch("{id}/relationships/{relationshipName}")]
public virtual async Task<IActionResult> PatchRelationshipsAsync(TId id, string relationshipName, [FromBody] List<DocumentData> relationships)
public virtual async Task<IActionResult> PatchRelationshipsAsync(TId id, string relationshipName, [FromBody] List<ResourceObject> relationships)
{
await _resourceService.UpdateRelationshipsAsync(id, relationshipName, relationships);
return Ok();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public Task<TodoItem> UpdateAsync(int id, TodoItem entity)
throw new NotImplementedException();
}

public Task UpdateRelationshipsAsync(int id, string relationshipName, List<DocumentData> relationships)
public Task UpdateRelationshipsAsync(int id, string relationshipName, List<ResourceObject> relationships)
{
throw new NotImplementedException();
}
Expand Down
33 changes: 16 additions & 17 deletions src/JsonApiDotNetCore/Builders/DocumentBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public Documents Build(IEnumerable<IIdentifiable> entities)
var enumeratedEntities = entities as IList<IIdentifiable> ?? entities.ToList();
var documents = new Documents
{
Data = new List<DocumentData>(),
Data = new List<ResourceObject>(),
Meta = GetMeta(enumeratedEntities.FirstOrDefault())
};

Expand Down Expand Up @@ -95,7 +95,7 @@ private Dictionary<string, object> GetMeta(IIdentifiable entity)

private bool ShouldIncludePageLinks(ContextEntity entity) => entity.Links.HasFlag(Link.Paging);

private List<DocumentData> AppendIncludedObject(List<DocumentData> includedObject, ContextEntity contextEntity, IIdentifiable entity)
private List<ResourceObject> AppendIncludedObject(List<ResourceObject> includedObject, ContextEntity contextEntity, IIdentifiable entity)
{
var includedEntities = GetIncludedEntities(includedObject, contextEntity, entity);
if (includedEntities?.Count > 0)
Expand All @@ -107,13 +107,12 @@ private List<DocumentData> AppendIncludedObject(List<DocumentData> includedObjec
}

[Obsolete("You should specify an IResourceDefinition implementation using the GetData/3 overload.")]
public DocumentData GetData(ContextEntity contextEntity, IIdentifiable entity)
public ResourceObject GetData(ContextEntity contextEntity, IIdentifiable entity)
=> GetData(contextEntity, entity, resourceDefinition: null);

public DocumentData GetData(ContextEntity contextEntity, IIdentifiable entity, IResourceDefinition resourceDefinition = null)
public ResourceObject GetData(ContextEntity contextEntity, IIdentifiable entity, IResourceDefinition resourceDefinition = null)
{
var data = new DocumentData
{
var data = new ResourceObject {
Type = contextEntity.EntityName,
Id = entity.StringId
};
Expand Down Expand Up @@ -151,7 +150,7 @@ private bool OmitNullValuedAttribute(AttrAttribute attr, object attributeValue)
return attributeValue == null && _documentBuilderOptions.OmitNullValuedAttributes;
}

private void AddRelationships(DocumentData data, ContextEntity contextEntity, IIdentifiable entity)
private void AddRelationships(ResourceObject data, ContextEntity contextEntity, IIdentifiable entity)
{
data.Relationships = new Dictionary<string, RelationshipData>();
contextEntity.Relationships.ForEach(r =>
Expand Down Expand Up @@ -192,9 +191,9 @@ private RelationshipData GetRelationshipData(RelationshipAttribute attr, Context
return relationshipData;
}

private List<DocumentData> GetIncludedEntities(List<DocumentData> included, ContextEntity rootContextEntity, IIdentifiable rootResource)
private List<ResourceObject> GetIncludedEntities(List<ResourceObject> included, ContextEntity rootContextEntity, IIdentifiable rootResource)
{
if(_jsonApiContext.IncludedRelationships != null)
if (_jsonApiContext.IncludedRelationships != null)
{
foreach(var relationshipName in _jsonApiContext.IncludedRelationships)
{
Expand All @@ -209,8 +208,8 @@ private List<DocumentData> GetIncludedEntities(List<DocumentData> included, Cont
return included;
}

private List<DocumentData> IncludeRelationshipChain(
List<DocumentData> included, ContextEntity parentEntity, IIdentifiable parentResource, string[] relationshipChain, int relationshipChainIndex)
private List<ResourceObject> IncludeRelationshipChain(
List<ResourceObject> included, ContextEntity parentEntity, IIdentifiable parentResource, string[] relationshipChain, int relationshipChainIndex)
{
var requestedRelationship = relationshipChain[relationshipChainIndex];
var relationship = parentEntity.Relationships.FirstOrDefault(r => r.PublicRelationshipName == requestedRelationship);
Expand All @@ -232,10 +231,10 @@ private List<DocumentData> IncludeRelationshipChain(
return included;
}

private List<DocumentData> IncludeSingleResourceRelationships(
List<DocumentData> included, IIdentifiable navigationEntity, RelationshipAttribute relationship, string[] relationshipChain, int relationshipChainIndex)
private List<ResourceObject> IncludeSingleResourceRelationships(
List<ResourceObject> included, IIdentifiable navigationEntity, RelationshipAttribute relationship, string[] relationshipChain, int relationshipChainIndex)
{
if(relationshipChainIndex < relationshipChain.Length)
if (relationshipChainIndex < relationshipChain.Length)
{
var nextContextEntity = _jsonApiContext.ContextGraph.GetContextEntity(relationship.Type);
var resource = (IIdentifiable)navigationEntity;
Expand All @@ -248,12 +247,12 @@ private List<DocumentData> IncludeSingleResourceRelationships(
}


private List<DocumentData> AddIncludedEntity(List<DocumentData> entities, IIdentifiable entity)
private List<ResourceObject> AddIncludedEntity(List<ResourceObject> entities, IIdentifiable entity)
{
var includedEntity = GetIncludedEntity(entity);

if (entities == null)
entities = new List<DocumentData>();
entities = new List<ResourceObject>();

if (includedEntity != null && entities.Any(doc =>
string.Equals(doc.Id, includedEntity.Id) && string.Equals(doc.Type, includedEntity.Type)) == false)
Expand All @@ -264,7 +263,7 @@ private List<DocumentData> AddIncludedEntity(List<DocumentData> entities, IIdent
return entities;
}

private DocumentData GetIncludedEntity(IIdentifiable entity)
private ResourceObject GetIncludedEntity(IIdentifiable entity)
{
if (entity == null) return null;

Expand Down
4 changes: 2 additions & 2 deletions src/JsonApiDotNetCore/Builders/IDocumentBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public interface IDocumentBuilder
Documents Build(IEnumerable<IIdentifiable> entities);

[Obsolete("You should specify an IResourceDefinition implementation using the GetData/3 overload.")]
DocumentData GetData(ContextEntity contextEntity, IIdentifiable entity);
DocumentData GetData(ContextEntity contextEntity, IIdentifiable entity, IResourceDefinition resourceDefinition = null);
ResourceObject GetData(ContextEntity contextEntity, IIdentifiable entity);
ResourceObject GetData(ContextEntity contextEntity, IIdentifiable entity, IResourceDefinition resourceDefinition = null);
}
}
2 changes: 1 addition & 1 deletion src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ public virtual async Task<IActionResult> PatchAsync(TId id, [FromBody] T entity)
return Ok(updatedEntity);
}

public virtual async Task<IActionResult> PatchRelationshipsAsync(TId id, string relationshipName, [FromBody] List<DocumentData> relationships)
public virtual async Task<IActionResult> PatchRelationshipsAsync(TId id, string relationshipName, [FromBody] List<ResourceObject> relationships)
{
if (_updateRelationships == null) throw Exceptions.UnSupportedRequestMethod;

Expand Down
2 changes: 1 addition & 1 deletion src/JsonApiDotNetCore/Controllers/JsonApiCmdController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public override async Task<IActionResult> PatchAsync(TId id, [FromBody] T entity

[HttpPatch("{id}/relationships/{relationshipName}")]
public override async Task<IActionResult> PatchRelationshipsAsync(
TId id, string relationshipName, [FromBody] List<DocumentData> relationships)
TId id, string relationshipName, [FromBody] List<ResourceObject> relationships)
=> await base.PatchRelationshipsAsync(id, relationshipName, relationships);

[HttpDelete("{id}")]
Expand Down
2 changes: 1 addition & 1 deletion src/JsonApiDotNetCore/Controllers/JsonApiController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public override async Task<IActionResult> PatchAsync(TId id, [FromBody] T entity

[HttpPatch("{id}/relationships/{relationshipName}")]
public override async Task<IActionResult> PatchRelationshipsAsync(
TId id, string relationshipName, [FromBody] List<DocumentData> relationships)
TId id, string relationshipName, [FromBody] List<ResourceObject> relationships)
=> await base.PatchRelationshipsAsync(id, relationshipName, relationships);

[HttpDelete("{id}")]
Expand Down
2 changes: 1 addition & 1 deletion src/JsonApiDotNetCore/Models/Document.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ namespace JsonApiDotNetCore.Models
public class Document : DocumentBase
{
[JsonProperty("data")]
public DocumentData Data { get; set; }
public ResourceObject Data { get; set; }
}
}
2 changes: 1 addition & 1 deletion src/JsonApiDotNetCore/Models/DocumentBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public class DocumentBase
public RootLinks Links { get; set; }

[JsonProperty("included", NullValueHandling = NullValueHandling.Ignore)]
public List<DocumentData> Included { get; set; }
public List<ResourceObject> Included { get; set; }

[JsonProperty("meta", NullValueHandling = NullValueHandling.Ignore)]
public Dictionary<string, object> Meta { get; set; }
Expand Down
5 changes: 0 additions & 5 deletions src/JsonApiDotNetCore/Models/DocumentData.cs

This file was deleted.

2 changes: 1 addition & 1 deletion src/JsonApiDotNetCore/Models/Documents.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ namespace JsonApiDotNetCore.Models
public class Documents : DocumentBase
{
[JsonProperty("data")]
public List<DocumentData> Data { get; set; }
public List<ResourceObject> Data { get; set; }
}
}
12 changes: 6 additions & 6 deletions src/JsonApiDotNetCore/Models/Operations/Operation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,18 @@ private void SetData(object data)
if (data is JArray jArray)
{
DataIsList = true;
DataList = jArray.ToObject<List<DocumentData>>();
DataList = jArray.ToObject<List<ResourceObject>>();
}
else if (data is List<DocumentData> dataList)
else if (data is List<ResourceObject> dataList)
{
DataIsList = true;
DataList = dataList;
}
else if (data is JObject jObject)
{
DataObject = jObject.ToObject<DocumentData>();
DataObject = jObject.ToObject<ResourceObject>();
}
else if (data is DocumentData dataObject)
else if (data is ResourceObject dataObject)
{
DataObject = dataObject;
}
Expand All @@ -53,10 +53,10 @@ private void SetData(object data)
public bool DataIsList { get; private set; }

[JsonIgnore]
public List<DocumentData> DataList { get; private set; }
public List<ResourceObject> DataList { get; private set; }

[JsonIgnore]
public DocumentData DataObject { get; private set; }
public ResourceObject DataObject { get; private set; }

public string GetResourceTypeName()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ public interface IJsonApiDeSerializer
TEntity Deserialize<TEntity>(string requestBody);
object DeserializeRelationship(string requestBody);
List<TEntity> DeserializeList<TEntity>(string requestBody);
object DocumentToObject(DocumentData data, List<DocumentData> included = null);
object DocumentToObject(ResourceObject data, List<ResourceObject> included = null);
}
}
18 changes: 9 additions & 9 deletions src/JsonApiDotNetCore/Serialization/JsonApiDeSerializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,9 @@ public object DeserializeRelationship(string requestBody)
var data = JToken.Parse(requestBody)["data"];

if (data is JArray)
return data.ToObject<List<DocumentData>>();
return data.ToObject<List<ResourceObject>>();

return new List<DocumentData> { data.ToObject<DocumentData>() };
return new List<ResourceObject> { data.ToObject<ResourceObject>() };
}
catch (Exception e)
{
Expand Down Expand Up @@ -111,7 +111,7 @@ public List<TEntity> DeserializeList<TEntity>(string requestBody)
}
}

public object DocumentToObject(DocumentData data, List<DocumentData> included = null)
public object DocumentToObject(ResourceObject data, List<ResourceObject> included = null)
{
if (data == null)
throw new JsonApiException(422, "Failed to deserialize document as json:api.");
Expand Down Expand Up @@ -175,7 +175,7 @@ private object SetRelationships(
object entity,
ContextEntity contextEntity,
Dictionary<string, RelationshipData> relationships,
List<DocumentData> included = null)
List<ResourceObject> included = null)
{
if (relationships == null || relationships.Count == 0)
return entity;
Expand All @@ -197,7 +197,7 @@ private object SetHasOneRelationship(object entity,
HasOneAttribute attr,
ContextEntity contextEntity,
Dictionary<string, RelationshipData> relationships,
List<DocumentData> included = null)
List<ResourceObject> included = null)
{
var relationshipName = attr.PublicRelationshipName;

Expand Down Expand Up @@ -254,7 +254,7 @@ private void SetHasOneForeignKeyValue(object entity, HasOneAttribute hasOneAttr,
/// If the resource has been included, all attributes will be set.
/// If the resource has not been included, only the id will be set.
/// </summary>
private void SetHasOneNavigationPropertyValue(object entity, HasOneAttribute hasOneAttr, ResourceIdentifierObject rio, List<DocumentData> included)
private void SetHasOneNavigationPropertyValue(object entity, HasOneAttribute hasOneAttr, ResourceIdentifierObject rio, List<ResourceObject> included)
{
// if the resource identifier is null, there should be no reason to instantiate an instance
if (rio != null && rio.Id != null)
Expand All @@ -277,7 +277,7 @@ private object SetHasManyRelationship(object entity,
RelationshipAttribute attr,
ContextEntity contextEntity,
Dictionary<string, RelationshipData> relationships,
List<DocumentData> included = null)
List<ResourceObject> included = null)
{
var relationshipName = attr.PublicRelationshipName;

Expand All @@ -303,7 +303,7 @@ private object SetHasManyRelationship(object entity,
return entity;
}

private IIdentifiable GetIncludedRelationship(ResourceIdentifierObject relatedResourceIdentifier, List<DocumentData> includedResources, RelationshipAttribute relationshipAttr)
private IIdentifiable GetIncludedRelationship(ResourceIdentifierObject relatedResourceIdentifier, List<ResourceObject> includedResources, RelationshipAttribute relationshipAttr)
{
// at this point we can be sure the relationshipAttr.Type is IIdentifiable because we were able to successfully build the ContextGraph
var relatedInstance = relationshipAttr.Type.New<IIdentifiable>();
Expand All @@ -326,7 +326,7 @@ private IIdentifiable GetIncludedRelationship(ResourceIdentifierObject relatedRe
return relatedInstance;
}

private DocumentData GetLinkedResource(ResourceIdentifierObject relatedResourceIdentifier, List<DocumentData> includedResources)
private ResourceObject GetLinkedResource(ResourceIdentifierObject relatedResourceIdentifier, List<ResourceObject> includedResources)
{
try
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ public interface IUpdateRelationshipService<T> : IUpdateRelationshipService<T, i
public interface IUpdateRelationshipService<T, in TId>
where T : class, IIdentifiable<TId>
{
Task UpdateRelationshipsAsync(TId id, string relationshipName, List<DocumentData> relationships);
Task UpdateRelationshipsAsync(TId id, string relationshipName, List<ResourceObject> relationships);
}
}
2 changes: 1 addition & 1 deletion src/JsonApiDotNetCore/Services/EntityResourceService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ public virtual async Task<TResource> UpdateAsync(TId id, TResource resource)
return MapOut(entity);
}

public virtual async Task UpdateRelationshipsAsync(TId id, string relationshipName, List<DocumentData> relationships)
public virtual async Task UpdateRelationshipsAsync(TId id, string relationshipName, List<ResourceObject> relationships)
{
var entity = await _entities.GetAndIncludeAsync(id, relationshipName);
if (entity == null)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ private async Task<object> GetAllAsync(Operation operation)
{
var result = await _getAll.GetAsync();

var operations = new List<DocumentData>();
var operations = new List<ResourceObject>();
foreach (var resource in result)
{
var doc = _documentBuilder.GetData(
Expand Down Expand Up @@ -153,14 +153,14 @@ private async Task<object> GetRelationshipAsync(Operation operation)
detail: $"Type '{result.GetType()} does not implement {nameof(IIdentifiable)} nor {nameof(IEnumerable<IIdentifiable>)}'");
}

private DocumentData GetData(ContextEntity contextEntity, IIdentifiable singleResource)
private ResourceObject GetData(ContextEntity contextEntity, IIdentifiable singleResource)
{
return _documentBuilder.GetData(contextEntity, singleResource);
}

private List<DocumentData> GetData(ContextEntity contextEntity, IEnumerable multipleResults)
private List<ResourceObject> GetData(ContextEntity contextEntity, IEnumerable multipleResults)
{
var resources = new List<DocumentData>();
var resources = new List<ResourceObject>();
foreach (var singleResult in multipleResults)
{
if (singleResult is IIdentifiable resource)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace JsonApiDotNetCoreExampleTests.Helpers.Extensions
{
public static class DocumentExtensions
{
public static DocumentData FindResource<TId>(this List<DocumentData> included, string type, TId id)
public static ResourceObject FindResource<TId>(this List<ResourceObject> included, string type, TId id)
{
var document = included.Where(documentData => (
documentData.Type == type
Expand All @@ -23,8 +23,8 @@ public static DocumentData FindResource<TId>(this List<DocumentData> included, s
return document;
}

public static int CountOfType(this List<DocumentData> included, string type) {
public static int CountOfType(this List<ResourceObject> included, string type) {
return included.Where(documentData => documentData.Type == type).Count();
}
}
}
}
Loading