Skip to content

Commit fed4eb8

Browse files
authored
Merge pull request #1505 from json-api-dotnet/merge-master-into-openapi
Merge master into openapi (controller attribute changes) (2)
2 parents ff2f420 + 7025805 commit fed4eb8

File tree

8 files changed

+31
-27
lines changed

8 files changed

+31
-27
lines changed

Diff for: .config/dotnet-tools.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"isRoot": true,
44
"tools": {
55
"jetbrains.resharper.globaltools": {
6-
"version": "2023.3.3",
6+
"version": "2023.3.4",
77
"commands": [
88
"jb"
99
]
@@ -15,7 +15,7 @@
1515
]
1616
},
1717
"dotnet-reportgenerator-globaltool": {
18-
"version": "5.2.2",
18+
"version": "5.2.3",
1919
"commands": [
2020
"reportgenerator"
2121
]

Diff for: src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs

+12-11
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.ComponentModel.DataAnnotations;
12
using JsonApiDotNetCore.Configuration;
23
using JsonApiDotNetCore.Errors;
34
using JsonApiDotNetCore.Middleware;
@@ -106,7 +107,7 @@ public virtual async Task<IActionResult> GetAsync(CancellationToken cancellation
106107
/// GET /articles/1 HTTP/1.1
107108
/// ]]></code>
108109
/// </summary>
109-
public virtual async Task<IActionResult> GetAsync(TId id, CancellationToken cancellationToken)
110+
public virtual async Task<IActionResult> GetAsync([Required] TId id, CancellationToken cancellationToken)
110111
{
111112
_traceWriter.LogMethodStart(new
112113
{
@@ -131,7 +132,7 @@ public virtual async Task<IActionResult> GetAsync(TId id, CancellationToken canc
131132
/// GET /articles/1/revisions HTTP/1.1
132133
/// ]]></code>
133134
/// </summary>
134-
public virtual async Task<IActionResult> GetSecondaryAsync(TId id, string relationshipName, CancellationToken cancellationToken)
135+
public virtual async Task<IActionResult> GetSecondaryAsync([Required] TId id, [Required] string relationshipName, CancellationToken cancellationToken)
135136
{
136137
_traceWriter.LogMethodStart(new
137138
{
@@ -160,7 +161,7 @@ public virtual async Task<IActionResult> GetSecondaryAsync(TId id, string relati
160161
/// GET /articles/1/relationships/revisions HTTP/1.1
161162
/// ]]></code>
162163
/// </summary>
163-
public virtual async Task<IActionResult> GetRelationshipAsync(TId id, string relationshipName, CancellationToken cancellationToken)
164+
public virtual async Task<IActionResult> GetRelationshipAsync([Required] TId id, [Required] string relationshipName, CancellationToken cancellationToken)
164165
{
165166
_traceWriter.LogMethodStart(new
166167
{
@@ -185,7 +186,7 @@ public virtual async Task<IActionResult> GetRelationshipAsync(TId id, string rel
185186
/// POST /articles HTTP/1.1
186187
/// ]]></code>
187188
/// </summary>
188-
public virtual async Task<IActionResult> PostAsync([FromBody] TResource resource, CancellationToken cancellationToken)
189+
public virtual async Task<IActionResult> PostAsync([FromBody] [Required] TResource resource, CancellationToken cancellationToken)
189190
{
190191
_traceWriter.LogMethodStart(new
191192
{
@@ -235,8 +236,8 @@ public virtual async Task<IActionResult> PostAsync([FromBody] TResource resource
235236
/// <param name="cancellationToken">
236237
/// Propagates notification that request handling should be canceled.
237238
/// </param>
238-
public virtual async Task<IActionResult> PostRelationshipAsync(TId id, string relationshipName, [FromBody] ISet<IIdentifiable> rightResourceIds,
239-
CancellationToken cancellationToken)
239+
public virtual async Task<IActionResult> PostRelationshipAsync([Required] TId id, [Required] string relationshipName,
240+
[FromBody] [Required] ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken)
240241
{
241242
_traceWriter.LogMethodStart(new
242243
{
@@ -264,7 +265,7 @@ public virtual async Task<IActionResult> PostRelationshipAsync(TId id, string re
264265
/// PATCH /articles/1 HTTP/1.1
265266
/// ]]></code>
266267
/// </summary>
267-
public virtual async Task<IActionResult> PatchAsync(TId id, [FromBody] TResource resource, CancellationToken cancellationToken)
268+
public virtual async Task<IActionResult> PatchAsync([Required] TId id, [FromBody] [Required] TResource resource, CancellationToken cancellationToken)
268269
{
269270
_traceWriter.LogMethodStart(new
270271
{
@@ -310,7 +311,7 @@ public virtual async Task<IActionResult> PatchAsync(TId id, [FromBody] TResource
310311
/// <param name="cancellationToken">
311312
/// Propagates notification that request handling should be canceled.
312313
/// </param>
313-
public virtual async Task<IActionResult> PatchRelationshipAsync(TId id, string relationshipName, [FromBody] object? rightValue,
314+
public virtual async Task<IActionResult> PatchRelationshipAsync([Required] TId id, [Required] string relationshipName, [FromBody] object? rightValue,
314315
CancellationToken cancellationToken)
315316
{
316317
_traceWriter.LogMethodStart(new
@@ -337,7 +338,7 @@ public virtual async Task<IActionResult> PatchRelationshipAsync(TId id, string r
337338
/// DELETE /articles/1 HTTP/1.1
338339
/// ]]></code>
339340
/// </summary>
340-
public virtual async Task<IActionResult> DeleteAsync(TId id, CancellationToken cancellationToken)
341+
public virtual async Task<IActionResult> DeleteAsync([Required] TId id, CancellationToken cancellationToken)
341342
{
342343
_traceWriter.LogMethodStart(new
343344
{
@@ -371,8 +372,8 @@ public virtual async Task<IActionResult> DeleteAsync(TId id, CancellationToken c
371372
/// <param name="cancellationToken">
372373
/// Propagates notification that request handling should be canceled.
373374
/// </param>
374-
public virtual async Task<IActionResult> DeleteRelationshipAsync(TId id, string relationshipName, [FromBody] ISet<IIdentifiable> rightResourceIds,
375-
CancellationToken cancellationToken)
375+
public virtual async Task<IActionResult> DeleteRelationshipAsync([Required] TId id, [Required] string relationshipName,
376+
[FromBody] [Required] ISet<IIdentifiable> rightResourceIds, CancellationToken cancellationToken)
376377
{
377378
_traceWriter.LogMethodStart(new
378379
{

Diff for: src/JsonApiDotNetCore/Controllers/BaseJsonApiOperationsController.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.ComponentModel.DataAnnotations;
12
using JetBrains.Annotations;
23
using JsonApiDotNetCore.AtomicOperations;
34
using JsonApiDotNetCore.Configuration;
@@ -102,7 +103,8 @@ protected BaseJsonApiOperationsController(IJsonApiOptions options, IResourceGrap
102103
/// }
103104
/// ]]></code>
104105
/// </example>
105-
public virtual async Task<IActionResult> PostOperationsAsync([FromBody] IList<OperationContainer> operations, CancellationToken cancellationToken)
106+
public virtual async Task<IActionResult> PostOperationsAsync([FromBody] [Required] IList<OperationContainer> operations,
107+
CancellationToken cancellationToken)
106108
{
107109
_traceWriter.LogMethodStart(new
108110
{

Diff for: src/JsonApiDotNetCore/Controllers/JsonApiController.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,22 @@ public override Task<IActionResult> GetRelationshipAsync(TId id, string relation
7272

7373
/// <inheritdoc />
7474
[HttpPost]
75-
public override Task<IActionResult> PostAsync([FromBody] TResource resource, CancellationToken cancellationToken)
75+
public override Task<IActionResult> PostAsync(TResource resource, CancellationToken cancellationToken)
7676
{
7777
return base.PostAsync(resource, cancellationToken);
7878
}
7979

8080
/// <inheritdoc />
8181
[HttpPost("{id}/relationships/{relationshipName}")]
82-
public override Task<IActionResult> PostRelationshipAsync(TId id, string relationshipName, [FromBody] ISet<IIdentifiable> rightResourceIds,
82+
public override Task<IActionResult> PostRelationshipAsync(TId id, string relationshipName, ISet<IIdentifiable> rightResourceIds,
8383
CancellationToken cancellationToken)
8484
{
8585
return base.PostRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken);
8686
}
8787

8888
/// <inheritdoc />
8989
[HttpPatch("{id}")]
90-
public override Task<IActionResult> PatchAsync(TId id, [FromBody] TResource resource, CancellationToken cancellationToken)
90+
public override Task<IActionResult> PatchAsync(TId id, TResource resource, CancellationToken cancellationToken)
9191
{
9292
return base.PatchAsync(id, resource, cancellationToken);
9393
}
@@ -109,7 +109,7 @@ public override Task<IActionResult> DeleteAsync(TId id, CancellationToken cancel
109109

110110
/// <inheritdoc />
111111
[HttpDelete("{id}/relationships/{relationshipName}")]
112-
public override Task<IActionResult> DeleteRelationshipAsync(TId id, string relationshipName, [FromBody] ISet<IIdentifiable> rightResourceIds,
112+
public override Task<IActionResult> DeleteRelationshipAsync(TId id, string relationshipName, ISet<IIdentifiable> rightResourceIds,
113113
CancellationToken cancellationToken)
114114
{
115115
return base.DeleteRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken);

Diff for: src/JsonApiDotNetCore/Controllers/JsonApiOperationsController.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public abstract class JsonApiOperationsController(
1717
{
1818
/// <inheritdoc />
1919
[HttpPost]
20-
public override Task<IActionResult> PostOperationsAsync([FromBody] IList<OperationContainer> operations, CancellationToken cancellationToken)
20+
public override Task<IActionResult> PostOperationsAsync(IList<OperationContainer> operations, CancellationToken cancellationToken)
2121
{
2222
return base.PostOperationsAsync(operations, cancellationToken);
2323
}

Diff for: test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System.ComponentModel.DataAnnotations;
12
using JsonApiDotNetCore.Configuration;
23
using JsonApiDotNetCore.Controllers;
34
using JsonApiDotNetCore.Resources;
@@ -42,28 +43,28 @@ public Task<IActionResult> GetRelationshipAsync(string id, string relationshipNa
4243
}
4344

4445
[HttpPost]
45-
public override Task<IActionResult> PostAsync([FromBody] TResource resource, CancellationToken cancellationToken)
46+
public override Task<IActionResult> PostAsync([FromBody] [Required] TResource resource, CancellationToken cancellationToken)
4647
{
4748
return base.PostAsync(resource, cancellationToken);
4849
}
4950

5051
[HttpPost("{id}/relationships/{relationshipName}")]
51-
public Task<IActionResult> PostRelationshipAsync(string id, string relationshipName, [FromBody] ISet<IIdentifiable> rightResourceIds,
52+
public Task<IActionResult> PostRelationshipAsync(string id, string relationshipName, [FromBody] [Required] ISet<IIdentifiable> rightResourceIds,
5253
CancellationToken cancellationToken)
5354
{
5455
int idValue = _codec.Decode(id);
5556
return base.PostRelationshipAsync(idValue, relationshipName, rightResourceIds, cancellationToken);
5657
}
5758

5859
[HttpPatch("{id}")]
59-
public Task<IActionResult> PatchAsync(string id, [FromBody] TResource resource, CancellationToken cancellationToken)
60+
public Task<IActionResult> PatchAsync(string id, [FromBody] [Required] TResource resource, CancellationToken cancellationToken)
6061
{
6162
int idValue = _codec.Decode(id);
6263
return base.PatchAsync(idValue, resource, cancellationToken);
6364
}
6465

6566
[HttpPatch("{id}/relationships/{relationshipName}")]
66-
public Task<IActionResult> PatchRelationshipAsync(string id, string relationshipName, [FromBody] object rightValue, CancellationToken cancellationToken)
67+
public Task<IActionResult> PatchRelationshipAsync(string id, string relationshipName, [FromBody] object? rightValue, CancellationToken cancellationToken)
6768
{
6869
int idValue = _codec.Decode(id);
6970
return base.PatchRelationshipAsync(idValue, relationshipName, rightValue, cancellationToken);
@@ -77,7 +78,7 @@ public Task<IActionResult> DeleteAsync(string id, CancellationToken cancellation
7778
}
7879

7980
[HttpDelete("{id}/relationships/{relationshipName}")]
80-
public Task<IActionResult> DeleteRelationshipAsync(string id, string relationshipName, [FromBody] ISet<IIdentifiable> rightResourceIds,
81+
public Task<IActionResult> DeleteRelationshipAsync(string id, string relationshipName, [FromBody] [Required] ISet<IIdentifiable> rightResourceIds,
8182
CancellationToken cancellationToken)
8283
{
8384
int idValue = _codec.Decode(id);

Diff for: test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Deleting/DeleteResourceTests.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
4545

4646
await _testContext.RunOnDatabaseAsync(async dbContext =>
4747
{
48-
WorkItem? workItemsInDatabase = await dbContext.WorkItems.FirstWithIdOrDefaultAsync(existingWorkItem.Id);
48+
WorkItem? workItemInDatabase = await dbContext.WorkItems.FirstWithIdOrDefaultAsync(existingWorkItem.Id);
4949

50-
workItemsInDatabase.Should().BeNull();
50+
workItemInDatabase.Should().BeNull();
5151
});
5252
}
5353

Diff for: test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Fetching/FetchResourceTests.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
230230
}
231231

232232
[Fact]
233-
public async Task Can_get_unknown_secondary_OneToMany_resource()
233+
public async Task Can_get_unknown_secondary_OneToMany_resources()
234234
{
235235
// Arrange
236236
UserAccount userAccount = _fakers.UserAccount.Generate();

0 commit comments

Comments
 (0)