Skip to content

Commit 7dc407e

Browse files
author
Chris Santero
committed
don't fail on null to-many relationship
1 parent b2a5213 commit 7dc407e

1 file changed

Lines changed: 21 additions & 19 deletions

File tree

JSONAPI/Documents/Builders/RegistryDrivenDocumentBuilder.cs

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -76,29 +76,31 @@ protected ResourceObject CreateResourceObject(object modelObject, IDictionary<st
7676
{
7777
var propertyValue =
7878
(IEnumerable<object>)modelRelationship.Property.GetValue(modelObject);
79-
80-
var identifiers = new List<IResourceIdentifier>();
81-
foreach (var relatedResource in propertyValue)
79+
if (propertyValue != null)
8280
{
83-
var identifier = GetResourceIdentifierForResource(relatedResource);
84-
identifiers.Add(identifier);
85-
86-
IDictionary<string, ResourceObject> idDictionary;
87-
if (!idDictionariesByType.TryGetValue(identifier.Type, out idDictionary))
81+
var identifiers = new List<IResourceIdentifier>();
82+
foreach (var relatedResource in propertyValue)
8883
{
89-
idDictionary = new Dictionary<string, ResourceObject>();
90-
idDictionariesByType[identifier.Type] = idDictionary;
91-
}
92-
93-
ResourceObject relatedResourceObject;
94-
if (!idDictionary.TryGetValue(identifier.Id, out relatedResourceObject))
95-
{
96-
relatedResourceObject = CreateResourceObject(relatedResource, idDictionariesByType,
97-
childPath, includePathExpressions, linkBaseUrl);
98-
idDictionary[identifier.Id] = relatedResourceObject;
84+
var identifier = GetResourceIdentifierForResource(relatedResource);
85+
identifiers.Add(identifier);
86+
87+
IDictionary<string, ResourceObject> idDictionary;
88+
if (!idDictionariesByType.TryGetValue(identifier.Type, out idDictionary))
89+
{
90+
idDictionary = new Dictionary<string, ResourceObject>();
91+
idDictionariesByType[identifier.Type] = idDictionary;
92+
}
93+
94+
ResourceObject relatedResourceObject;
95+
if (!idDictionary.TryGetValue(identifier.Id, out relatedResourceObject))
96+
{
97+
relatedResourceObject = CreateResourceObject(relatedResource, idDictionariesByType,
98+
childPath, includePathExpressions, linkBaseUrl);
99+
idDictionary[identifier.Id] = relatedResourceObject;
100+
}
99101
}
102+
linkage = new ToManyResourceLinkage(identifiers.ToArray());
100103
}
101-
linkage = new ToManyResourceLinkage(identifiers.ToArray());
102104
}
103105
else
104106
{

0 commit comments

Comments
 (0)