Skip to content

Commit b4fb7d2

Browse files
author
Chris Santero
committed
provide serialization hooks for RelationshipObjectFormatter children
1 parent e1a78d2 commit b4fb7d2

1 file changed

Lines changed: 24 additions & 4 deletions

File tree

JSONAPI/Json/RelationshipObjectFormatter.cs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,19 @@ public Task Serialize(IRelationshipObject relationshipObject, JsonWriter writer)
3939
LinksKeyName, LinkageKeyName, MetaKeyName));
4040

4141
writer.WriteStartObject();
42+
SerializeLinks(relationshipObject, writer);
43+
SerializeLinkage(relationshipObject, writer);
44+
SerializeMetadata(relationshipObject, writer);
45+
writer.WriteEndObject();
4246

47+
return Task.FromResult(0);
48+
}
49+
50+
/// <summary>
51+
/// Serializes the relationship object's links.
52+
/// </summary>
53+
protected virtual void SerializeLinks(IRelationshipObject relationshipObject, JsonWriter writer)
54+
{
4355
if (relationshipObject.SelfLink != null || relationshipObject.RelatedResourceLink != null)
4456
{
4557
writer.WritePropertyName(LinksKeyName);
@@ -58,22 +70,30 @@ public Task Serialize(IRelationshipObject relationshipObject, JsonWriter writer)
5870

5971
writer.WriteEndObject();
6072
}
73+
}
6174

75+
/// <summary>
76+
/// Serializes the relationship object's linkage.
77+
/// </summary>
78+
protected virtual void SerializeLinkage(IRelationshipObject relationshipObject, JsonWriter writer)
79+
{
6280
if (relationshipObject.Linkage != null)
6381
{
6482
writer.WritePropertyName(LinkageKeyName);
6583
_resourceLinkageFormatter.Serialize(relationshipObject.Linkage, writer);
6684
}
85+
}
6786

87+
/// <summary>
88+
/// Serializes the relationship object's metadata.
89+
/// </summary>
90+
protected virtual void SerializeMetadata(IRelationshipObject relationshipObject, JsonWriter writer)
91+
{
6892
if (relationshipObject.Metadata != null)
6993
{
7094
writer.WritePropertyName(MetaKeyName);
7195
_metadataFormatter.Serialize(relationshipObject.Metadata, writer);
7296
}
73-
74-
writer.WriteEndObject();
75-
76-
return Task.FromResult(0);
7797
}
7898

7999
public async Task<IRelationshipObject> Deserialize(JsonReader reader, string currentPath)

0 commit comments

Comments
 (0)