Skip to content

Commit 1ec31d2

Browse files
committed
Declare Data properties as members instead of via base type
1 parent 1bdee8b commit 1ec31d2

24 files changed

+140
-155
lines changed

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Documents/NullableResourceIdentifierResponseDocument.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
99

10-
// Types in the current namespace are never touched by ASP.NET ModelState validation, therefore using a non-nullable reference type for a property does not
10+
// Types in the JsonApiObjects namespace are never touched by ASP.NET ModelState validation, therefore using a non-nullable reference type for a property does not
1111
// imply this property is required. Instead, we use [Required] explicitly, because this is how Swashbuckle is instructed to mark properties as required.
1212
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
13-
internal sealed class NullableResourceIdentifierResponseDocument<TResource> : NullableSingleData<ResourceIdentifier<TResource>>
13+
internal sealed class NullableResourceIdentifierResponseDocument<TResource>
1414
where TResource : IIdentifiable
1515
{
1616
[JsonPropertyName("jsonapi")]
@@ -20,6 +20,10 @@ internal sealed class NullableResourceIdentifierResponseDocument<TResource> : Nu
2020
[JsonPropertyName("links")]
2121
public ResourceIdentifierTopLevelLinks Links { get; set; } = null!;
2222

23+
[Required]
24+
[JsonPropertyName("data")]
25+
public ResourceIdentifier<TResource>? Data { get; set; }
26+
2327
[JsonPropertyName("meta")]
2428
public IDictionary<string, object> Meta { get; set; } = null!;
2529
}

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Documents/NullableSecondaryResourceResponseDocument.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
99

