Skip to content

Commit eaf9a33

Browse files
author
Bart Koelman
committed
Inlined properties on serializable objects
1 parent 705e8d5 commit eaf9a33

File tree

81 files changed

+1298
-1328
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+1298
-1328
lines changed

src/JsonApiDotNetCore/Serialization/BaseDeserializer.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,19 @@ protected object DeserializeData(string body, JsonSerializerOptions serializerOp
7777

7878
if (document != null)
7979
{
80-
if (document.IsManyData)
80+
if (document.Data.ManyValue != null)
8181
{
8282
using (CodeTimingSessionManager.Current.Measure("Deserializer.Build (list)"))
8383
{
84-
return document.ManyData.Select(ParseResourceObject).ToHashSet(IdentifiableComparer.Instance);
84+
return document.Data.ManyValue.Select(ParseResourceObject).ToHashSet(IdentifiableComparer.Instance);
8585
}
8686
}
8787

88-
if (document.SingleData != null)
88+
if (document.Data.SingleValue != null)
8989
{
9090
using (CodeTimingSessionManager.Current.Measure("Deserializer.Build (single)"))
9191
{
92-
return ParseResourceObject(document.SingleData);
92+
return ParseResourceObject(document.Data.SingleValue);
9393
}
9494
}
9595
}
@@ -178,7 +178,7 @@ private IIdentifiable SetRelationships(IIdentifiable resource, IDictionary<strin
178178
{
179179
bool relationshipIsProvided = relationshipValues.TryGetValue(attr.PublicName, out RelationshipObject relationshipData);
180180

181-
if (!relationshipIsProvided || !relationshipData.Data.IsPopulated)
181+
if (!relationshipIsProvided || !relationshipData.Data.IsAssigned)
182182
{
183183
continue;
184184
}
@@ -245,13 +245,13 @@ protected ResourceContext GetExistingResourceContext(string publicName)
245245
/// </summary>
246246
private void SetHasOneRelationship(IIdentifiable resource, HasOneAttribute hasOneRelationship, RelationshipObject relationshipData)
247247
{
248-
if (relationshipData.ManyData != null)
248+
if (relationshipData.Data.ManyValue != null)
249249
{
250250
throw new JsonApiSerializationException("Expected single data element for to-one relationship.",
251251
$"Expected single data element for '{hasOneRelationship.PublicName}' relationship.", atomicOperationIndex: AtomicOperationIndex);
252252
}
253253

254-
IIdentifiable rightResource = CreateRightResource(hasOneRelationship, relationshipData.SingleData);
254+
IIdentifiable rightResource = CreateRightResource(hasOneRelationship, relationshipData.Data.SingleValue);
255255
hasOneRelationship.SetValue(resource, rightResource);
256256

257257
// depending on if this base parser is used client-side or server-side,
@@ -264,13 +264,13 @@ private void SetHasOneRelationship(IIdentifiable resource, HasOneAttribute hasOn
264264
/// </summary>
265265
private void SetHasManyRelationship(IIdentifiable resource, HasManyAttribute hasManyRelationship, RelationshipObject relationshipData)
266266
{
267-
if (relationshipData.ManyData == null)
267+
if (relationshipData.Data.ManyValue == null)
268268
{
269269
throw new JsonApiSerializationException("Expected data[] element for to-many relationship.",
270270
$"Expected data[] element for '{hasManyRelationship.PublicName}' relationship.", atomicOperationIndex: AtomicOperationIndex);
271271
}
272272

273-
HashSet<IIdentifiable> rightResources = relationshipData.ManyData.Select(rio => CreateRightResource(hasManyRelationship, rio))
273+
HashSet<IIdentifiable> rightResources = relationshipData.Data.ManyValue.Select(rio => CreateRightResource(hasManyRelationship, rio))
274274
.ToHashSet(IdentifiableComparer.Instance);
275275

276276
IEnumerable convertedCollection = CollectionConverter.CopyToTypedCollection(rightResources, hasManyRelationship.Property.PropertyType);

src/JsonApiDotNetCore/Serialization/Building/IncludedResourceObjectBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private void UpdateRelationships(ResourceObject resourceObject)
8383

8484
private static IDictionary<string, RelationshipObject> PruneRelationshipObjects(ResourceObject resourceObject)
8585
{
86-
Dictionary<string, RelationshipObject> pruned = resourceObject.Relationships.Where(pair => pair.Value.Data.IsPopulated || pair.Value.Links != null)
86+
Dictionary<string, RelationshipObject> pruned = resourceObject.Relationships.Where(pair => pair.Value.Data.IsAssigned || pair.Value.Links != null)
8787
.ToDictionary(pair => pair.Key, pair => pair.Value);
8888

8989
return !pruned.Any() ? null : pruned;
@@ -174,7 +174,7 @@ private void ProcessRelationship(IIdentifiable parent, IList<RelationshipAttribu
174174

175175
relationshipObject.Data = GetRelatedResourceLinkage(nextRelationship, parent);
176176

177-
if (relationshipObject.Data.HasResource)
177+
if (relationshipObject.Data.IsAssigned && relationshipObject.Data.Value != null)
178178
{
179179
// if the relationship is set, continue parsing the chain.
180180
object related = nextRelationship.GetValue(parent);

src/JsonApiDotNetCore/Serialization/Building/ResponseResourceObjectBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ protected override RelationshipObject GetRelationshipData(RelationshipAttribute
8181
{
8282
relationshipObject = base.GetRelationshipData(relationship, resource);
8383

84-
if (relationshipChains.Any() && relationshipObject.Data.HasResource)
84+
if (relationshipChains.Any() && relationshipObject.Data.Value != null)
8585
{
8686
foreach (IReadOnlyCollection<RelationshipAttribute> chain in relationshipChains)
8787
{

src/JsonApiDotNetCore/Serialization/Objects/AtomicOperationObject.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,6 @@ public sealed class AtomicOperationObject
1414
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
1515
public SingleOrManyData<ResourceObject> Data { get; set; }
1616

17-
// [TODO-STJ]: Inline
18-
[JsonIgnore]
19-
public IList<ResourceObject> ManyData => Data.ManyValue;
20-
21-
// [TODO-STJ]: Inline
22-
[JsonIgnore]
23-
public ResourceObject SingleData => Data.SingleValue;
24-
2517
[JsonPropertyName("op")]
2618
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
2719
public AtomicOperationCode Code { get; set; }

src/JsonApiDotNetCore/Serialization/Objects/AtomicResultObject.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ public sealed class AtomicResultObject
1414
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
1515
public SingleOrManyData<ResourceObject> Data { get; set; }
1616

17-
// [TODO-STJ]: Inline
18-
[JsonIgnore]
19-
public ResourceObject SingleData => Data.SingleValue;
20-
2117
[JsonPropertyName("meta")]
2218
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
2319
public IDictionary<string, object> Meta { get; set; }

src/JsonApiDotNetCore/Serialization/Objects/Document.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,6 @@ public sealed class Document
4343
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
4444
public IDictionary<string, object> Meta { get; set; }
4545

46-
// [TODO-STJ]: Inline
47-
[JsonIgnore]
48-
public bool IsManyData => Data.ManyValue != null;
49-
50-
// [TODO-STJ]: Inline
51-
[JsonIgnore]
52-
public IList<ResourceObject> ManyData => Data.ManyValue;
53-
54-
// [TODO-STJ]: Inline
55-
[JsonIgnore]
56-
public ResourceObject SingleData => Data.SingleValue;
57-
5846
internal HttpStatusCode GetErrorStatusCode()
5947
{
6048
if (Errors.IsNullOrEmpty())

src/JsonApiDotNetCore/Serialization/Objects/RelationshipObject.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,6 @@ public sealed class RelationshipObject
1818
// JsonIgnoreCondition is determined at runtime by WriteOnlyRelationshipObjectConverter.
1919
public SingleOrManyData<ResourceIdentifierObject> Data { get; set; }
2020

21-
// [TODO-STJ]: Inline
22-
[JsonIgnore]
23-
public IList<ResourceIdentifierObject> ManyData => Data.ManyValue;
24-
25-
// [TODO-STJ]: Inline
26-
[JsonIgnore]
27-
public ResourceIdentifierObject SingleData => Data.SingleValue;
28-
2921
[JsonPropertyName("meta")]
3022
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
3123
public IDictionary<string, object> Meta { get; set; }

src/JsonApiDotNetCore/Serialization/Objects/SingleOrManyData.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,6 @@ public readonly struct SingleOrManyData<T>
2222
[JsonIgnore]
2323
public bool IsAssigned { get; }
2424

25-
// [TODO-STJ]: Inline
26-
[JsonIgnore]
27-
public bool IsPopulated => IsAssigned;
28-
29-
// [TODO-STJ]: Inline
30-
[JsonIgnore]
31-
internal bool HasResource => IsAssigned && Value != null;
32-
3325
[JsonIgnore]
3426
public T SingleValue { get; }
3527

src/JsonApiDotNetCore/Serialization/RequestDeserializer.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ private OperationContainer ParseForCreateOrUpdateResourceOperation(AtomicOperati
208208

209209
_request.CopyFrom(request);
210210

211-
IIdentifiable primaryResource = ParseResourceObject(operation.SingleData);
211+
IIdentifiable primaryResource = ParseResourceObject(operation.Data.SingleValue);
212212

213213
_resourceDefinitionAccessor.OnDeserialize(primaryResource);
214214

@@ -233,13 +233,13 @@ private ResourceObject GetRequiredSingleDataForResourceOperation(AtomicOperation
233233
throw new JsonApiSerializationException("The 'data' element is required.", null, atomicOperationIndex: AtomicOperationIndex);
234234
}
235235

236-
if (operation.SingleData == null)
236+
if (operation.Data.SingleValue == null)
237237
{
238238
throw new JsonApiSerializationException("Expected single data element for create/update resource operation.", null,
239239
atomicOperationIndex: AtomicOperationIndex);
240240
}
241241

242-
return operation.SingleData;
242+
return operation.Data.SingleValue;
243243
}
244244

245245
[AssertionMethod]
@@ -401,31 +401,31 @@ private void ParseDataForRelationship(RelationshipAttribute relationship, Resour
401401
{
402402
if (relationship is HasOneAttribute)
403403
{
404-
if (operation.ManyData != null)
404+
if (operation.Data.ManyValue != null)
405405
{
406406
throw new JsonApiSerializationException("Expected single data element for to-one relationship.",
407407
$"Expected single data element for '{relationship.PublicName}' relationship.", atomicOperationIndex: AtomicOperationIndex);
408408
}
409409

410-
if (operation.SingleData != null)
410+
if (operation.Data.SingleValue != null)
411411
{
412-
ValidateSingleDataForRelationship(operation.SingleData, secondaryResourceContext, "data");
412+
ValidateSingleDataForRelationship(operation.Data.SingleValue, secondaryResourceContext, "data");
413413

414-
IIdentifiable secondaryResource = ParseResourceObject(operation.SingleData);
414+
IIdentifiable secondaryResource = ParseResourceObject(operation.Data.SingleValue);
415415
relationship.SetValue(primaryResource, secondaryResource);
416416
}
417417
}
418418
else if (relationship is HasManyAttribute)
419419
{
420-
if (operation.ManyData == null)
420+
if (operation.Data.ManyValue == null)
421421
{
422422
throw new JsonApiSerializationException("Expected data[] element for to-many relationship.",
423423
$"Expected data[] element for '{relationship.PublicName}' relationship.", atomicOperationIndex: AtomicOperationIndex);
424424
}
425425

426426
var secondaryResources = new List<IIdentifiable>();
427427

428-
foreach (ResourceObject resourceObject in operation.ManyData)
428+
foreach (ResourceObject resourceObject in operation.Data.ManyValue)
429429
{
430430
ValidateSingleDataForRelationship(resourceObject, secondaryResourceContext, "data[]");
431431

src/JsonApiDotNetCore/Serialization/ResponseSerializer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ internal string SerializeSingle(IIdentifiable resource)
103103
IReadOnlyCollection<RelationshipAttribute> relationships = _fieldsToSerialize.GetRelationships(_primaryResourceType);
104104

105105
Document document = Build(resource, attributes, relationships);
106-
ResourceObject resourceObject = document.SingleData;
106+
ResourceObject resourceObject = document.Data.SingleValue;
107107

108108
if (resourceObject != null)
109109
{
@@ -136,7 +136,7 @@ internal string SerializeMany(IReadOnlyCollection<IIdentifiable> resources)
136136

137137
Document document = Build(resources, attributes, relationships);
138138

139-
foreach (ResourceObject resourceObject in document.ManyData)
139+
foreach (ResourceObject resourceObject in document.Data.ManyValue)
140140
{
141141
ResourceLinks links = _linkBuilder.GetResourceLinks(resourceObject.Type, resourceObject.Id);
142142

0 commit comments

Comments
 (0)