1010
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
11-
internal sealed class NullableSecondaryResourceResponseDocument<TResource> : NullableSingleData<ResourceDataInResponse<TResource>>
11+
internal sealed class NullableSecondaryResourceResponseDocument<TResource>
1212
where TResource : IIdentifiable
1313
{
1414
[JsonPropertyName("jsonapi")]
@@ -18,6 +18,10 @@ internal sealed class NullableSecondaryResourceResponseDocument<TResource> : Nul
1818
[JsonPropertyName("links")]
1919
public ResourceTopLevelLinks Links { get; set; } = null!;
2020

21+
[Required]
22+
[JsonPropertyName("data")]
23+
public ResourceDataInResponse<TResource>? Data { get; set; }
24+
2125
[JsonPropertyName("included")]
2226
public IList<ResourceData> Included { get; set; } = null!;
2327

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Documents/PrimaryResourceResponseDocument.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
99

1010
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
11-
internal sealed class PrimaryResourceResponseDocument<TResource> : SingleData<ResourceDataInResponse<TResource>>
11+
internal sealed class PrimaryResourceResponseDocument<TResource>
1212
where TResource : IIdentifiable
1313
{
1414
[JsonPropertyName("jsonapi")]
@@ -18,6 +18,10 @@ internal sealed class PrimaryResourceResponseDocument<TResource> : SingleData<Re
1818
[JsonPropertyName("links")]
1919
public ResourceTopLevelLinks Links { get; set; } = null!;
2020

21+
[Required]
22+
[JsonPropertyName("data")]
23+
public ResourceDataInResponse<TResource> Data { get; set; } = null!;
24+
2125
[JsonPropertyName("included")]
2226
public IList<ResourceData> Included { get; set; } = null!;
2327

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Documents/ResourceCollectionResponseDocument.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
99

1010
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
11-
internal sealed class ResourceCollectionResponseDocument<TResource> : ManyData<ResourceDataInResponse<TResource>>
11+
internal sealed class ResourceCollectionResponseDocument<TResource>
1212
where TResource : IIdentifiable
1313
{
1414
[JsonPropertyName("jsonapi")]
@@ -18,6 +18,10 @@ internal sealed class ResourceCollectionResponseDocument<TResource> : ManyData<R
1818
[JsonPropertyName("links")]
1919
public ResourceCollectionTopLevelLinks Links { get; set; } = null!;
2020

21+
[Required]
22+
[JsonPropertyName("data")]
23+
public ICollection<ResourceDataInResponse<TResource>> Data { get; set; } = null!;
24+
2125
[JsonPropertyName("included")]
2226
public IList<ResourceData> Included { get; set; } = null!;
2327

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Documents/ResourceIdentifierCollectionResponseDocument.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
99

1010
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
11-
internal sealed class ResourceIdentifierCollectionResponseDocument<TResource> : ManyData<ResourceIdentifier<TResource>>
11+
internal sealed class ResourceIdentifierCollectionResponseDocument<TResource>
1212
where TResource : IIdentifiable
1313
{
1414
[JsonPropertyName("jsonapi")]
@@ -18,6 +18,10 @@ internal sealed class ResourceIdentifierCollectionResponseDocument<TResource> :
1818
[JsonPropertyName("links")]
1919
public ResourceIdentifierCollectionTopLevelLinks Links { get; set; } = null!;
2020

21+
[Required]
22+
[JsonPropertyName("data")]
23+
public ICollection<ResourceIdentifier<TResource>> Data { get; set; } = null!;
24+
2125
[JsonPropertyName("meta")]
2226
public IDictionary<string, object> Meta { get; set; } = null!;
2327
}

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Documents/ResourceIdentifierResponseDocument.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
99

1010
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
11-
internal sealed class ResourceIdentifierResponseDocument<TResource> : SingleData<ResourceIdentifier<TResource>>
11+
internal sealed class ResourceIdentifierResponseDocument<TResource>
1212
where TResource : IIdentifiable
1313
{
1414
[JsonPropertyName("jsonapi")]
@@ -18,6 +18,10 @@ internal sealed class ResourceIdentifierResponseDocument<TResource> : SingleData
1818
[JsonPropertyName("links")]
1919
public ResourceIdentifierTopLevelLinks Links { get; set; } = null!;
2020

21+
[Required]
22+
[JsonPropertyName("data")]
23+
public ResourceIdentifier<TResource> Data { get; set; } = null!;
24+
2125
[JsonPropertyName("meta")]
2226
public IDictionary<string, object> Meta { get; set; } = null!;
2327
}
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
using System.ComponentModel.DataAnnotations;
2+
using System.Text.Json.Serialization;
13
using JetBrains.Annotations;
24
using JsonApiDotNetCore.OpenApi.JsonApiObjects.ResourceObjects;
35
using JsonApiDotNetCore.Resources;
46

57
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
68

79
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
8-
internal sealed class ResourcePatchRequestDocument<TResource> : SingleData<ResourceDataInPatchRequest<TResource>>
9-
where TResource : IIdentifiable;
10+
internal sealed class ResourcePatchRequestDocument<TResource>
11+
where TResource : IIdentifiable
12+
{
13+
[Required]
14+
[JsonPropertyName("data")]
15+
public ResourceDataInPatchRequest<TResource> Data { get; set; } = null!;
16+
}
Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1+
using System.ComponentModel.DataAnnotations;
2+
using System.Text.Json.Serialization;
13
using JetBrains.Annotations;
24
using JsonApiDotNetCore.OpenApi.JsonApiObjects.ResourceObjects;
35
using JsonApiDotNetCore.Resources;
46

57
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
68

79
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
8-
internal sealed class ResourcePostRequestDocument<TResource> : SingleData<ResourceDataInPostRequest<TResource>>
9-
where TResource : IIdentifiable;
10+
internal sealed class ResourcePostRequestDocument<TResource>
11+
where TResource : IIdentifiable
12+
{
13+
[Required]
14+
[JsonPropertyName("data")]
15+
public ResourceDataInPostRequest<TResource> Data { get; set; } = null!;
16+
}

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Documents/SecondaryResourceResponseDocument.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Documents;
99

1010
[UsedImplicitly(ImplicitUseTargetFlags.Members)]
11-
internal sealed class SecondaryResourceResponseDocument<TResource> : SingleData<ResourceDataInResponse<TResource>>
11+
internal sealed class SecondaryResourceResponseDocument<TResource>
1212
where TResource : IIdentifiable
1313
{
1414
[JsonPropertyName("jsonapi")]
@@ -18,6 +18,10 @@ internal sealed class SecondaryResourceResponseDocument<TResource> : SingleData<
1818
[JsonPropertyName("links")]
1919
public ResourceTopLevelLinks Links { get; set; } = null!;
2020

21+
[Required]
22+
[JsonPropertyName("data")]
23+
public ResourceDataInResponse<TResource> Data { get; set; } = null!;
24+
2125
[JsonPropertyName("included")]
2226
public IList<ResourceData> Included { get; set; } = null!;
2327

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/ManyData.cs

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)