From 73b76ba5dd8a4fdb7520bfd6b9a56402e997e3c1 Mon Sep 17 00:00:00 2001 From: Bart Koelman Date: Fri, 8 Oct 2021 14:13:09 +0200 Subject: [PATCH 1/7] Removed single-parameter controllers --- .../Controllers/BooksController.cs | 2 +- .../Controllers/PeopleController.cs | 2 +- .../Controllers/PeopleController.cs | 2 +- .../Controllers/TagsController.cs | 2 +- .../Controllers/TodoItemsController.cs | 2 +- .../Controllers/ResourceAsController.cs | 2 +- .../Controllers/ResourceBsController.cs | 2 +- .../Controllers/WorkItemsController.cs | 2 +- .../Controllers/ReportsController.cs | 2 +- .../Controllers/BaseJsonApiController.cs | 30 ------------------- .../Controllers/JsonApiCommandController.cs | 11 ------- .../Controllers/JsonApiController.cs | 23 -------------- .../Controllers/JsonApiQueryController.cs | 11 ------- .../Serialization/Response/LinkBuilder.cs | 6 ++-- .../Archiving/BroadcastCommentsController.cs | 2 +- .../TelevisionBroadcastsController.cs | 2 +- .../Archiving/TelevisionNetworksController.cs | 2 +- .../Archiving/TelevisionStationsController.cs | 2 +- .../AtomicOperations/PerformersController.cs | 2 +- .../CompositeKeys/DealershipsController.cs | 2 +- .../CompositeKeys/EnginesController.cs | 2 +- .../ContentNegotiation/PoliciesController.cs | 2 +- .../BaseToothbrushesController.cs | 2 +- .../CustomRoutes/CiviliansController.cs | 2 +- .../CustomRoutes/TownsController.cs | 2 +- .../EagerLoading/BuildingsController.cs | 2 +- .../EagerLoading/StatesController.cs | 2 +- .../EagerLoading/StreetsController.cs | 2 +- .../ConsumerArticlesController.cs | 2 +- .../ThrowingArticlesController.cs | 2 +- .../HostingInIIS/ArtGalleriesController.cs | 2 +- .../HostingInIIS/PaintingsController.cs | 2 +- .../ObfuscatedIdentifiableController.cs | 2 +- .../ModelState/SystemDirectoriesController.cs | 2 +- .../ModelState/SystemFilesController.cs | 2 +- .../Links/PhotoLocationsController.cs | 2 +- .../Logging/AuditEntriesController.cs | 2 +- .../Meta/ProductFamiliesController.cs | 2 +- .../Meta/SupportTicketsController.cs | 2 +- .../MultiTenancy/WebProductsController.cs | 2 +- .../MultiTenancy/WebShopsController.cs | 2 +- .../DivingBoardsController.cs | 2 +- .../SwimmingPoolsController.cs | 2 +- .../QueryStrings/BlogPostsController.cs | 2 +- .../QueryStrings/BlogsController.cs | 2 +- .../QueryStrings/CalendarsController.cs | 2 +- .../QueryStrings/CommentsController.cs | 2 +- .../FilterableResourcesController.cs | 2 +- .../QueryStrings/WebAccountsController.cs | 2 +- .../ReadWrite/WorkItemsController.cs | 2 +- .../CustomersController.cs | 2 +- .../RequiredRelationships/OrdersController.cs | 2 +- .../ShipmentsController.cs | 2 +- .../GiftCertificatesController.cs | 2 +- .../PostOfficesController.cs | 2 +- .../Reading/MoonsController.cs | 2 +- .../Reading/PlanetsController.cs | 2 +- .../Reading/StarsController.cs | 2 +- .../Serialization/ScholarshipsController.cs | 2 +- .../Serialization/StudentsController.cs | 2 +- .../ResourceInheritance/MenController.cs | 2 +- .../BlockingHttpDeleteController.cs | 2 +- .../BlockingHttpPatchController.cs | 2 +- .../BlockingHttpPostController.cs | 2 +- .../BlockingWritesController.cs | 2 +- .../SoftDeletion/CompaniesController.cs | 2 +- .../SoftDeletion/DepartmentsController.cs | 2 +- .../Controllers/BaseJsonApiControllerTests.cs | 2 +- 68 files changed, 66 insertions(+), 141 deletions(-) diff --git a/src/Examples/GettingStarted/Controllers/BooksController.cs b/src/Examples/GettingStarted/Controllers/BooksController.cs index 17e1c1417d..b1d32dd705 100644 --- a/src/Examples/GettingStarted/Controllers/BooksController.cs +++ b/src/Examples/GettingStarted/Controllers/BooksController.cs @@ -6,7 +6,7 @@ namespace GettingStarted.Controllers { - public sealed class BooksController : JsonApiController + public sealed class BooksController : JsonApiController { public BooksController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/src/Examples/GettingStarted/Controllers/PeopleController.cs b/src/Examples/GettingStarted/Controllers/PeopleController.cs index c7600be15a..c5f223ec01 100644 --- a/src/Examples/GettingStarted/Controllers/PeopleController.cs +++ b/src/Examples/GettingStarted/Controllers/PeopleController.cs @@ -6,7 +6,7 @@ namespace GettingStarted.Controllers { - public sealed class PeopleController : JsonApiController + public sealed class PeopleController : JsonApiController { public PeopleController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/src/Examples/JsonApiDotNetCoreExample/Controllers/PeopleController.cs b/src/Examples/JsonApiDotNetCoreExample/Controllers/PeopleController.cs index 430790bc6e..eab8efdd75 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Controllers/PeopleController.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Controllers/PeopleController.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreExample.Controllers { - public sealed class PeopleController : JsonApiController + public sealed class PeopleController : JsonApiController { public PeopleController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/src/Examples/JsonApiDotNetCoreExample/Controllers/TagsController.cs b/src/Examples/JsonApiDotNetCoreExample/Controllers/TagsController.cs index a9536f009b..65537fae38 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Controllers/TagsController.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Controllers/TagsController.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreExample.Controllers { - public sealed class TagsController : JsonApiController + public sealed class TagsController : JsonApiController { public TagsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/src/Examples/JsonApiDotNetCoreExample/Controllers/TodoItemsController.cs b/src/Examples/JsonApiDotNetCoreExample/Controllers/TodoItemsController.cs index a28a7033d6..1b31ac690b 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Controllers/TodoItemsController.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Controllers/TodoItemsController.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreExample.Controllers { - public sealed class TodoItemsController : JsonApiController + public sealed class TodoItemsController : JsonApiController { public TodoItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/src/Examples/MultiDbContextExample/Controllers/ResourceAsController.cs b/src/Examples/MultiDbContextExample/Controllers/ResourceAsController.cs index 4e976acdc0..034469fcfd 100644 --- a/src/Examples/MultiDbContextExample/Controllers/ResourceAsController.cs +++ b/src/Examples/MultiDbContextExample/Controllers/ResourceAsController.cs @@ -6,7 +6,7 @@ namespace MultiDbContextExample.Controllers { - public sealed class ResourceAsController : JsonApiController + public sealed class ResourceAsController : JsonApiController { public ResourceAsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/src/Examples/MultiDbContextExample/Controllers/ResourceBsController.cs b/src/Examples/MultiDbContextExample/Controllers/ResourceBsController.cs index bd61b7aa2e..f4c44de4b6 100644 --- a/src/Examples/MultiDbContextExample/Controllers/ResourceBsController.cs +++ b/src/Examples/MultiDbContextExample/Controllers/ResourceBsController.cs @@ -6,7 +6,7 @@ namespace MultiDbContextExample.Controllers { - public sealed class ResourceBsController : JsonApiController + public sealed class ResourceBsController : JsonApiController { public ResourceBsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/src/Examples/NoEntityFrameworkExample/Controllers/WorkItemsController.cs b/src/Examples/NoEntityFrameworkExample/Controllers/WorkItemsController.cs index 63ab620b93..04fb62ff5f 100644 --- a/src/Examples/NoEntityFrameworkExample/Controllers/WorkItemsController.cs +++ b/src/Examples/NoEntityFrameworkExample/Controllers/WorkItemsController.cs @@ -6,7 +6,7 @@ namespace NoEntityFrameworkExample.Controllers { - public sealed class WorkItemsController : JsonApiController + public sealed class WorkItemsController : JsonApiController { public WorkItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/src/Examples/ReportsExample/Controllers/ReportsController.cs b/src/Examples/ReportsExample/Controllers/ReportsController.cs index bafd4cebae..9d349c00b3 100644 --- a/src/Examples/ReportsExample/Controllers/ReportsController.cs +++ b/src/Examples/ReportsExample/Controllers/ReportsController.cs @@ -10,7 +10,7 @@ namespace ReportsExample.Controllers { [Route("api/[controller]")] - public class ReportsController : BaseJsonApiController + public class ReportsController : BaseJsonApiController { public ReportsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IGetAllService getAllService) : base(options, loggerFactory, getAllService) diff --git a/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs b/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs index 90a8f3078f..463432c82c 100644 --- a/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs +++ b/src/JsonApiDotNetCore/Controllers/BaseJsonApiController.cs @@ -365,34 +365,4 @@ public virtual async Task DeleteRelationshipAsync(TId id, string return NoContent(); } } - - /// - public abstract class BaseJsonApiController : BaseJsonApiController - where TResource : class, IIdentifiable - { - /// - protected BaseJsonApiController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) - : base(options, loggerFactory, resourceService, resourceService) - { - } - - /// - protected BaseJsonApiController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceQueryService queryService = null, - IResourceCommandService commandService = null) - : base(options, loggerFactory, queryService, commandService) - { - } - - /// - protected BaseJsonApiController(IJsonApiOptions options, ILoggerFactory loggerFactory, IGetAllService getAll = null, - IGetByIdService getById = null, IGetSecondaryService getSecondary = null, - IGetRelationshipService getRelationship = null, ICreateService create = null, - IAddToRelationshipService addToRelationship = null, IUpdateService update = null, - ISetRelationshipService setRelationship = null, IDeleteService delete = null, - IRemoveFromRelationshipService removeFromRelationship = null) - : base(options, loggerFactory, getAll, getById, getSecondary, getRelationship, create, addToRelationship, update, setRelationship, delete, - removeFromRelationship) - { - } - } } diff --git a/src/JsonApiDotNetCore/Controllers/JsonApiCommandController.cs b/src/JsonApiDotNetCore/Controllers/JsonApiCommandController.cs index f2ed5c938b..bae72fb615 100644 --- a/src/JsonApiDotNetCore/Controllers/JsonApiCommandController.cs +++ b/src/JsonApiDotNetCore/Controllers/JsonApiCommandController.cs @@ -76,15 +76,4 @@ public override async Task DeleteRelationshipAsync(TId id, string return await base.DeleteRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken); } } - - /// - public abstract class JsonApiCommandController : JsonApiCommandController - where TResource : class, IIdentifiable - { - /// - protected JsonApiCommandController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceCommandService commandService) - : base(options, loggerFactory, commandService) - { - } - } } diff --git a/src/JsonApiDotNetCore/Controllers/JsonApiController.cs b/src/JsonApiDotNetCore/Controllers/JsonApiController.cs index 5fa5557ab7..3d06d695f8 100644 --- a/src/JsonApiDotNetCore/Controllers/JsonApiController.cs +++ b/src/JsonApiDotNetCore/Controllers/JsonApiController.cs @@ -117,27 +117,4 @@ public override async Task DeleteRelationshipAsync(TId id, string return await base.DeleteRelationshipAsync(id, relationshipName, rightResourceIds, cancellationToken); } } - - /// - public abstract class JsonApiController : JsonApiController - where TResource : class, IIdentifiable - { - /// - protected JsonApiController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) - : base(options, loggerFactory, resourceService) - { - } - - /// - protected JsonApiController(IJsonApiOptions options, ILoggerFactory loggerFactory, IGetAllService getAll = null, - IGetByIdService getById = null, IGetSecondaryService getSecondary = null, - IGetRelationshipService getRelationship = null, ICreateService create = null, - IAddToRelationshipService addToRelationship = null, IUpdateService update = null, - ISetRelationshipService setRelationship = null, IDeleteService delete = null, - IRemoveFromRelationshipService removeFromRelationship = null) - : base(options, loggerFactory, getAll, getById, getSecondary, getRelationship, create, addToRelationship, update, setRelationship, delete, - removeFromRelationship) - { - } - } } diff --git a/src/JsonApiDotNetCore/Controllers/JsonApiQueryController.cs b/src/JsonApiDotNetCore/Controllers/JsonApiQueryController.cs index 65d69c9d30..05446ca2b1 100644 --- a/src/JsonApiDotNetCore/Controllers/JsonApiQueryController.cs +++ b/src/JsonApiDotNetCore/Controllers/JsonApiQueryController.cs @@ -58,15 +58,4 @@ public override async Task GetRelationshipAsync(TId id, string re return await base.GetRelationshipAsync(id, relationshipName, cancellationToken); } } - - /// - public abstract class JsonApiQueryController : JsonApiQueryController - where TResource : class, IIdentifiable - { - /// - protected JsonApiQueryController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceQueryService queryService) - : base(options, loggerFactory, queryService) - { - } - } } diff --git a/src/JsonApiDotNetCore/Serialization/Response/LinkBuilder.cs b/src/JsonApiDotNetCore/Serialization/Response/LinkBuilder.cs index 4871bd7fdb..e2bc01aec6 100644 --- a/src/JsonApiDotNetCore/Serialization/Response/LinkBuilder.cs +++ b/src/JsonApiDotNetCore/Serialization/Response/LinkBuilder.cs @@ -24,9 +24,9 @@ public class LinkBuilder : ILinkBuilder private const string PageSizeParameterName = "page[size]"; private const string PageNumberParameterName = "page[number]"; - private static readonly string GetPrimaryControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetAsync)); - private static readonly string GetSecondaryControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetSecondaryAsync)); - private static readonly string GetRelationshipControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetRelationshipAsync)); + private static readonly string GetPrimaryControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetAsync)); + private static readonly string GetSecondaryControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetSecondaryAsync)); + private static readonly string GetRelationshipControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetRelationshipAsync)); private readonly IJsonApiOptions _options; private readonly IJsonApiRequest _request; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastCommentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastCommentsController.cs index 01780a1b50..a16c0f99d2 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastCommentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastCommentsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { - public sealed class BroadcastCommentsController : JsonApiController + public sealed class BroadcastCommentsController : JsonApiController { public BroadcastCommentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastsController.cs index abcb32f36c..3965884bf5 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { - public sealed class TelevisionBroadcastsController : JsonApiController + public sealed class TelevisionBroadcastsController : JsonApiController { public TelevisionBroadcastsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetworksController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetworksController.cs index 0c4432b63d..8e07ab950e 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetworksController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetworksController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { - public sealed class TelevisionNetworksController : JsonApiController + public sealed class TelevisionNetworksController : JsonApiController { public TelevisionNetworksController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStationsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStationsController.cs index 7b98448441..56b6fb8924 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStationsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStationsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { - public sealed class TelevisionStationsController : JsonApiController + public sealed class TelevisionStationsController : JsonApiController { public TelevisionStationsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/PerformersController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/PerformersController.cs index eb9b756655..299f8c100e 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/PerformersController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/PerformersController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations { - public sealed class PerformersController : JsonApiController + public sealed class PerformersController : JsonApiController { public PerformersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/DealershipsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/DealershipsController.cs index f3e21f47ac..4b1f2660f9 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/DealershipsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/DealershipsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CompositeKeys { - public sealed class DealershipsController : JsonApiController + public sealed class DealershipsController : JsonApiController { public DealershipsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/EnginesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/EnginesController.cs index 971246d219..3f74015864 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/EnginesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/EnginesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CompositeKeys { - public sealed class EnginesController : JsonApiController + public sealed class EnginesController : JsonApiController { public EnginesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/PoliciesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/PoliciesController.cs index 0174e16985..1f66b21ce4 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/PoliciesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/PoliciesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ContentNegotiation { - public sealed class PoliciesController : JsonApiController + public sealed class PoliciesController : JsonApiController { public PoliciesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/BaseToothbrushesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/BaseToothbrushesController.cs index 4718323321..c2d2d84051 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/BaseToothbrushesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/BaseToothbrushesController.cs @@ -10,7 +10,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ControllerActionResults { - public abstract class BaseToothbrushesController : BaseJsonApiController + public abstract class BaseToothbrushesController : BaseJsonApiController { internal const int EmptyActionResultId = 11111111; internal const int ActionResultWithErrorObjectId = 22222222; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/CiviliansController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/CiviliansController.cs index afcac61376..df398c7b17 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/CiviliansController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/CiviliansController.cs @@ -11,7 +11,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CustomRoutes [ApiController] [DisableRoutingConvention] [Route("world-civilians")] - public sealed class CiviliansController : JsonApiController + public sealed class CiviliansController : JsonApiController { public CiviliansController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/TownsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/TownsController.cs index c1c5cf8e24..d62ab493de 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/TownsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/TownsController.cs @@ -14,7 +14,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CustomRoutes { [DisableRoutingConvention] [Route("world-api/civilization/popular/towns")] - public sealed class TownsController : JsonApiController + public sealed class TownsController : JsonApiController { private readonly CustomRouteDbContext _dbContext; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingsController.cs index f88f3d9db5..712f114e73 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { - public sealed class BuildingsController : JsonApiController + public sealed class BuildingsController : JsonApiController { public BuildingsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StatesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StatesController.cs index 11533c16b9..23561f6f82 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StatesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StatesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { - public sealed class StatesController : JsonApiController + public sealed class StatesController : JsonApiController { public StatesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StreetsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StreetsController.cs index dae11e41b4..9a2c72f8f9 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StreetsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StreetsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { - public sealed class StreetsController : JsonApiController + public sealed class StreetsController : JsonApiController { public StreetsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticlesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticlesController.cs index 0a8e99fb31..77c803d884 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticlesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticlesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ExceptionHandling { - public sealed class ConsumerArticlesController : JsonApiController + public sealed class ConsumerArticlesController : JsonApiController { public ConsumerArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticlesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticlesController.cs index aac19cda31..6be48358d8 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticlesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticlesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ExceptionHandling { - public sealed class ThrowingArticlesController : JsonApiController + public sealed class ThrowingArticlesController : JsonApiController { public ThrowingArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGalleriesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGalleriesController.cs index b87e6daeb7..79ecdc8ccd 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGalleriesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGalleriesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.HostingInIIS { - public sealed class ArtGalleriesController : JsonApiController + public sealed class ArtGalleriesController : JsonApiController { public ArtGalleriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/PaintingsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/PaintingsController.cs index 513e369126..6859b64a28 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/PaintingsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/PaintingsController.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.HostingInIIS { [DisableRoutingConvention] [Route("custom/path/to/paintings-of-the-world")] - public sealed class PaintingsController : JsonApiController + public sealed class PaintingsController : JsonApiController { public PaintingsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs index 22c934ccbf..f4417723c4 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs @@ -10,7 +10,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.IdObfuscation { - public abstract class ObfuscatedIdentifiableController : BaseJsonApiController + public abstract class ObfuscatedIdentifiableController : BaseJsonApiController where TResource : class, IIdentifiable { private readonly HexadecimalCodec _codec = new(); diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectoriesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectoriesController.cs index 17d0703a28..43fab0d3b3 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectoriesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectoriesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.InputValidation.ModelState { - public sealed class SystemDirectoriesController : JsonApiController + public sealed class SystemDirectoriesController : JsonApiController { public SystemDirectoriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFilesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFilesController.cs index 94a9da2574..182edbe58e 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFilesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFilesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.InputValidation.ModelState { - public sealed class SystemFilesController : JsonApiController + public sealed class SystemFilesController : JsonApiController { public SystemFilesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocationsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocationsController.cs index ea6d605e56..b248a03e49 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocationsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocationsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Links { - public sealed class PhotoLocationsController : JsonApiController + public sealed class PhotoLocationsController : JsonApiController { public PhotoLocationsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntriesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntriesController.cs index 2432334e6b..7eb6de7a7d 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntriesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntriesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Logging { - public sealed class AuditEntriesController : JsonApiController + public sealed class AuditEntriesController : JsonApiController { public AuditEntriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamiliesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamiliesController.cs index d5ddc0327c..24a47b3ae2 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamiliesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamiliesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Meta { - public sealed class ProductFamiliesController : JsonApiController + public sealed class ProductFamiliesController : JsonApiController { public ProductFamiliesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketsController.cs index 7f787b8b77..94b9f33d93 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Meta { - public sealed class SupportTicketsController : JsonApiController + public sealed class SupportTicketsController : JsonApiController { public SupportTicketsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProductsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProductsController.cs index 3985fc3805..51f7f46870 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProductsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProductsController.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.MultiTenancy { [DisableRoutingConvention] [Route("{countryCode}/products")] - public sealed class WebProductsController : JsonApiController + public sealed class WebProductsController : JsonApiController { public WebProductsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShopsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShopsController.cs index 1c7c65ae4d..e36f8eadd5 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShopsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShopsController.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.MultiTenancy { [DisableRoutingConvention] [Route("{countryCode}/shops")] - public sealed class WebShopsController : JsonApiController + public sealed class WebShopsController : JsonApiController { public WebShopsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoardsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoardsController.cs index 65e5f0b3e3..32172d908f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoardsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoardsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.NamingConventions { - public sealed class DivingBoardsController : JsonApiController + public sealed class DivingBoardsController : JsonApiController { public DivingBoardsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPoolsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPoolsController.cs index 2d0783bbb3..2ea7433d59 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPoolsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPoolsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.NamingConventions { - public sealed class SwimmingPoolsController : JsonApiController + public sealed class SwimmingPoolsController : JsonApiController { public SwimmingPoolsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPostsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPostsController.cs index ea357db55a..b684677cf9 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPostsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPostsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { - public sealed class BlogPostsController : JsonApiController + public sealed class BlogPostsController : JsonApiController { public BlogPostsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogsController.cs index 565d1f3e58..3644929b0b 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { - public sealed class BlogsController : JsonApiController + public sealed class BlogsController : JsonApiController { public BlogsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CalendarsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CalendarsController.cs index 76e6e213b5..b0c9d725e8 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CalendarsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CalendarsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { - public sealed class CalendarsController : JsonApiController + public sealed class CalendarsController : JsonApiController { public CalendarsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CommentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CommentsController.cs index d00f138d77..a32dc34009 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CommentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CommentsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { - public sealed class CommentsController : JsonApiController + public sealed class CommentsController : JsonApiController { public CommentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResourcesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResourcesController.cs index c475498915..6f6f72de0f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResourcesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResourcesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings.Filtering { - public sealed class FilterableResourcesController : JsonApiController + public sealed class FilterableResourcesController : JsonApiController { public FilterableResourcesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccountsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccountsController.cs index 9842dcbc6f..5b6fe80a85 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccountsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccountsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { - public sealed class WebAccountsController : JsonApiController + public sealed class WebAccountsController : JsonApiController { public WebAccountsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItemsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItemsController.cs index 7ad111fa28..caa2cb9cfd 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItemsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItemsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ReadWrite { - public sealed class WorkItemsController : JsonApiController + public sealed class WorkItemsController : JsonApiController { public WorkItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/CustomersController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/CustomersController.cs index b3fc7316b5..eee7369f9f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/CustomersController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/CustomersController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { - public sealed class CustomersController : JsonApiController + public sealed class CustomersController : JsonApiController { public CustomersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/OrdersController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/OrdersController.cs index 5f0159428c..964a38c7ed 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/OrdersController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/OrdersController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { - public sealed class OrdersController : JsonApiController + public sealed class OrdersController : JsonApiController { public OrdersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/ShipmentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/ShipmentsController.cs index 7ca704fa6b..e7b29af012 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/ShipmentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/ShipmentsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { - public sealed class ShipmentsController : JsonApiController + public sealed class ShipmentsController : JsonApiController { public ShipmentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificatesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificatesController.cs index b8592eab1e..687e71bbc9 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificatesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificatesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceConstructorInjection { - public sealed class GiftCertificatesController : JsonApiController + public sealed class GiftCertificatesController : JsonApiController { public GiftCertificatesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOfficesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOfficesController.cs index 32167b3d2e..53d3818bef 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOfficesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOfficesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceConstructorInjection { - public sealed class PostOfficesController : JsonApiController + public sealed class PostOfficesController : JsonApiController { public PostOfficesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonsController.cs index f72d0c121a..cdbdc68059 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { - public sealed class MoonsController : JsonApiController + public sealed class MoonsController : JsonApiController { public MoonsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetsController.cs index 3ccf4362ec..9df44f7013 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { - public sealed class PlanetsController : JsonApiController + public sealed class PlanetsController : JsonApiController { public PlanetsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarsController.cs index a23eabe4ec..50a4ede988 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { - public sealed class StarsController : JsonApiController + public sealed class StarsController : JsonApiController { public StarsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/ScholarshipsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/ScholarshipsController.cs index 227e96a2ad..0040c5b356 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/ScholarshipsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/ScholarshipsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Serialization { - public sealed class ScholarshipsController : JsonApiController + public sealed class ScholarshipsController : JsonApiController { public ScholarshipsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentsController.cs index 3b82931c61..ae68eedc12 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Serialization { - public sealed class StudentsController : JsonApiController + public sealed class StudentsController : JsonApiController { public StudentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/MenController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/MenController.cs index b0da27471e..5ae29d30a3 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/MenController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/MenController.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceInheritance { - public sealed class MenController : JsonApiController + public sealed class MenController : JsonApiController { public MenController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpDeleteController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpDeleteController.cs index 18d753341e..cee04886ed 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpDeleteController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpDeleteController.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers { [NoHttpDelete] [DisableQueryString(JsonApiQueryStringParameters.Sort | JsonApiQueryStringParameters.Page)] - public sealed class BlockingHttpDeleteController : JsonApiController + public sealed class BlockingHttpDeleteController : JsonApiController { public BlockingHttpDeleteController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPatchController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPatchController.cs index b3b2e5f55c..64a36d367f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPatchController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPatchController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers { [NoHttpPatch] - public sealed class BlockingHttpPatchController : JsonApiController + public sealed class BlockingHttpPatchController : JsonApiController { public BlockingHttpPatchController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPostController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPostController.cs index 1dd6a8f401..507fac3eca 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPostController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPostController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers { [NoHttpPost] - public sealed class BlockingHttpPostController : JsonApiController + public sealed class BlockingHttpPostController : JsonApiController { public BlockingHttpPostController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService
resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingWritesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingWritesController.cs index b5cd00e10d..0c6cfd69a3 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingWritesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingWritesController.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers { [HttpReadOnly] [DisableQueryString("skipCache")] - public sealed class BlockingWritesController : JsonApiController + public sealed class BlockingWritesController : JsonApiController { public BlockingWritesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/CompaniesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/CompaniesController.cs index d866a48ac6..b908df5bac 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/CompaniesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/CompaniesController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.SoftDeletion { - public sealed class CompaniesController : JsonApiController + public sealed class CompaniesController : JsonApiController { public CompaniesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/DepartmentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/DepartmentsController.cs index f49c4e1877..3cc82e344c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/DepartmentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/DepartmentsController.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.SoftDeletion { - public sealed class DepartmentsController : JsonApiController + public sealed class DepartmentsController : JsonApiController { public DepartmentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) diff --git a/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs b/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs index 90c0426d66..71287a5469 100644 --- a/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs +++ b/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs @@ -271,7 +271,7 @@ public sealed class Resource : Identifiable public string TestAttribute { get; set; } } - private sealed class ResourceController : BaseJsonApiController + private sealed class ResourceController : BaseJsonApiController { public ResourceController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) From c0da01b76472f4bf47e583202ee10283a0c4bb4d Mon Sep 17 00:00:00 2001 From: Bart Koelman Date: Fri, 8 Oct 2021 14:26:17 +0200 Subject: [PATCH 2/7] Removed base class: I can't think of a reason why we should have an intermediate base class for these tests --- .../ActionResultTests.cs | 10 +-- .../BaseToothbrushesController.cs | 69 ------------------- .../ToothbrushesController.cs | 53 +++++++++++++- 3 files changed, 55 insertions(+), 77 deletions(-) delete mode 100644 test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/BaseToothbrushesController.cs diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ActionResultTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ActionResultTests.cs index 5168931a82..bb7fe9fe33 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ActionResultTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ActionResultTests.cs @@ -47,7 +47,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => public async Task Converts_empty_ActionResult_to_error_collection() { // Arrange - string route = $"/toothbrushes/{BaseToothbrushesController.EmptyActionResultId}"; + string route = $"/toothbrushes/{ToothbrushesController.EmptyActionResultId}"; // Act (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync(route); @@ -67,7 +67,7 @@ public async Task Converts_empty_ActionResult_to_error_collection() public async Task Converts_ActionResult_with_error_object_to_error_collection() { // Arrange - string route = $"/toothbrushes/{BaseToothbrushesController.ActionResultWithErrorObjectId}"; + string route = $"/toothbrushes/{ToothbrushesController.ActionResultWithErrorObjectId}"; // Act (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync(route); @@ -87,7 +87,7 @@ public async Task Converts_ActionResult_with_error_object_to_error_collection() public async Task Cannot_convert_ActionResult_with_string_parameter_to_error_collection() { // Arrange - string route = $"/toothbrushes/{BaseToothbrushesController.ActionResultWithStringParameter}"; + string route = $"/toothbrushes/{ToothbrushesController.ActionResultWithStringParameter}"; // Act (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync(route); @@ -107,7 +107,7 @@ public async Task Cannot_convert_ActionResult_with_string_parameter_to_error_col public async Task Converts_ObjectResult_with_error_object_to_error_collection() { // Arrange - string route = $"/toothbrushes/{BaseToothbrushesController.ObjectResultWithErrorObjectId}"; + string route = $"/toothbrushes/{ToothbrushesController.ObjectResultWithErrorObjectId}"; // Act (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync(route); @@ -127,7 +127,7 @@ public async Task Converts_ObjectResult_with_error_object_to_error_collection() public async Task Converts_ObjectResult_with_error_objects_to_error_collection() { // Arrange - string route = $"/toothbrushes/{BaseToothbrushesController.ObjectResultWithErrorCollectionId}"; + string route = $"/toothbrushes/{ToothbrushesController.ObjectResultWithErrorCollectionId}"; // Act (HttpResponseMessage httpResponse, Document responseDocument) = await _testContext.ExecuteGetAsync(route); diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/BaseToothbrushesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/BaseToothbrushesController.cs deleted file mode 100644 index c2d2d84051..0000000000 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/BaseToothbrushesController.cs +++ /dev/null @@ -1,69 +0,0 @@ -using System.Net; -using System.Threading; -using System.Threading.Tasks; -using JsonApiDotNetCore.Configuration; -using JsonApiDotNetCore.Controllers; -using JsonApiDotNetCore.Serialization.Objects; -using JsonApiDotNetCore.Services; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Logging; - -namespace JsonApiDotNetCoreTests.IntegrationTests.ControllerActionResults -{ - public abstract class BaseToothbrushesController : BaseJsonApiController - { - internal const int EmptyActionResultId = 11111111; - internal const int ActionResultWithErrorObjectId = 22222222; - internal const int ActionResultWithStringParameter = 33333333; - internal const int ObjectResultWithErrorObjectId = 44444444; - internal const int ObjectResultWithErrorCollectionId = 55555555; - - protected BaseToothbrushesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) - : base(options, loggerFactory, resourceService) - { - } - - public override async Task GetAsync(int id, CancellationToken cancellationToken) - { - if (id == EmptyActionResultId) - { - return NotFound(); - } - - if (id == ActionResultWithErrorObjectId) - { - return NotFound(new ErrorObject(HttpStatusCode.NotFound) - { - Title = "No toothbrush with that ID exists." - }); - } - - if (id == ActionResultWithStringParameter) - { - return Conflict("Something went wrong."); - } - - if (id == ObjectResultWithErrorObjectId) - { - return Error(new ErrorObject(HttpStatusCode.BadGateway)); - } - - if (id == ObjectResultWithErrorCollectionId) - { - var errors = new[] - { - new ErrorObject(HttpStatusCode.PreconditionFailed), - new ErrorObject(HttpStatusCode.Unauthorized), - new ErrorObject(HttpStatusCode.ExpectationFailed) - { - Title = "This is not a very great request." - } - }; - - return Error(errors); - } - - return await base.GetAsync(id, cancellationToken); - } - } -} diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ToothbrushesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ToothbrushesController.cs index b3d85b070d..c445a1e7ec 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ToothbrushesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ToothbrushesController.cs @@ -1,23 +1,70 @@ +using System.Net; using System.Threading; using System.Threading.Tasks; using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Controllers; +using JsonApiDotNetCore.Serialization.Objects; using JsonApiDotNetCore.Services; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; namespace JsonApiDotNetCoreTests.IntegrationTests.ControllerActionResults { - public sealed class ToothbrushesController : BaseToothbrushesController + public sealed class ToothbrushesController : BaseJsonApiController { + internal const int EmptyActionResultId = 11111111; + internal const int ActionResultWithErrorObjectId = 22222222; + internal const int ActionResultWithStringParameter = 33333333; + internal const int ObjectResultWithErrorObjectId = 44444444; + internal const int ObjectResultWithErrorCollectionId = 55555555; + public ToothbrushesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } [HttpGet("{id}")] - public override Task GetAsync(int id, CancellationToken cancellationToken) + public override async Task GetAsync(int id, CancellationToken cancellationToken) { - return base.GetAsync(id, cancellationToken); + if (id == EmptyActionResultId) + { + return NotFound(); + } + + if (id == ActionResultWithErrorObjectId) + { + return NotFound(new ErrorObject(HttpStatusCode.NotFound) + { + Title = "No toothbrush with that ID exists." + }); + } + + if (id == ActionResultWithStringParameter) + { + return Conflict("Something went wrong."); + } + + if (id == ObjectResultWithErrorObjectId) + { + return Error(new ErrorObject(HttpStatusCode.BadGateway)); + } + + if (id == ObjectResultWithErrorCollectionId) + { + var errors = new[] + { + new ErrorObject(HttpStatusCode.PreconditionFailed), + new ErrorObject(HttpStatusCode.Unauthorized), + new ErrorObject(HttpStatusCode.ExpectationFailed) + { + Title = "This is not a very great request." + } + }; + + return Error(errors); + } + + return await base.GetAsync(id, cancellationToken); } } } From 04c154eabef0363ab2da0e0b4bc6c339f977caf9 Mon Sep 17 00:00:00 2001 From: Bart Koelman Date: Fri, 8 Oct 2021 14:50:10 +0200 Subject: [PATCH 3/7] Removed single-parameter resource services --- .../Controllers/BooksController.cs | 2 +- .../Controllers/PeopleController.cs | 2 +- .../Controllers/PeopleController.cs | 2 +- .../Controllers/TagsController.cs | 2 +- .../Controllers/TodoItemsController.cs | 2 +- .../Controllers/ResourceAsController.cs | 2 +- .../Controllers/ResourceBsController.cs | 2 +- .../Controllers/WorkItemsController.cs | 2 +- .../Services/WorkItemService.cs | 2 +- .../NoEntityFrameworkExample/Startup.cs | 3 +-- .../Controllers/ReportsController.cs | 2 +- .../ReportsExample/Services/ReportService.cs | 2 +- .../JsonApiApplicationBuilder.cs | 7 +++--- .../Configuration/ServiceDiscoveryFacade.cs | 13 ----------- .../Services/IAddToRelationshipService.cs | 6 ----- .../Services/ICreateService.cs | 6 ----- .../Services/IDeleteService.cs | 6 ----- .../Services/IGetAllService.cs | 6 ----- .../Services/IGetByIdService.cs | 6 ----- .../Services/IGetRelationshipService.cs | 6 ----- .../Services/IGetSecondaryService.cs | 6 ----- .../IRemoveFromRelationshipService.cs | 6 ----- .../Services/IResourceCommandService.cs | 13 ----------- .../Services/IResourceQueryService.cs | 13 ----------- .../Services/IResourceService.cs | 11 ---------- .../Services/ISetRelationshipService.cs | 6 ----- .../Services/IUpdateService.cs | 6 ----- .../Services/JsonApiResourceService.cs | 19 ---------------- .../ServiceDiscoveryFacadeTests.cs | 2 +- test/DiscoveryTests/TestResourceService.cs | 2 +- .../Archiving/BroadcastCommentsController.cs | 2 +- .../TelevisionBroadcastsController.cs | 2 +- .../Archiving/TelevisionNetworksController.cs | 2 +- .../Archiving/TelevisionStationsController.cs | 2 +- .../AtomicOperations/PerformersController.cs | 2 +- .../CompositeKeys/DealershipsController.cs | 2 +- .../CompositeKeys/EnginesController.cs | 2 +- .../ContentNegotiation/PoliciesController.cs | 2 +- .../ToothbrushesController.cs | 2 +- .../CustomRoutes/CiviliansController.cs | 2 +- .../CustomRoutes/TownsController.cs | 3 ++- .../EagerLoading/BuildingsController.cs | 2 +- .../EagerLoading/StatesController.cs | 2 +- .../EagerLoading/StreetsController.cs | 2 +- .../ConsumerArticleService.cs | 2 +- .../ConsumerArticlesController.cs | 2 +- .../ThrowingArticlesController.cs | 2 +- .../HostingInIIS/ArtGalleriesController.cs | 2 +- .../HostingInIIS/PaintingsController.cs | 2 +- .../IdObfuscation/BankAccountsController.cs | 2 +- .../IdObfuscation/DebitCardsController.cs | 2 +- .../ObfuscatedIdentifiableController.cs | 2 +- .../ModelState/SystemDirectoriesController.cs | 2 +- .../ModelState/SystemFilesController.cs | 2 +- .../Links/PhotoLocationsController.cs | 2 +- .../Logging/AuditEntriesController.cs | 2 +- .../Meta/ProductFamiliesController.cs | 2 +- .../Meta/SupportTicketsController.cs | 2 +- .../MultiTenancy/MultiTenancyTests.cs | 4 ++-- .../MultiTenantResourceService.cs | 13 ----------- .../MultiTenancy/WebProductsController.cs | 2 +- .../MultiTenancy/WebShopsController.cs | 2 +- .../DivingBoardsController.cs | 2 +- .../SwimmingPoolsController.cs | 2 +- .../QueryStrings/BlogPostsController.cs | 2 +- .../QueryStrings/BlogsController.cs | 2 +- .../QueryStrings/CalendarsController.cs | 2 +- .../QueryStrings/CommentsController.cs | 2 +- .../FilterableResourcesController.cs | 2 +- .../QueryStrings/WebAccountsController.cs | 2 +- .../ReadWrite/WorkItemsController.cs | 2 +- .../CustomersController.cs | 2 +- .../RequiredRelationships/OrdersController.cs | 2 +- .../ShipmentsController.cs | 2 +- .../GiftCertificatesController.cs | 2 +- .../PostOfficesController.cs | 2 +- .../Reading/MoonsController.cs | 2 +- .../Reading/PlanetsController.cs | 2 +- .../Reading/StarsController.cs | 2 +- .../Serialization/ScholarshipsController.cs | 2 +- .../Serialization/StudentsController.cs | 2 +- .../ResourceInheritance/MenController.cs | 2 +- .../BlockingHttpDeleteController.cs | 2 +- .../BlockingHttpPatchController.cs | 2 +- .../BlockingHttpPostController.cs | 2 +- .../BlockingWritesController.cs | 2 +- .../SoftDeletion/CompaniesController.cs | 2 +- .../SoftDeletion/DepartmentsController.cs | 2 +- .../SoftDeletionAwareResourceService.cs | 13 ----------- .../SoftDeletion/SoftDeletionTests.cs | 4 ++-- .../Controllers/BaseJsonApiControllerTests.cs | 18 +++++++-------- .../ServiceCollectionExtensionsTests.cs | 22 +++++++++---------- 92 files changed, 99 insertions(+), 253 deletions(-) diff --git a/src/Examples/GettingStarted/Controllers/BooksController.cs b/src/Examples/GettingStarted/Controllers/BooksController.cs index b1d32dd705..928dddc82b 100644 --- a/src/Examples/GettingStarted/Controllers/BooksController.cs +++ b/src/Examples/GettingStarted/Controllers/BooksController.cs @@ -8,7 +8,7 @@ namespace GettingStarted.Controllers { public sealed class BooksController : JsonApiController { - public BooksController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BooksController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/src/Examples/GettingStarted/Controllers/PeopleController.cs b/src/Examples/GettingStarted/Controllers/PeopleController.cs index c5f223ec01..cef47189ae 100644 --- a/src/Examples/GettingStarted/Controllers/PeopleController.cs +++ b/src/Examples/GettingStarted/Controllers/PeopleController.cs @@ -8,7 +8,7 @@ namespace GettingStarted.Controllers { public sealed class PeopleController : JsonApiController { - public PeopleController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public PeopleController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/src/Examples/JsonApiDotNetCoreExample/Controllers/PeopleController.cs b/src/Examples/JsonApiDotNetCoreExample/Controllers/PeopleController.cs index eab8efdd75..36c772b29b 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Controllers/PeopleController.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Controllers/PeopleController.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreExample.Controllers { public sealed class PeopleController : JsonApiController { - public PeopleController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public PeopleController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/src/Examples/JsonApiDotNetCoreExample/Controllers/TagsController.cs b/src/Examples/JsonApiDotNetCoreExample/Controllers/TagsController.cs index 65537fae38..98b5051774 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Controllers/TagsController.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Controllers/TagsController.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreExample.Controllers { public sealed class TagsController : JsonApiController { - public TagsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public TagsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/src/Examples/JsonApiDotNetCoreExample/Controllers/TodoItemsController.cs b/src/Examples/JsonApiDotNetCoreExample/Controllers/TodoItemsController.cs index 1b31ac690b..0eaa59b1ca 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Controllers/TodoItemsController.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Controllers/TodoItemsController.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreExample.Controllers { public sealed class TodoItemsController : JsonApiController { - public TodoItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public TodoItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/src/Examples/MultiDbContextExample/Controllers/ResourceAsController.cs b/src/Examples/MultiDbContextExample/Controllers/ResourceAsController.cs index 034469fcfd..6fc542cf1d 100644 --- a/src/Examples/MultiDbContextExample/Controllers/ResourceAsController.cs +++ b/src/Examples/MultiDbContextExample/Controllers/ResourceAsController.cs @@ -8,7 +8,7 @@ namespace MultiDbContextExample.Controllers { public sealed class ResourceAsController : JsonApiController { - public ResourceAsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ResourceAsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/src/Examples/MultiDbContextExample/Controllers/ResourceBsController.cs b/src/Examples/MultiDbContextExample/Controllers/ResourceBsController.cs index f4c44de4b6..0316fbde1b 100644 --- a/src/Examples/MultiDbContextExample/Controllers/ResourceBsController.cs +++ b/src/Examples/MultiDbContextExample/Controllers/ResourceBsController.cs @@ -8,7 +8,7 @@ namespace MultiDbContextExample.Controllers { public sealed class ResourceBsController : JsonApiController { - public ResourceBsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ResourceBsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/src/Examples/NoEntityFrameworkExample/Controllers/WorkItemsController.cs b/src/Examples/NoEntityFrameworkExample/Controllers/WorkItemsController.cs index 04fb62ff5f..d50fa1183f 100644 --- a/src/Examples/NoEntityFrameworkExample/Controllers/WorkItemsController.cs +++ b/src/Examples/NoEntityFrameworkExample/Controllers/WorkItemsController.cs @@ -8,7 +8,7 @@ namespace NoEntityFrameworkExample.Controllers { public sealed class WorkItemsController : JsonApiController { - public WorkItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public WorkItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/src/Examples/NoEntityFrameworkExample/Services/WorkItemService.cs b/src/Examples/NoEntityFrameworkExample/Services/WorkItemService.cs index df227d12d9..45c1b9a83a 100644 --- a/src/Examples/NoEntityFrameworkExample/Services/WorkItemService.cs +++ b/src/Examples/NoEntityFrameworkExample/Services/WorkItemService.cs @@ -15,7 +15,7 @@ namespace NoEntityFrameworkExample.Services { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class WorkItemService : IResourceService + public sealed class WorkItemService : IResourceService { private readonly string _connectionString; diff --git a/src/Examples/NoEntityFrameworkExample/Startup.cs b/src/Examples/NoEntityFrameworkExample/Startup.cs index 758c31f731..14642d408f 100644 --- a/src/Examples/NoEntityFrameworkExample/Startup.cs +++ b/src/Examples/NoEntityFrameworkExample/Startup.cs @@ -1,7 +1,6 @@ using System; using JetBrains.Annotations; using JsonApiDotNetCore.Configuration; -using JsonApiDotNetCore.Services; using Microsoft.AspNetCore.Builder; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; @@ -27,7 +26,7 @@ public void ConfigureServices(IServiceCollection services) { services.AddJsonApi(options => options.Namespace = "api/v1", resources: builder => builder.Add("workItems")); - services.AddScoped, WorkItemService>(); + services.AddResourceService(); services.AddDbContext(options => options.UseNpgsql(_connectionString)); } diff --git a/src/Examples/ReportsExample/Controllers/ReportsController.cs b/src/Examples/ReportsExample/Controllers/ReportsController.cs index 9d349c00b3..db1b73ec57 100644 --- a/src/Examples/ReportsExample/Controllers/ReportsController.cs +++ b/src/Examples/ReportsExample/Controllers/ReportsController.cs @@ -12,7 +12,7 @@ namespace ReportsExample.Controllers [Route("api/[controller]")] public class ReportsController : BaseJsonApiController { - public ReportsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IGetAllService getAllService) + public ReportsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IGetAllService getAllService) : base(options, loggerFactory, getAllService) { } diff --git a/src/Examples/ReportsExample/Services/ReportService.cs b/src/Examples/ReportsExample/Services/ReportService.cs index b0655d38e1..62c5dc22b9 100644 --- a/src/Examples/ReportsExample/Services/ReportService.cs +++ b/src/Examples/ReportsExample/Services/ReportService.cs @@ -9,7 +9,7 @@ namespace ReportsExample.Services { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public class ReportService : IGetAllService + public class ReportService : IGetAllService { private readonly ILogger _logger; diff --git a/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs b/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs index 8db88c4ee2..52dfb8315c 100644 --- a/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs +++ b/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs @@ -198,15 +198,16 @@ private void AddRepositoryLayer() private void AddServiceLayer() { - RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.ServiceInterfaces, typeof(JsonApiResourceService<>), - typeof(JsonApiResourceService<,>)); + RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.ServiceInterfaces, null, typeof(JsonApiResourceService<,>)); } private void RegisterImplementationForOpenInterfaces(HashSet openGenericInterfaces, Type intImplementation, Type implementation) { foreach (Type openGenericInterface in openGenericInterfaces) { - Type implementationType = openGenericInterface.GetGenericArguments().Length == 1 ? intImplementation : implementation; + Type implementationType = openGenericInterface.GetGenericArguments().Length == 1 && intImplementation != null + ? intImplementation + : implementation; _services.TryAddScoped(openGenericInterface, implementationType); } diff --git a/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs b/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs index 3a8e7bd8d5..d9c47ea801 100644 --- a/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs +++ b/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs @@ -19,31 +19,18 @@ public sealed class ServiceDiscoveryFacade { internal static readonly HashSet ServiceInterfaces = new() { - typeof(IResourceService<>), typeof(IResourceService<,>), - typeof(IResourceCommandService<>), typeof(IResourceCommandService<,>), - typeof(IResourceQueryService<>), typeof(IResourceQueryService<,>), - typeof(IGetAllService<>), typeof(IGetAllService<,>), - typeof(IGetByIdService<>), typeof(IGetByIdService<,>), - typeof(IGetSecondaryService<>), typeof(IGetSecondaryService<,>), - typeof(IGetRelationshipService<>), typeof(IGetRelationshipService<,>), - typeof(ICreateService<>), typeof(ICreateService<,>), - typeof(IAddToRelationshipService<>), typeof(IAddToRelationshipService<,>), - typeof(IUpdateService<>), typeof(IUpdateService<,>), - typeof(ISetRelationshipService<>), typeof(ISetRelationshipService<,>), - typeof(IDeleteService<>), typeof(IDeleteService<,>), - typeof(IRemoveFromRelationshipService<>), typeof(IRemoveFromRelationshipService<,>) }; diff --git a/src/JsonApiDotNetCore/Services/IAddToRelationshipService.cs b/src/JsonApiDotNetCore/Services/IAddToRelationshipService.cs index 2fb6f82e8a..bc0ae069ff 100644 --- a/src/JsonApiDotNetCore/Services/IAddToRelationshipService.cs +++ b/src/JsonApiDotNetCore/Services/IAddToRelationshipService.cs @@ -8,12 +8,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface IAddToRelationshipService : IAddToRelationshipService - where TResource : class, IIdentifiable - { - } - /// [PublicAPI] public interface IAddToRelationshipService diff --git a/src/JsonApiDotNetCore/Services/ICreateService.cs b/src/JsonApiDotNetCore/Services/ICreateService.cs index af735de513..a030622f97 100644 --- a/src/JsonApiDotNetCore/Services/ICreateService.cs +++ b/src/JsonApiDotNetCore/Services/ICreateService.cs @@ -4,12 +4,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface ICreateService : ICreateService - where TResource : class, IIdentifiable - { - } - /// public interface ICreateService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/IDeleteService.cs b/src/JsonApiDotNetCore/Services/IDeleteService.cs index b3a801208d..a509f10caa 100644 --- a/src/JsonApiDotNetCore/Services/IDeleteService.cs +++ b/src/JsonApiDotNetCore/Services/IDeleteService.cs @@ -6,12 +6,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface IDeleteService : IDeleteService - where TResource : class, IIdentifiable - { - } - /// public interface IDeleteService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/IGetAllService.cs b/src/JsonApiDotNetCore/Services/IGetAllService.cs index bab5aeab31..a81caadd80 100644 --- a/src/JsonApiDotNetCore/Services/IGetAllService.cs +++ b/src/JsonApiDotNetCore/Services/IGetAllService.cs @@ -5,12 +5,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface IGetAllService : IGetAllService - where TResource : class, IIdentifiable - { - } - /// public interface IGetAllService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/IGetByIdService.cs b/src/JsonApiDotNetCore/Services/IGetByIdService.cs index d383cf7afc..3d942e15ce 100644 --- a/src/JsonApiDotNetCore/Services/IGetByIdService.cs +++ b/src/JsonApiDotNetCore/Services/IGetByIdService.cs @@ -4,12 +4,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface IGetByIdService : IGetByIdService - where TResource : class, IIdentifiable - { - } - /// public interface IGetByIdService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/IGetRelationshipService.cs b/src/JsonApiDotNetCore/Services/IGetRelationshipService.cs index 191457172d..b8305105ec 100644 --- a/src/JsonApiDotNetCore/Services/IGetRelationshipService.cs +++ b/src/JsonApiDotNetCore/Services/IGetRelationshipService.cs @@ -6,12 +6,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface IGetRelationshipService : IGetRelationshipService - where TResource : class, IIdentifiable - { - } - /// public interface IGetRelationshipService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/IGetSecondaryService.cs b/src/JsonApiDotNetCore/Services/IGetSecondaryService.cs index 949de5a5ac..a1ebbc5c75 100644 --- a/src/JsonApiDotNetCore/Services/IGetSecondaryService.cs +++ b/src/JsonApiDotNetCore/Services/IGetSecondaryService.cs @@ -6,12 +6,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface IGetSecondaryService : IGetSecondaryService - where TResource : class, IIdentifiable - { - } - /// public interface IGetSecondaryService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/IRemoveFromRelationshipService.cs b/src/JsonApiDotNetCore/Services/IRemoveFromRelationshipService.cs index 12d0889ce1..923753ba44 100644 --- a/src/JsonApiDotNetCore/Services/IRemoveFromRelationshipService.cs +++ b/src/JsonApiDotNetCore/Services/IRemoveFromRelationshipService.cs @@ -7,12 +7,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface IRemoveFromRelationshipService : IRemoveFromRelationshipService - where TResource : class, IIdentifiable - { - } - /// public interface IRemoveFromRelationshipService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/IResourceCommandService.cs b/src/JsonApiDotNetCore/Services/IResourceCommandService.cs index 334fdb26fa..06ad5af8ca 100644 --- a/src/JsonApiDotNetCore/Services/IResourceCommandService.cs +++ b/src/JsonApiDotNetCore/Services/IResourceCommandService.cs @@ -2,19 +2,6 @@ namespace JsonApiDotNetCore.Services { - /// - /// Groups write operations. - /// - /// - /// The resource type. - /// - public interface IResourceCommandService - : ICreateService, IAddToRelationshipService, IUpdateService, ISetRelationshipService, - IDeleteService, IRemoveFromRelationshipService, IResourceCommandService - where TResource : class, IIdentifiable - { - } - /// /// Groups write operations. /// diff --git a/src/JsonApiDotNetCore/Services/IResourceQueryService.cs b/src/JsonApiDotNetCore/Services/IResourceQueryService.cs index 07c89e8643..55b210a7cc 100644 --- a/src/JsonApiDotNetCore/Services/IResourceQueryService.cs +++ b/src/JsonApiDotNetCore/Services/IResourceQueryService.cs @@ -2,19 +2,6 @@ namespace JsonApiDotNetCore.Services { - /// - /// Groups read operations. - /// - /// - /// The resource type. - /// - public interface IResourceQueryService - : IGetAllService, IGetByIdService, IGetRelationshipService, IGetSecondaryService, - IResourceQueryService - where TResource : class, IIdentifiable - { - } - /// /// Groups read operations. /// diff --git a/src/JsonApiDotNetCore/Services/IResourceService.cs b/src/JsonApiDotNetCore/Services/IResourceService.cs index eb1a744c1b..d6910c93b8 100644 --- a/src/JsonApiDotNetCore/Services/IResourceService.cs +++ b/src/JsonApiDotNetCore/Services/IResourceService.cs @@ -2,17 +2,6 @@ namespace JsonApiDotNetCore.Services { - /// - /// Represents the foundational Resource Service layer in the JsonApiDotNetCore architecture that uses a Resource Repository for data access. - /// - /// - /// The resource type. - /// - public interface IResourceService : IResourceCommandService, IResourceQueryService, IResourceService - where TResource : class, IIdentifiable - { - } - /// /// Represents the foundational Resource Service layer in the JsonApiDotNetCore architecture that uses a Resource Repository for data access. /// diff --git a/src/JsonApiDotNetCore/Services/ISetRelationshipService.cs b/src/JsonApiDotNetCore/Services/ISetRelationshipService.cs index 2afc8a175a..bf7f377dba 100644 --- a/src/JsonApiDotNetCore/Services/ISetRelationshipService.cs +++ b/src/JsonApiDotNetCore/Services/ISetRelationshipService.cs @@ -6,12 +6,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface ISetRelationshipService : ISetRelationshipService - where TResource : class, IIdentifiable - { - } - /// public interface ISetRelationshipService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/IUpdateService.cs b/src/JsonApiDotNetCore/Services/IUpdateService.cs index 83e88f6e96..068a6c9b50 100644 --- a/src/JsonApiDotNetCore/Services/IUpdateService.cs +++ b/src/JsonApiDotNetCore/Services/IUpdateService.cs @@ -4,12 +4,6 @@ namespace JsonApiDotNetCore.Services { - /// - public interface IUpdateService : IUpdateService - where TResource : class, IIdentifiable - { - } - /// public interface IUpdateService where TResource : class, IIdentifiable diff --git a/src/JsonApiDotNetCore/Services/JsonApiResourceService.cs b/src/JsonApiDotNetCore/Services/JsonApiResourceService.cs index feb508cf56..798d6c8423 100644 --- a/src/JsonApiDotNetCore/Services/JsonApiResourceService.cs +++ b/src/JsonApiDotNetCore/Services/JsonApiResourceService.cs @@ -493,23 +493,4 @@ private void AssertHasRelationship(RelationshipAttribute relationship, string na } } } - - /// - /// Represents the foundational Resource Service layer in the JsonApiDotNetCore architecture that uses a Resource Repository for data access. - /// - /// - /// The resource type. - /// - [PublicAPI] - public class JsonApiResourceService : JsonApiResourceService, IResourceService - where TResource : class, IIdentifiable - { - public JsonApiResourceService(IResourceRepositoryAccessor repositoryAccessor, IQueryLayerComposer queryLayerComposer, - IPaginationContext paginationContext, IJsonApiOptions options, ILoggerFactory loggerFactory, IJsonApiRequest request, - IResourceChangeTracker resourceChangeTracker, IResourceDefinitionAccessor resourceDefinitionAccessor) - : base(repositoryAccessor, queryLayerComposer, paginationContext, options, loggerFactory, request, resourceChangeTracker, - resourceDefinitionAccessor) - { - } - } } diff --git a/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs b/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs index 1599ae57c2..9b32603e55 100644 --- a/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs +++ b/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs @@ -93,7 +93,7 @@ public void Can_add_resource_service_from_current_assembly_to_container() // Assert ServiceProvider services = _services.BuildServiceProvider(); - var resourceService = services.GetRequiredService>(); + var resourceService = services.GetRequiredService>(); resourceService.Should().BeOfType(); } diff --git a/test/DiscoveryTests/TestResourceService.cs b/test/DiscoveryTests/TestResourceService.cs index f2d565ba4d..f308b403eb 100644 --- a/test/DiscoveryTests/TestResourceService.cs +++ b/test/DiscoveryTests/TestResourceService.cs @@ -10,7 +10,7 @@ namespace DiscoveryTests { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class TestResourceService : JsonApiResourceService + public sealed class TestResourceService : JsonApiResourceService { public TestResourceService(IResourceRepositoryAccessor repositoryAccessor, IQueryLayerComposer queryLayerComposer, IPaginationContext paginationContext, IJsonApiOptions options, ILoggerFactory loggerFactory, IJsonApiRequest request, IResourceChangeTracker resourceChangeTracker, diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastCommentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastCommentsController.cs index a16c0f99d2..8cfbb4cdbf 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastCommentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastCommentsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { public sealed class BroadcastCommentsController : JsonApiController { - public BroadcastCommentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BroadcastCommentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastsController.cs index 3965884bf5..bd3b9832f6 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { public sealed class TelevisionBroadcastsController : JsonApiController { - public TelevisionBroadcastsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public TelevisionBroadcastsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetworksController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetworksController.cs index 8e07ab950e..3c9c89dbd0 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetworksController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetworksController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { public sealed class TelevisionNetworksController : JsonApiController { - public TelevisionNetworksController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public TelevisionNetworksController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStationsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStationsController.cs index 56b6fb8924..aef39f7a94 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStationsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStationsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { public sealed class TelevisionStationsController : JsonApiController { - public TelevisionStationsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public TelevisionStationsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/PerformersController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/PerformersController.cs index 299f8c100e..79921bc122 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/PerformersController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/PerformersController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations { public sealed class PerformersController : JsonApiController { - public PerformersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public PerformersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/DealershipsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/DealershipsController.cs index 4b1f2660f9..8c108f0396 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/DealershipsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/DealershipsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CompositeKeys { public sealed class DealershipsController : JsonApiController { - public DealershipsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public DealershipsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/EnginesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/EnginesController.cs index 3f74015864..aa0a08c48d 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/EnginesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/EnginesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CompositeKeys { public sealed class EnginesController : JsonApiController { - public EnginesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public EnginesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/PoliciesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/PoliciesController.cs index 1f66b21ce4..f690f676c4 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/PoliciesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/PoliciesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ContentNegotiation { public sealed class PoliciesController : JsonApiController { - public PoliciesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public PoliciesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ToothbrushesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ToothbrushesController.cs index c445a1e7ec..5795f074c5 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ToothbrushesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/ToothbrushesController.cs @@ -18,7 +18,7 @@ public sealed class ToothbrushesController : BaseJsonApiController resourceService) + public ToothbrushesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/CiviliansController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/CiviliansController.cs index df398c7b17..562b778669 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/CiviliansController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/CiviliansController.cs @@ -13,7 +13,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CustomRoutes [Route("world-civilians")] public sealed class CiviliansController : JsonApiController { - public CiviliansController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public CiviliansController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/TownsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/TownsController.cs index d62ab493de..b9d63cd03f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/TownsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/TownsController.cs @@ -18,7 +18,8 @@ public sealed class TownsController : JsonApiController { private readonly CustomRouteDbContext _dbContext; - public TownsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService, CustomRouteDbContext dbContext) + public TownsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService, + CustomRouteDbContext dbContext) : base(options, loggerFactory, resourceService) { _dbContext = dbContext; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingsController.cs index 712f114e73..85aafbfb22 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { public sealed class BuildingsController : JsonApiController { - public BuildingsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BuildingsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StatesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StatesController.cs index 23561f6f82..5187a1a061 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StatesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StatesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { public sealed class StatesController : JsonApiController { - public StatesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public StatesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StreetsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StreetsController.cs index 9a2c72f8f9..828ffa47af 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StreetsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/StreetsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { public sealed class StreetsController : JsonApiController { - public StreetsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public StreetsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticleService.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticleService.cs index 1e684ba79b..ce66e0575f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticleService.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticleService.cs @@ -13,7 +13,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ExceptionHandling { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class ConsumerArticleService : JsonApiResourceService + public sealed class ConsumerArticleService : JsonApiResourceService { private const string SupportEmailAddress = "company@email.com"; internal const string UnavailableArticlePrefix = "X"; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticlesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticlesController.cs index 77c803d884..9841432bd6 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticlesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticlesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ExceptionHandling { public sealed class ConsumerArticlesController : JsonApiController { - public ConsumerArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ConsumerArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticlesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticlesController.cs index 6be48358d8..4c519bea9b 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticlesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticlesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ExceptionHandling { public sealed class ThrowingArticlesController : JsonApiController { - public ThrowingArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ThrowingArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGalleriesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGalleriesController.cs index 79ecdc8ccd..07496253a4 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGalleriesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGalleriesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.HostingInIIS { public sealed class ArtGalleriesController : JsonApiController { - public ArtGalleriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ArtGalleriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/PaintingsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/PaintingsController.cs index 6859b64a28..76b222eceb 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/PaintingsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/PaintingsController.cs @@ -11,7 +11,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.HostingInIIS [Route("custom/path/to/paintings-of-the-world")] public sealed class PaintingsController : JsonApiController { - public PaintingsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public PaintingsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/BankAccountsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/BankAccountsController.cs index 304c46b34c..03cdf37d67 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/BankAccountsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/BankAccountsController.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.IdObfuscation { public sealed class BankAccountsController : ObfuscatedIdentifiableController { - public BankAccountsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BankAccountsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/DebitCardsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/DebitCardsController.cs index bed7113897..e023036a82 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/DebitCardsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/DebitCardsController.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.IdObfuscation { public sealed class DebitCardsController : ObfuscatedIdentifiableController { - public DebitCardsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public DebitCardsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs index f4417723c4..245e565359 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiableController.cs @@ -15,7 +15,7 @@ public abstract class ObfuscatedIdentifiableController : BaseJsonApiC { private readonly HexadecimalCodec _codec = new(); - protected ObfuscatedIdentifiableController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + protected ObfuscatedIdentifiableController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectoriesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectoriesController.cs index 43fab0d3b3..b427470fd2 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectoriesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectoriesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.InputValidation.ModelState { public sealed class SystemDirectoriesController : JsonApiController { - public SystemDirectoriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public SystemDirectoriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFilesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFilesController.cs index 182edbe58e..ccc70687fd 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFilesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFilesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.InputValidation.ModelState { public sealed class SystemFilesController : JsonApiController { - public SystemFilesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public SystemFilesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocationsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocationsController.cs index b248a03e49..9e63f1d4f3 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocationsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocationsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Links { public sealed class PhotoLocationsController : JsonApiController { - public PhotoLocationsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public PhotoLocationsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntriesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntriesController.cs index 7eb6de7a7d..9255ee4ab4 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntriesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntriesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Logging { public sealed class AuditEntriesController : JsonApiController { - public AuditEntriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public AuditEntriesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamiliesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamiliesController.cs index 24a47b3ae2..38d2cdd749 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamiliesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamiliesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Meta { public sealed class ProductFamiliesController : JsonApiController { - public ProductFamiliesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ProductFamiliesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketsController.cs index 94b9f33d93..bfaac2b81e 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Meta { public sealed class SupportTicketsController : JsonApiController { - public SupportTicketsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public SupportTicketsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/MultiTenancyTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/MultiTenancyTests.cs index 11c4af8983..02de41e5dd 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/MultiTenancyTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/MultiTenancyTests.cs @@ -37,8 +37,8 @@ public MultiTenancyTests(IntegrationTestContext { - services.AddResourceService>(); - services.AddResourceService>(); + services.AddResourceService>(); + services.AddResourceService>(); }); var options = (JsonApiOptions)_testContext.Factory.Services.GetRequiredService(); diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/MultiTenantResourceService.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/MultiTenantResourceService.cs index 01dbe88bcf..eb67a5f690 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/MultiTenantResourceService.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/MultiTenantResourceService.cs @@ -83,17 +83,4 @@ public override async Task DeleteAsync(TId id, CancellationToken cancellationTok await base.DeleteAsync(id, cancellationToken); } } - - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public class MultiTenantResourceService : MultiTenantResourceService, IResourceService - where TResource : class, IIdentifiable - { - public MultiTenantResourceService(ITenantProvider tenantProvider, IResourceRepositoryAccessor repositoryAccessor, - IQueryLayerComposer queryLayerComposer, IPaginationContext paginationContext, IJsonApiOptions options, ILoggerFactory loggerFactory, - IJsonApiRequest request, IResourceChangeTracker resourceChangeTracker, IResourceDefinitionAccessor resourceDefinitionAccessor) - : base(tenantProvider, repositoryAccessor, queryLayerComposer, paginationContext, options, loggerFactory, request, resourceChangeTracker, - resourceDefinitionAccessor) - { - } - } } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProductsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProductsController.cs index 51f7f46870..75297898b1 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProductsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProductsController.cs @@ -11,7 +11,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.MultiTenancy [Route("{countryCode}/products")] public sealed class WebProductsController : JsonApiController { - public WebProductsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public WebProductsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShopsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShopsController.cs index e36f8eadd5..0758f91554 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShopsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShopsController.cs @@ -11,7 +11,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.MultiTenancy [Route("{countryCode}/shops")] public sealed class WebShopsController : JsonApiController { - public WebShopsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public WebShopsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoardsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoardsController.cs index 32172d908f..87256faa2e 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoardsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoardsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.NamingConventions { public sealed class DivingBoardsController : JsonApiController { - public DivingBoardsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public DivingBoardsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPoolsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPoolsController.cs index 2ea7433d59..2de9b97e03 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPoolsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPoolsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.NamingConventions { public sealed class SwimmingPoolsController : JsonApiController { - public SwimmingPoolsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public SwimmingPoolsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPostsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPostsController.cs index b684677cf9..2a2ee3119a 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPostsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPostsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { public sealed class BlogPostsController : JsonApiController { - public BlogPostsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BlogPostsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogsController.cs index 3644929b0b..51d4dfeb13 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { public sealed class BlogsController : JsonApiController { - public BlogsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BlogsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CalendarsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CalendarsController.cs index b0c9d725e8..4edc4c8717 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CalendarsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CalendarsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { public sealed class CalendarsController : JsonApiController { - public CalendarsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public CalendarsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CommentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CommentsController.cs index a32dc34009..03fe435b7a 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CommentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/CommentsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { public sealed class CommentsController : JsonApiController { - public CommentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public CommentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResourcesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResourcesController.cs index 6f6f72de0f..9bd506f13f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResourcesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResourcesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings.Filtering { public sealed class FilterableResourcesController : JsonApiController { - public FilterableResourcesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public FilterableResourcesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccountsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccountsController.cs index 5b6fe80a85..e765cfa10c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccountsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccountsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { public sealed class WebAccountsController : JsonApiController { - public WebAccountsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public WebAccountsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItemsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItemsController.cs index caa2cb9cfd..596d90ac20 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItemsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItemsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ReadWrite { public sealed class WorkItemsController : JsonApiController { - public WorkItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public WorkItemsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/CustomersController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/CustomersController.cs index eee7369f9f..19f64705b0 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/CustomersController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/CustomersController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { public sealed class CustomersController : JsonApiController { - public CustomersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public CustomersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/OrdersController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/OrdersController.cs index 964a38c7ed..3641c46fa2 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/OrdersController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/OrdersController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { public sealed class OrdersController : JsonApiController { - public OrdersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public OrdersController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/ShipmentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/ShipmentsController.cs index e7b29af012..2741bd4976 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/ShipmentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/ShipmentsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { public sealed class ShipmentsController : JsonApiController { - public ShipmentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ShipmentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificatesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificatesController.cs index 687e71bbc9..0a52142cfc 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificatesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificatesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceConstructorInjection { public sealed class GiftCertificatesController : JsonApiController { - public GiftCertificatesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public GiftCertificatesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOfficesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOfficesController.cs index 53d3818bef..96a4f682b5 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOfficesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOfficesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceConstructorInjection { public sealed class PostOfficesController : JsonApiController { - public PostOfficesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public PostOfficesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonsController.cs index cdbdc68059..7d8f04afde 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { public sealed class MoonsController : JsonApiController { - public MoonsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public MoonsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetsController.cs index 9df44f7013..7339ca3b11 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { public sealed class PlanetsController : JsonApiController { - public PlanetsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public PlanetsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarsController.cs index 50a4ede988..c3b3c27b19 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { public sealed class StarsController : JsonApiController { - public StarsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public StarsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/ScholarshipsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/ScholarshipsController.cs index 0040c5b356..9b31290bff 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/ScholarshipsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/ScholarshipsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Serializat { public sealed class ScholarshipsController : JsonApiController { - public ScholarshipsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ScholarshipsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentsController.cs index ae68eedc12..4cab2a0eba 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Serializat { public sealed class StudentsController : JsonApiController { - public StudentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public StudentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/MenController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/MenController.cs index 5ae29d30a3..0aafe62ffa 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/MenController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/MenController.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceInheritance { public sealed class MenController : JsonApiController { - public MenController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public MenController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpDeleteController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpDeleteController.cs index cee04886ed..276da8391c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpDeleteController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpDeleteController.cs @@ -11,7 +11,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers [DisableQueryString(JsonApiQueryStringParameters.Sort | JsonApiQueryStringParameters.Page)] public sealed class BlockingHttpDeleteController : JsonApiController { - public BlockingHttpDeleteController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BlockingHttpDeleteController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPatchController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPatchController.cs index 64a36d367f..633e01339a 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPatchController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPatchController.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers [NoHttpPatch] public sealed class BlockingHttpPatchController : JsonApiController { - public BlockingHttpPatchController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BlockingHttpPatchController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPostController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPostController.cs index 507fac3eca..2ae093edb6 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPostController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingHttpPostController.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers [NoHttpPost] public sealed class BlockingHttpPostController : JsonApiController { - public BlockingHttpPostController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService
resourceService) + public BlockingHttpPostController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingWritesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingWritesController.cs index 0c6cfd69a3..be140f6643 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingWritesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/BlockingWritesController.cs @@ -10,7 +10,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers [DisableQueryString("skipCache")] public sealed class BlockingWritesController : JsonApiController { - public BlockingWritesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public BlockingWritesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/CompaniesController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/CompaniesController.cs index b908df5bac..2f29996efa 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/CompaniesController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/CompaniesController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.SoftDeletion { public sealed class CompaniesController : JsonApiController { - public CompaniesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public CompaniesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/DepartmentsController.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/DepartmentsController.cs index 3cc82e344c..f4ce9e82d8 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/DepartmentsController.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/DepartmentsController.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.SoftDeletion { public sealed class DepartmentsController : JsonApiController { - public DepartmentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public DepartmentsController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionAwareResourceService.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionAwareResourceService.cs index 6c5cd0aa98..e1947b03bd 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionAwareResourceService.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionAwareResourceService.cs @@ -112,17 +112,4 @@ private static bool IsSoftDeletable(Type resourceClrType) return typeof(ISoftDeletable).IsAssignableFrom(resourceClrType); } } - - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public class SoftDeletionAwareResourceService : SoftDeletionAwareResourceService, IResourceService - where TResource : class, IIdentifiable - { - public SoftDeletionAwareResourceService(ISystemClock systemClock, ITargetedFields targetedFields, IResourceRepositoryAccessor repositoryAccessor, - IQueryLayerComposer queryLayerComposer, IPaginationContext paginationContext, IJsonApiOptions options, ILoggerFactory loggerFactory, - IJsonApiRequest request, IResourceChangeTracker resourceChangeTracker, IResourceDefinitionAccessor resourceDefinitionAccessor) - : base(systemClock, targetedFields, repositoryAccessor, queryLayerComposer, paginationContext, options, loggerFactory, request, - resourceChangeTracker, resourceDefinitionAccessor) - { - } - } } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionTests.cs index 702aa7cee3..2aabd08bb1 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/SoftDeletionTests.cs @@ -38,8 +38,8 @@ public SoftDeletionTests(IntegrationTestContext>(); - services.AddResourceService>(); + services.AddResourceService>(); + services.AddResourceService>(); }); } diff --git a/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs b/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs index 71287a5469..301e05302d 100644 --- a/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs +++ b/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs @@ -25,7 +25,7 @@ public sealed class BaseJsonApiControllerTests public async Task GetAsync_Calls_Service() { // Arrange - var serviceMock = new Mock>(); + var serviceMock = new Mock>(); var controller = new ResourceController(new JsonApiOptions(), NullLoggerFactory.Instance, serviceMock.Object); // Act @@ -55,7 +55,7 @@ public async Task GetAsyncById_Calls_Service() { // Arrange const int id = 0; - var serviceMock = new Mock>(); + var serviceMock = new Mock>(); var controller = new ResourceController(new JsonApiOptions(), NullLoggerFactory.Instance, getById: serviceMock.Object); // Act @@ -87,7 +87,7 @@ public async Task GetRelationshipsAsync_Calls_Service() // Arrange const int id = 0; const string relationshipName = "articles"; - var serviceMock = new Mock>(); + var serviceMock = new Mock>(); var controller = new ResourceController(new JsonApiOptions(), NullLoggerFactory.Instance, getRelationship: serviceMock.Object); // Act @@ -119,7 +119,7 @@ public async Task GetRelationshipAsync_Calls_Service() // Arrange const int id = 0; const string relationshipName = "articles"; - var serviceMock = new Mock>(); + var serviceMock = new Mock>(); var controller = new ResourceController(new JsonApiOptions(), NullLoggerFactory.Instance, getSecondary: serviceMock.Object); // Act @@ -151,7 +151,7 @@ public async Task PatchAsync_Calls_Service() // Arrange const int id = 0; var resource = new Resource(); - var serviceMock = new Mock>(); + var serviceMock = new Mock>(); var controller = new ResourceController(new JsonApiOptions(), NullLoggerFactory.Instance, update: serviceMock.Object); @@ -184,7 +184,7 @@ public async Task PostAsync_Calls_Service() { // Arrange var resource = new Resource(); - var serviceMock = new Mock>(); + var serviceMock = new Mock>(); var controller = new ResourceController(new JsonApiOptions(), NullLoggerFactory.Instance, create: serviceMock.Object); serviceMock.Setup(service => service.CreateAsync(It.IsAny(), It.IsAny())).ReturnsAsync(resource); @@ -207,7 +207,7 @@ public async Task PatchRelationshipsAsync_Calls_Service() // Arrange const int id = 0; const string relationshipName = "articles"; - var serviceMock = new Mock>(); + var serviceMock = new Mock>(); var controller = new ResourceController(new JsonApiOptions(), NullLoggerFactory.Instance, setRelationship: serviceMock.Object); // Act @@ -238,7 +238,7 @@ public async Task DeleteAsync_Calls_Service() { // Arrange const int id = 0; - var serviceMock = new Mock>(); + var serviceMock = new Mock>(); var controller = new ResourceController(new JsonApiOptions(), NullLoggerFactory.Instance, delete: serviceMock.Object); // Act @@ -273,7 +273,7 @@ public sealed class Resource : Identifiable private sealed class ResourceController : BaseJsonApiController { - public ResourceController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) + public ResourceController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs b/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs index d9d148f46a..13835d3997 100644 --- a/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs +++ b/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs @@ -51,16 +51,16 @@ public void AddResourceService_Registers_All_Shorthand_Service_Interfaces() // Assert ServiceProvider provider = services.BuildServiceProvider(); - Assert.IsType(provider.GetRequiredService(typeof(IResourceService))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceCommandService))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceQueryService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetAllService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetByIdService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetSecondaryService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetRelationshipService))); - Assert.IsType(provider.GetRequiredService(typeof(ICreateService))); - Assert.IsType(provider.GetRequiredService(typeof(IUpdateService))); - Assert.IsType(provider.GetRequiredService(typeof(IDeleteService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceCommandService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceQueryService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetAllService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetByIdService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetSecondaryService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetRelationshipService))); + Assert.IsType(provider.GetRequiredService(typeof(ICreateService))); + Assert.IsType(provider.GetRequiredService(typeof(IUpdateService))); + Assert.IsType(provider.GetRequiredService(typeof(IDeleteService))); } [Fact] @@ -188,7 +188,7 @@ private sealed class GuidResource : Identifiable } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class IntResourceService : IResourceService + private sealed class IntResourceService : IResourceService { public Task> GetAsync(CancellationToken cancellationToken) { From d294ead0c8562aeeb9297f4d9dd0e7bb642fa78f Mon Sep 17 00:00:00 2001 From: Bart Koelman Date: Fri, 8 Oct 2021 15:02:56 +0200 Subject: [PATCH 4/7] Removed single-parameter resource repositories --- .../Repositories/DbContextARepository.cs | 2 +- .../Repositories/DbContextBRepository.cs | 2 +- .../JsonApiApplicationBuilder.cs | 3 +-- .../Configuration/ServiceDiscoveryFacade.cs | 3 --- .../EntityFrameworkCoreRepository.cs | 15 ------------- .../Repositories/IResourceReadRepository.cs | 6 ----- .../Repositories/IResourceRepository.cs | 14 +----------- .../Repositories/IResourceWriteRepository.cs | 6 ----- .../ResourceRepositoryAccessor.cs | 22 ------------------- .../ServiceDiscoveryFacadeTests.cs | 2 +- test/DiscoveryTests/TestResourceRepository.cs | 2 +- .../Transactions/PerformerRepository.cs | 2 +- .../CarCompositeKeyAwareRepository.cs | 12 ---------- .../CompositeKeys/CompositeKeyTests.cs | 2 +- .../EagerLoading/BuildingRepository.cs | 2 +- .../ResultCapturingRepository.cs | 4 ++-- .../SparseFieldSets/SparseFieldSetTests.cs | 6 ++--- .../ServiceCollectionExtensionsTests.cs | 8 +++---- 18 files changed, 18 insertions(+), 95 deletions(-) diff --git a/src/Examples/MultiDbContextExample/Repositories/DbContextARepository.cs b/src/Examples/MultiDbContextExample/Repositories/DbContextARepository.cs index fc5d58efd9..820c78f241 100644 --- a/src/Examples/MultiDbContextExample/Repositories/DbContextARepository.cs +++ b/src/Examples/MultiDbContextExample/Repositories/DbContextARepository.cs @@ -10,7 +10,7 @@ namespace MultiDbContextExample.Repositories { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class DbContextARepository : EntityFrameworkCoreRepository + public sealed class DbContextARepository : EntityFrameworkCoreRepository where TResource : class, IIdentifiable { public DbContextARepository(ITargetedFields targetedFields, DbContextResolver dbContextResolver, IResourceGraph resourceGraph, diff --git a/src/Examples/MultiDbContextExample/Repositories/DbContextBRepository.cs b/src/Examples/MultiDbContextExample/Repositories/DbContextBRepository.cs index 7c1ef16ec7..98156a7295 100644 --- a/src/Examples/MultiDbContextExample/Repositories/DbContextBRepository.cs +++ b/src/Examples/MultiDbContextExample/Repositories/DbContextBRepository.cs @@ -10,7 +10,7 @@ namespace MultiDbContextExample.Repositories { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class DbContextBRepository : EntityFrameworkCoreRepository + public sealed class DbContextBRepository : EntityFrameworkCoreRepository where TResource : class, IIdentifiable { public DbContextBRepository(ITargetedFields targetedFields, DbContextResolver dbContextResolver, IResourceGraph resourceGraph, diff --git a/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs b/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs index 52dfb8315c..a3d901729c 100644 --- a/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs +++ b/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs @@ -190,8 +190,7 @@ private void AddResourceLayer() private void AddRepositoryLayer() { - RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.RepositoryInterfaces, typeof(EntityFrameworkCoreRepository<>), - typeof(EntityFrameworkCoreRepository<,>)); + RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.RepositoryInterfaces, null, typeof(EntityFrameworkCoreRepository<,>)); _services.AddScoped(); } diff --git a/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs b/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs index d9c47ea801..eba40ca1b3 100644 --- a/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs +++ b/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs @@ -36,11 +36,8 @@ public sealed class ServiceDiscoveryFacade internal static readonly HashSet RepositoryInterfaces = new() { - typeof(IResourceRepository<>), typeof(IResourceRepository<,>), - typeof(IResourceWriteRepository<>), typeof(IResourceWriteRepository<,>), - typeof(IResourceReadRepository<>), typeof(IResourceReadRepository<,>) }; diff --git a/src/JsonApiDotNetCore/Repositories/EntityFrameworkCoreRepository.cs b/src/JsonApiDotNetCore/Repositories/EntityFrameworkCoreRepository.cs index 802d9cb100..f8c79d7a12 100644 --- a/src/JsonApiDotNetCore/Repositories/EntityFrameworkCoreRepository.cs +++ b/src/JsonApiDotNetCore/Repositories/EntityFrameworkCoreRepository.cs @@ -584,19 +584,4 @@ protected virtual async Task SaveChangesAsync(CancellationToken cancellationToke } } } - - /// - /// Implements the foundational Repository layer in the JsonApiDotNetCore architecture that uses Entity Framework Core. - /// - [PublicAPI] - public class EntityFrameworkCoreRepository : EntityFrameworkCoreRepository, IResourceRepository - where TResource : class, IIdentifiable - { - public EntityFrameworkCoreRepository(ITargetedFields targetedFields, IDbContextResolver dbContextResolver, IResourceGraph resourceGraph, - IResourceFactory resourceFactory, IEnumerable constraintProviders, ILoggerFactory loggerFactory, - IResourceDefinitionAccessor resourceDefinitionAccessor) - : base(targetedFields, dbContextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor) - { - } - } } diff --git a/src/JsonApiDotNetCore/Repositories/IResourceReadRepository.cs b/src/JsonApiDotNetCore/Repositories/IResourceReadRepository.cs index a75d95c213..438a9c9390 100644 --- a/src/JsonApiDotNetCore/Repositories/IResourceReadRepository.cs +++ b/src/JsonApiDotNetCore/Repositories/IResourceReadRepository.cs @@ -8,12 +8,6 @@ namespace JsonApiDotNetCore.Repositories { - /// - public interface IResourceReadRepository : IResourceReadRepository - where TResource : class, IIdentifiable - { - } - /// /// Groups read operations. /// diff --git a/src/JsonApiDotNetCore/Repositories/IResourceRepository.cs b/src/JsonApiDotNetCore/Repositories/IResourceRepository.cs index d43e355f06..4f20bcaca1 100644 --- a/src/JsonApiDotNetCore/Repositories/IResourceRepository.cs +++ b/src/JsonApiDotNetCore/Repositories/IResourceRepository.cs @@ -3,19 +3,6 @@ namespace JsonApiDotNetCore.Repositories { - /// - /// Represents the foundational Resource Repository layer in the JsonApiDotNetCore architecture that provides data access to an underlying store. - /// - /// - /// The resource type. - /// - [PublicAPI] - public interface IResourceRepository - : IResourceRepository, IResourceReadRepository, IResourceWriteRepository - where TResource : class, IIdentifiable - { - } - /// /// Represents the foundational Resource Repository layer in the JsonApiDotNetCore architecture that provides data access to an underlying store. /// @@ -25,6 +12,7 @@ public interface IResourceRepository /// /// The resource identifier type. /// + [PublicAPI] public interface IResourceRepository : IResourceReadRepository, IResourceWriteRepository where TResource : class, IIdentifiable { diff --git a/src/JsonApiDotNetCore/Repositories/IResourceWriteRepository.cs b/src/JsonApiDotNetCore/Repositories/IResourceWriteRepository.cs index 9cdfee02fd..9b92f951d1 100644 --- a/src/JsonApiDotNetCore/Repositories/IResourceWriteRepository.cs +++ b/src/JsonApiDotNetCore/Repositories/IResourceWriteRepository.cs @@ -7,12 +7,6 @@ namespace JsonApiDotNetCore.Repositories { - /// - public interface IResourceWriteRepository : IResourceWriteRepository - where TResource : class, IIdentifiable - { - } - /// /// Groups write operations. /// diff --git a/src/JsonApiDotNetCore/Repositories/ResourceRepositoryAccessor.cs b/src/JsonApiDotNetCore/Repositories/ResourceRepositoryAccessor.cs index 1e71016a15..975a26805c 100644 --- a/src/JsonApiDotNetCore/Repositories/ResourceRepositoryAccessor.cs +++ b/src/JsonApiDotNetCore/Repositories/ResourceRepositoryAccessor.cs @@ -130,17 +130,6 @@ protected object ResolveReadRepository(Type resourceClrType) protected virtual object ResolveReadRepository(ResourceType resourceType) { - if (resourceType.IdentityClrType == typeof(int)) - { - Type intRepositoryType = typeof(IResourceReadRepository<>).MakeGenericType(resourceType.ClrType); - object intRepository = _serviceProvider.GetService(intRepositoryType); - - if (intRepository != null) - { - return intRepository; - } - } - Type resourceDefinitionType = typeof(IResourceReadRepository<,>).MakeGenericType(resourceType.ClrType, resourceType.IdentityClrType); return _serviceProvider.GetRequiredService(resourceDefinitionType); } @@ -170,17 +159,6 @@ protected virtual object ResolveWriteRepository(Type resourceClrType) { ResourceType resourceType = _resourceGraph.GetResourceType(resourceClrType); - if (resourceType.IdentityClrType == typeof(int)) - { - Type intRepositoryType = typeof(IResourceWriteRepository<>).MakeGenericType(resourceType.ClrType); - object intRepository = _serviceProvider.GetService(intRepositoryType); - - if (intRepository != null) - { - return intRepository; - } - } - Type resourceDefinitionType = typeof(IResourceWriteRepository<,>).MakeGenericType(resourceType.ClrType, resourceType.IdentityClrType); return _serviceProvider.GetRequiredService(resourceDefinitionType); } diff --git a/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs b/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs index 9b32603e55..705d1e3fa6 100644 --- a/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs +++ b/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs @@ -110,7 +110,7 @@ public void Can_add_resource_repository_from_current_assembly_to_container() // Assert ServiceProvider services = _services.BuildServiceProvider(); - var resourceRepository = services.GetRequiredService>(); + var resourceRepository = services.GetRequiredService>(); resourceRepository.Should().BeOfType(); } diff --git a/test/DiscoveryTests/TestResourceRepository.cs b/test/DiscoveryTests/TestResourceRepository.cs index a42d1603f3..00644e14d7 100644 --- a/test/DiscoveryTests/TestResourceRepository.cs +++ b/test/DiscoveryTests/TestResourceRepository.cs @@ -9,7 +9,7 @@ namespace DiscoveryTests { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class TestResourceRepository : EntityFrameworkCoreRepository + public sealed class TestResourceRepository : EntityFrameworkCoreRepository { public TestResourceRepository(ITargetedFields targetedFields, IDbContextResolver dbContextResolver, IResourceGraph resourceGraph, IResourceFactory resourceFactory, IEnumerable constraintProviders, ILoggerFactory loggerFactory, diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Transactions/PerformerRepository.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Transactions/PerformerRepository.cs index 75f68434f8..da6f3c9539 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Transactions/PerformerRepository.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Transactions/PerformerRepository.cs @@ -11,7 +11,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations.Transactions { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class PerformerRepository : IResourceRepository + public sealed class PerformerRepository : IResourceRepository { public Task> GetAsync(QueryLayer layer, CancellationToken cancellationToken) { diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CarCompositeKeyAwareRepository.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CarCompositeKeyAwareRepository.cs index 035d18a1c9..6f0543fd2f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CarCompositeKeyAwareRepository.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CarCompositeKeyAwareRepository.cs @@ -52,16 +52,4 @@ private void RecursiveRewriteFilterInLayer(QueryLayer queryLayer) } } } - - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public class CarCompositeKeyAwareRepository : CarCompositeKeyAwareRepository, IResourceRepository - where TResource : class, IIdentifiable - { - public CarCompositeKeyAwareRepository(ITargetedFields targetedFields, IDbContextResolver dbContextResolver, IResourceGraph resourceGraph, - IResourceFactory resourceFactory, IEnumerable constraintProviders, ILoggerFactory loggerFactory, - IResourceDefinitionAccessor resourceDefinitionAccessor) - : base(targetedFields, dbContextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor) - { - } - } } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CompositeKeyTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CompositeKeyTests.cs index 1eff765ccd..70ba5c4539 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CompositeKeyTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CompositeKeyTests.cs @@ -28,7 +28,7 @@ public CompositeKeyTests(IntegrationTestContext { services.AddResourceRepository>(); - services.AddResourceRepository>(); + services.AddResourceRepository>(); }); var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService(); diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingRepository.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingRepository.cs index 4c32d6d3a6..a822baebd2 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingRepository.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/BuildingRepository.cs @@ -11,7 +11,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class BuildingRepository : EntityFrameworkCoreRepository + public sealed class BuildingRepository : EntityFrameworkCoreRepository { public BuildingRepository(ITargetedFields targetedFields, IDbContextResolver dbContextResolver, IResourceGraph resourceGraph, IResourceFactory resourceFactory, IEnumerable constraintProviders, ILoggerFactory loggerFactory, diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/SparseFieldSets/ResultCapturingRepository.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/SparseFieldSets/ResultCapturingRepository.cs index d2c9a3e780..55f8f7a0b0 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/SparseFieldSets/ResultCapturingRepository.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/SparseFieldSets/ResultCapturingRepository.cs @@ -14,8 +14,8 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings.SparseFieldSets /// Enables sparse fieldset tests to verify which fields were (not) retrieved from the database. /// [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class ResultCapturingRepository : EntityFrameworkCoreRepository - where TResource : class, IIdentifiable + public sealed class ResultCapturingRepository : EntityFrameworkCoreRepository + where TResource : class, IIdentifiable { private readonly ResourceCaptureStore _captureStore; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/SparseFieldSets/SparseFieldSetTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/SparseFieldSets/SparseFieldSetTests.cs index c393d8197b..083dcf8e4f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/SparseFieldSets/SparseFieldSetTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/SparseFieldSets/SparseFieldSetTests.cs @@ -29,9 +29,9 @@ public SparseFieldSetTests(IntegrationTestContext(); - services.AddResourceRepository>(); - services.AddResourceRepository>(); - services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); + services.AddResourceRepository>(); }); } diff --git a/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs b/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs index 13835d3997..6eb6d69355 100644 --- a/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs +++ b/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs @@ -110,9 +110,9 @@ public void AddResourceRepository_Registers_All_Shorthand_Repository_Interfaces( // Assert ServiceProvider provider = services.BuildServiceProvider(); - Assert.IsType(provider.GetRequiredService(typeof(IResourceRepository))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceReadRepository))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceWriteRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceReadRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceWriteRepository))); } [Fact] @@ -300,7 +300,7 @@ public Task RemoveFromToManyRelationshipAsync(Guid leftId, string relationshipNa } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class IntResourceRepository : IResourceRepository + private sealed class IntResourceRepository : IResourceRepository { public Task> GetAsync(QueryLayer layer, CancellationToken cancellationToken) { From 29e5c84fbd17f036d5d3f9251bd60b236322cab8 Mon Sep 17 00:00:00 2001 From: Bart Koelman Date: Fri, 8 Oct 2021 15:30:51 +0200 Subject: [PATCH 5/7] Removed single-parameter resource definitions --- .../DeserializationBenchmarkBase.cs | 2 +- .../Definitions/TodoItemDefinition.cs | 2 +- .../JsonApiApplicationBuilder.cs | 13 +- .../ServiceCollectionExtensions.cs | 23 +-- .../Configuration/ServiceDiscoveryFacade.cs | 1 - .../IRepositorySupportsTransaction.cs | 2 +- .../Resources/IResourceDefinition.cs | 12 -- .../Resources/JsonApiResourceDefinition.cs | 17 -- .../Resources/ResourceDefinitionAccessor.cs | 11 - .../ServiceDiscoveryFacadeTests.cs | 2 +- test/DiscoveryTests/TestResourceDefinition.cs | 2 +- .../TelevisionBroadcastDefinition.cs | 2 +- .../Meta/SupportTicketDefinition.cs | 2 +- .../ImplicitlyChangingWorkItemDefinition.cs | 2 +- .../RemoveFromToManyRelationshipTests.cs | 10 +- .../Reading/MoonDefinition.cs | 2 +- .../Reading/PlanetDefinition.cs | 2 +- .../Reading/StarDefinition.cs | 2 +- .../Serialization/StudentDefinition.cs | 2 +- .../Serialization/InputConversionTests.cs | 4 +- .../ServiceCollectionExtensionsTests.cs | 193 +++++++++--------- 21 files changed, 126 insertions(+), 182 deletions(-) diff --git a/benchmarks/Deserialization/DeserializationBenchmarkBase.cs b/benchmarks/Deserialization/DeserializationBenchmarkBase.cs index a99861b562..c8c29f0af0 100644 --- a/benchmarks/Deserialization/DeserializationBenchmarkBase.cs +++ b/benchmarks/Deserialization/DeserializationBenchmarkBase.cs @@ -30,7 +30,7 @@ protected DeserializationBenchmarkBase() var resourceDefinitionAccessor = new ResourceDefinitionAccessor(resourceGraph, serviceContainer); serviceContainer.AddService(typeof(IResourceDefinitionAccessor), resourceDefinitionAccessor); - serviceContainer.AddService(typeof(IResourceDefinition), new JsonApiResourceDefinition(resourceGraph)); + serviceContainer.AddService(typeof(IResourceDefinition), new JsonApiResourceDefinition(resourceGraph)); // ReSharper disable once VirtualMemberCallInConstructor JsonApiRequest request = CreateJsonApiRequest(resourceGraph); diff --git a/src/Examples/JsonApiDotNetCoreExample/Definitions/TodoItemDefinition.cs b/src/Examples/JsonApiDotNetCoreExample/Definitions/TodoItemDefinition.cs index 927bed7f57..ddf19c5a43 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Definitions/TodoItemDefinition.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Definitions/TodoItemDefinition.cs @@ -12,7 +12,7 @@ namespace JsonApiDotNetCoreExample.Definitions { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class TodoItemDefinition : JsonApiResourceDefinition + public sealed class TodoItemDefinition : JsonApiResourceDefinition { private readonly ISystemClock _systemClock; diff --git a/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs b/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs index a3d901729c..5b6f479ba3 100644 --- a/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs +++ b/src/JsonApiDotNetCore/Configuration/JsonApiApplicationBuilder.cs @@ -181,8 +181,7 @@ private void AddMiddlewareLayer() private void AddResourceLayer() { - RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.ResourceDefinitionInterfaces, typeof(JsonApiResourceDefinition<>), - typeof(JsonApiResourceDefinition<,>)); + RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.ResourceDefinitionInterfaces, typeof(JsonApiResourceDefinition<,>)); _services.AddScoped(); _services.AddScoped(); @@ -190,24 +189,20 @@ private void AddResourceLayer() private void AddRepositoryLayer() { - RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.RepositoryInterfaces, null, typeof(EntityFrameworkCoreRepository<,>)); + RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.RepositoryInterfaces, typeof(EntityFrameworkCoreRepository<,>)); _services.AddScoped(); } private void AddServiceLayer() { - RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.ServiceInterfaces, null, typeof(JsonApiResourceService<,>)); + RegisterImplementationForOpenInterfaces(ServiceDiscoveryFacade.ServiceInterfaces, typeof(JsonApiResourceService<,>)); } - private void RegisterImplementationForOpenInterfaces(HashSet openGenericInterfaces, Type intImplementation, Type implementation) + private void RegisterImplementationForOpenInterfaces(HashSet openGenericInterfaces, Type implementationType) { foreach (Type openGenericInterface in openGenericInterfaces) { - Type implementationType = openGenericInterface.GetGenericArguments().Length == 1 && intImplementation != null - ? intImplementation - : implementation; - _services.TryAddScoped(openGenericInterface, implementationType); } } diff --git a/src/JsonApiDotNetCore/Configuration/ServiceCollectionExtensions.cs b/src/JsonApiDotNetCore/Configuration/ServiceCollectionExtensions.cs index 9accf54219..f217852bc8 100644 --- a/src/JsonApiDotNetCore/Configuration/ServiceCollectionExtensions.cs +++ b/src/JsonApiDotNetCore/Configuration/ServiceCollectionExtensions.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Reflection; using JetBrains.Annotations; using JsonApiDotNetCore.Errors; using JsonApiDotNetCore.Repositories; @@ -56,8 +55,8 @@ private static void SetupApplicationBuilder(IServiceCollection services, Action< } /// - /// Adds IoC container registrations for the various JsonApiDotNetCore resource service interfaces, such as , - /// and the various others. + /// Adds IoC container registrations for the various JsonApiDotNetCore resource service interfaces, such as , + /// and the various others. /// public static IServiceCollection AddResourceService(this IServiceCollection services) { @@ -70,7 +69,7 @@ public static IServiceCollection AddResourceService(this IServiceColle /// /// Adds IoC container registrations for the various JsonApiDotNetCore resource repository interfaces, such as - /// and . + /// and . /// public static IServiceCollection AddResourceRepository(this IServiceCollection services) { @@ -83,7 +82,7 @@ public static IServiceCollection AddResourceRepository(this IServic /// /// Adds IoC container registrations for the various JsonApiDotNetCore resource definition interfaces, such as - /// and . + /// . /// public static IServiceCollection AddResourceDefinition(this IServiceCollection services) { @@ -103,19 +102,7 @@ private static void RegisterForConstructedType(IServiceCollection services, Type { foreach (Type openGenericInterface in openGenericInterfaces) { - // A shorthand interface is one where the ID type is omitted. - // e.g. IResourceService is the shorthand for IResourceService - bool isShorthandInterface = openGenericInterface.GetTypeInfo().GenericTypeParameters.Length == 1; - - if (isShorthandInterface && resourceDescriptor.IdClrType != typeof(int)) - { - // We can't create a shorthand for ID types other than int. - continue; - } - - Type constructedType = isShorthandInterface - ? openGenericInterface.MakeGenericType(resourceDescriptor.ResourceClrType) - : openGenericInterface.MakeGenericType(resourceDescriptor.ResourceClrType, resourceDescriptor.IdClrType); + Type constructedType = openGenericInterface.MakeGenericType(resourceDescriptor.ResourceClrType, resourceDescriptor.IdClrType); if (constructedType.IsAssignableFrom(implementationType)) { diff --git a/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs b/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs index eba40ca1b3..cdd6a65031 100644 --- a/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs +++ b/src/JsonApiDotNetCore/Configuration/ServiceDiscoveryFacade.cs @@ -43,7 +43,6 @@ public sealed class ServiceDiscoveryFacade internal static readonly HashSet ResourceDefinitionInterfaces = new() { - typeof(IResourceDefinition<>), typeof(IResourceDefinition<,>) }; diff --git a/src/JsonApiDotNetCore/Repositories/IRepositorySupportsTransaction.cs b/src/JsonApiDotNetCore/Repositories/IRepositorySupportsTransaction.cs index 4a59e98a75..e654d288b7 100644 --- a/src/JsonApiDotNetCore/Repositories/IRepositorySupportsTransaction.cs +++ b/src/JsonApiDotNetCore/Repositories/IRepositorySupportsTransaction.cs @@ -3,7 +3,7 @@ namespace JsonApiDotNetCore.Repositories { /// - /// Used to indicate that an supports execution inside a transaction. + /// Used to indicate that an supports execution inside a transaction. /// [PublicAPI] public interface IRepositorySupportsTransaction diff --git a/src/JsonApiDotNetCore/Resources/IResourceDefinition.cs b/src/JsonApiDotNetCore/Resources/IResourceDefinition.cs index a310790fdc..fa79da4f2c 100644 --- a/src/JsonApiDotNetCore/Resources/IResourceDefinition.cs +++ b/src/JsonApiDotNetCore/Resources/IResourceDefinition.cs @@ -10,18 +10,6 @@ namespace JsonApiDotNetCore.Resources { - /// - /// Provides an extensibility point to add business logic that is resource-oriented instead of endpoint-oriented. - /// - /// - /// The resource type. - /// - [PublicAPI] - public interface IResourceDefinition : IResourceDefinition - where TResource : class, IIdentifiable - { - } - /// /// Provides an extensibility point to add business logic that is resource-oriented instead of endpoint-oriented. /// diff --git a/src/JsonApiDotNetCore/Resources/JsonApiResourceDefinition.cs b/src/JsonApiDotNetCore/Resources/JsonApiResourceDefinition.cs index b4110b28cd..21a2f6cccf 100644 --- a/src/JsonApiDotNetCore/Resources/JsonApiResourceDefinition.cs +++ b/src/JsonApiDotNetCore/Resources/JsonApiResourceDefinition.cs @@ -14,23 +14,6 @@ namespace JsonApiDotNetCore.Resources { - /// - /// Provides a resource-centric extensibility point for executing custom code when something happens with a resource. The goal here is to reduce the need - /// for overriding the service and repository layers. - /// - /// - /// The resource type. - /// - [PublicAPI] - public class JsonApiResourceDefinition : JsonApiResourceDefinition, IResourceDefinition - where TResource : class, IIdentifiable - { - public JsonApiResourceDefinition(IResourceGraph resourceGraph) - : base(resourceGraph) - { - } - } - /// [PublicAPI] public class JsonApiResourceDefinition : IResourceDefinition diff --git a/src/JsonApiDotNetCore/Resources/ResourceDefinitionAccessor.cs b/src/JsonApiDotNetCore/Resources/ResourceDefinitionAccessor.cs index 36e8f008d3..b5982ceb4d 100644 --- a/src/JsonApiDotNetCore/Resources/ResourceDefinitionAccessor.cs +++ b/src/JsonApiDotNetCore/Resources/ResourceDefinitionAccessor.cs @@ -200,17 +200,6 @@ protected object ResolveResourceDefinition(Type resourceClrType) protected virtual object ResolveResourceDefinition(ResourceType resourceType) { - if (resourceType.IdentityClrType == typeof(int)) - { - Type intResourceDefinitionType = typeof(IResourceDefinition<>).MakeGenericType(resourceType.ClrType); - object intResourceDefinition = _serviceProvider.GetService(intResourceDefinitionType); - - if (intResourceDefinition != null) - { - return intResourceDefinition; - } - } - Type resourceDefinitionType = typeof(IResourceDefinition<,>).MakeGenericType(resourceType.ClrType, resourceType.IdentityClrType); return _serviceProvider.GetRequiredService(resourceDefinitionType); } diff --git a/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs b/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs index 705d1e3fa6..798ddf0bcf 100644 --- a/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs +++ b/test/DiscoveryTests/ServiceDiscoveryFacadeTests.cs @@ -127,7 +127,7 @@ public void Can_add_resource_definition_from_current_assembly_to_container() // Assert ServiceProvider services = _services.BuildServiceProvider(); - var resourceDefinition = services.GetRequiredService>(); + var resourceDefinition = services.GetRequiredService>(); resourceDefinition.Should().BeOfType(); } } diff --git a/test/DiscoveryTests/TestResourceDefinition.cs b/test/DiscoveryTests/TestResourceDefinition.cs index f327916d4f..318a36642b 100644 --- a/test/DiscoveryTests/TestResourceDefinition.cs +++ b/test/DiscoveryTests/TestResourceDefinition.cs @@ -5,7 +5,7 @@ namespace DiscoveryTests { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class TestResourceDefinition : JsonApiResourceDefinition + public sealed class TestResourceDefinition : JsonApiResourceDefinition { public TestResourceDefinition(IResourceGraph resourceGraph) : base(resourceGraph) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastDefinition.cs index f6b7148e3e..88dc9dbf43 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastDefinition.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcastDefinition.cs @@ -18,7 +18,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class TelevisionBroadcastDefinition : JsonApiResourceDefinition + public sealed class TelevisionBroadcastDefinition : JsonApiResourceDefinition { private readonly TelevisionDbContext _dbContext; private readonly IJsonApiRequest _request; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketDefinition.cs index 99d7b0af77..234a9049de 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketDefinition.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicketDefinition.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Meta { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class SupportTicketDefinition : JsonApiResourceDefinition + public sealed class SupportTicketDefinition : JsonApiResourceDefinition { private readonly ResourceDefinitionHitCounter _hitCounter; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/ImplicitlyChangingWorkItemDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/ImplicitlyChangingWorkItemDefinition.cs index bac9be6cc9..6f8a90b69c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/ImplicitlyChangingWorkItemDefinition.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/ImplicitlyChangingWorkItemDefinition.cs @@ -12,7 +12,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ReadWrite /// Used to simulate side effects that occur in the database while saving, typically caused by database triggers. /// [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class ImplicitlyChangingWorkItemDefinition : JsonApiResourceDefinition + public sealed class ImplicitlyChangingWorkItemDefinition : JsonApiResourceDefinition { internal const string Suffix = " (changed)"; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Updating/Relationships/RemoveFromToManyRelationshipTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Updating/Relationships/RemoveFromToManyRelationshipTests.cs index 0d97f78a2f..6d076a10f0 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Updating/Relationships/RemoveFromToManyRelationshipTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Updating/Relationships/RemoveFromToManyRelationshipTests.cs @@ -32,10 +32,10 @@ public RemoveFromToManyRelationshipTests(IntegrationTestContext { - services.AddSingleton, RemoveExtraFromWorkItemDefinition>(); + services.AddSingleton, RemoveExtraFromWorkItemDefinition>(); }); - var workItemDefinition = (RemoveExtraFromWorkItemDefinition)testContext.Factory.Services.GetRequiredService>(); + var workItemDefinition = (RemoveExtraFromWorkItemDefinition)testContext.Factory.Services.GetRequiredService>(); workItemDefinition.Reset(); } @@ -147,7 +147,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => await dbContext.SaveChangesAsync(); }); - var workItemDefinition = (RemoveExtraFromWorkItemDefinition)_testContext.Factory.Services.GetRequiredService>(); + var workItemDefinition = (RemoveExtraFromWorkItemDefinition)_testContext.Factory.Services.GetRequiredService>(); workItemDefinition.ExtraSubscribersIdsToRemove.Add(existingWorkItem.Subscribers.ElementAt(2).Id); var requestBody = new @@ -255,7 +255,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => await dbContext.SaveChangesAsync(); }); - var workItemDefinition = (RemoveExtraFromWorkItemDefinition)_testContext.Factory.Services.GetRequiredService>(); + var workItemDefinition = (RemoveExtraFromWorkItemDefinition)_testContext.Factory.Services.GetRequiredService>(); workItemDefinition.ExtraTagIdsToRemove.Add(existingWorkItem.Tags.ElementAt(2).Id); var requestBody = new @@ -1020,7 +1020,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class RemoveExtraFromWorkItemDefinition : JsonApiResourceDefinition + private sealed class RemoveExtraFromWorkItemDefinition : JsonApiResourceDefinition { // Enables to verify that not the full relationship was loaded upfront. public ISet PreloadedSubscribers { get; } = new HashSet(IdentifiableComparer.Instance); diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonDefinition.cs index 13709920ca..5cc3594e0c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonDefinition.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/MoonDefinition.cs @@ -10,7 +10,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class MoonDefinition : JsonApiResourceDefinition + public sealed class MoonDefinition : JsonApiResourceDefinition { private readonly IClientSettingsProvider _clientSettingsProvider; private readonly ResourceDefinitionHitCounter _hitCounter; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetDefinition.cs index 820074667c..dbffc76cb7 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetDefinition.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/PlanetDefinition.cs @@ -12,7 +12,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class PlanetDefinition : JsonApiResourceDefinition + public sealed class PlanetDefinition : JsonApiResourceDefinition { private readonly IClientSettingsProvider _clientSettingsProvider; private readonly ResourceDefinitionHitCounter _hitCounter; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarDefinition.cs index 1ac33675be..9f56700299 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarDefinition.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/StarDefinition.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class StarDefinition : JsonApiResourceDefinition + public sealed class StarDefinition : JsonApiResourceDefinition { private readonly ResourceDefinitionHitCounter _hitCounter; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentDefinition.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentDefinition.cs index b1a2776c06..fa1a2d2bf9 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentDefinition.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/StudentDefinition.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Serialization { [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - public sealed class StudentDefinition : JsonApiResourceDefinition + public sealed class StudentDefinition : JsonApiResourceDefinition { private readonly IEncryptionService _encryptionService; private readonly ResourceDefinitionHitCounter _hitCounter; diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/InputConversionTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/InputConversionTests.cs index 5bca89bad2..341effc4cc 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/InputConversionTests.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/InputConversionTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.Design; using FluentAssertions; @@ -248,7 +248,7 @@ private static DocumentAdapter CreateDocumentAdapter(Func), new JsonApiResourceDefinition(resourceGraph)); + serviceContainer.AddService(typeof(IResourceDefinition), new JsonApiResourceDefinition(resourceGraph)); JsonApiRequest request = createRequest(resourceGraph); var targetedFields = new TargetedFields(); diff --git a/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs b/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs index 6eb6d69355..8583eb6b37 100644 --- a/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs +++ b/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs @@ -41,49 +41,49 @@ public void RegisterResource_DeviatingDbContextPropertyName_RegistersCorrectly() } [Fact] - public void AddResourceService_Registers_All_Shorthand_Service_Interfaces() + public void AddResourceService_Registers_Service_Interfaces_Of_Int32() { // Arrange var services = new ServiceCollection(); // Act - services.AddResourceService(); + services.AddResourceService(); // Assert ServiceProvider provider = services.BuildServiceProvider(); - Assert.IsType(provider.GetRequiredService(typeof(IResourceService))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceCommandService))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceQueryService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetAllService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetByIdService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetSecondaryService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetRelationshipService))); - Assert.IsType(provider.GetRequiredService(typeof(ICreateService))); - Assert.IsType(provider.GetRequiredService(typeof(IUpdateService))); - Assert.IsType(provider.GetRequiredService(typeof(IDeleteService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceCommandService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceQueryService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetAllService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetByIdService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetSecondaryService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetRelationshipService))); + Assert.IsType(provider.GetRequiredService(typeof(ICreateService))); + Assert.IsType(provider.GetRequiredService(typeof(IUpdateService))); + Assert.IsType(provider.GetRequiredService(typeof(IDeleteService))); } [Fact] - public void AddResourceService_Registers_All_LongForm_Service_Interfaces() + public void AddResourceService_Registers_Service_Interfaces_Of_Guid() { // Arrange var services = new ServiceCollection(); // Act - services.AddResourceService(); + services.AddResourceService(); // Assert ServiceProvider provider = services.BuildServiceProvider(); - Assert.IsType(provider.GetRequiredService(typeof(IResourceService))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceCommandService))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceQueryService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetAllService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetByIdService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetSecondaryService))); - Assert.IsType(provider.GetRequiredService(typeof(IGetRelationshipService))); - Assert.IsType(provider.GetRequiredService(typeof(ICreateService))); - Assert.IsType(provider.GetRequiredService(typeof(IUpdateService))); - Assert.IsType(provider.GetRequiredService(typeof(IDeleteService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceCommandService))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceQueryService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetAllService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetByIdService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetSecondaryService))); + Assert.IsType(provider.GetRequiredService(typeof(IGetRelationshipService))); + Assert.IsType(provider.GetRequiredService(typeof(ICreateService))); + Assert.IsType(provider.GetRequiredService(typeof(IUpdateService))); + Assert.IsType(provider.GetRequiredService(typeof(IDeleteService))); } [Fact] @@ -100,63 +100,63 @@ public void AddResourceService_Throws_If_Type_Does_Not_Implement_Any_Interfaces( } [Fact] - public void AddResourceRepository_Registers_All_Shorthand_Repository_Interfaces() + public void AddResourceRepository_Registers_Repository_Interfaces_Of_Int32() { // Arrange var services = new ServiceCollection(); // Act - services.AddResourceRepository(); + services.AddResourceRepository(); // Assert ServiceProvider provider = services.BuildServiceProvider(); - Assert.IsType(provider.GetRequiredService(typeof(IResourceRepository))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceReadRepository))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceWriteRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceReadRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceWriteRepository))); } [Fact] - public void AddResourceRepository_Registers_All_LongForm_Repository_Interfaces() + public void AddResourceRepository_Registers_Repository_Interfaces_Of_Guid() { // Arrange var services = new ServiceCollection(); // Act - services.AddResourceRepository(); + services.AddResourceRepository(); // Assert ServiceProvider provider = services.BuildServiceProvider(); - Assert.IsType(provider.GetRequiredService(typeof(IResourceRepository))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceReadRepository))); - Assert.IsType(provider.GetRequiredService(typeof(IResourceWriteRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceReadRepository))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceWriteRepository))); } [Fact] - public void AddResourceDefinition_Registers_Shorthand_Definition_Interface() + public void AddResourceDefinition_Registers_Definition_Interface_Of_Int32() { // Arrange var services = new ServiceCollection(); // Act - services.AddResourceDefinition(); + services.AddResourceDefinition(); // Assert ServiceProvider provider = services.BuildServiceProvider(); - Assert.IsType(provider.GetRequiredService(typeof(IResourceDefinition))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceDefinition))); } [Fact] - public void AddResourceDefinition_Registers_LongForm_Definition_Interface() + public void AddResourceDefinition_Registers_Definition_Interface_Of_Guid() { // Arrange var services = new ServiceCollection(); // Act - services.AddResourceDefinition(); + services.AddResourceDefinition(); // Assert ServiceProvider provider = services.BuildServiceProvider(); - Assert.IsType(provider.GetRequiredService(typeof(IResourceDefinition))); + Assert.IsType(provider.GetRequiredService(typeof(IResourceDefinition))); } [Fact] @@ -174,28 +174,28 @@ public void AddJsonApi_With_Context_Uses_Resource_Type_Name_If_NoOtherSpecified( ServiceProvider provider = services.BuildServiceProvider(); var resourceGraph = provider.GetRequiredService(); - ResourceType intResourceType = resourceGraph.GetResourceType(typeof(IntResource)); - Assert.Equal("intResources", intResourceType.PublicName); + ResourceType intResourceType = resourceGraph.GetResourceType(typeof(ResourceOfInt32)); + Assert.Equal("resourceOfInt32s", intResourceType.PublicName); } - private sealed class IntResource : Identifiable + private sealed class ResourceOfInt32 : Identifiable { } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class GuidResource : Identifiable + private sealed class ResourceOfGuid : Identifiable { } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class IntResourceService : IResourceService + private sealed class ResourceServiceOfInt32 : IResourceService { - public Task> GetAsync(CancellationToken cancellationToken) + public Task> GetAsync(CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task GetAsync(int id, CancellationToken cancellationToken) + public Task GetAsync(int id, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -210,7 +210,7 @@ public Task GetRelationshipAsync(int id, string relationshipName, Cancel throw new NotImplementedException(); } - public Task CreateAsync(IntResource resource, CancellationToken cancellationToken) + public Task CreateAsync(ResourceOfInt32 resource, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -221,7 +221,7 @@ public Task AddToToManyRelationshipAsync(int leftId, string relationshipName, IS throw new NotImplementedException(); } - public Task UpdateAsync(int id, IntResource resource, CancellationToken cancellationToken) + public Task UpdateAsync(int id, ResourceOfInt32 resource, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -244,14 +244,14 @@ public Task RemoveFromToManyRelationshipAsync(int leftId, string relationshipNam } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class GuidResourceService : IResourceService + private sealed class ResourceServiceOfGuid : IResourceService { - public Task> GetAsync(CancellationToken cancellationToken) + public Task> GetAsync(CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task GetAsync(Guid id, CancellationToken cancellationToken) + public Task GetAsync(Guid id, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -266,7 +266,7 @@ public Task GetRelationshipAsync(Guid id, string relationshipName, Cance throw new NotImplementedException(); } - public Task CreateAsync(GuidResource resource, CancellationToken cancellationToken) + public Task CreateAsync(ResourceOfGuid resource, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -277,7 +277,7 @@ public Task AddToToManyRelationshipAsync(Guid leftId, string relationshipName, I throw new NotImplementedException(); } - public Task UpdateAsync(Guid id, GuidResource resource, CancellationToken cancellationToken) + public Task UpdateAsync(Guid id, ResourceOfGuid resource, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -300,9 +300,9 @@ public Task RemoveFromToManyRelationshipAsync(Guid leftId, string relationshipNa } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class IntResourceRepository : IResourceRepository + private sealed class ResourceRepositoryOfInt32 : IResourceRepository { - public Task> GetAsync(QueryLayer layer, CancellationToken cancellationToken) + public Task> GetAsync(QueryLayer layer, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -312,22 +312,22 @@ public Task CountAsync(FilterExpression topFilter, CancellationToken cancel throw new NotImplementedException(); } - public Task GetForCreateAsync(int id, CancellationToken cancellationToken) + public Task GetForCreateAsync(int id, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task CreateAsync(IntResource resourceFromRequest, IntResource resourceForDatabase, CancellationToken cancellationToken) + public Task CreateAsync(ResourceOfInt32 resourceFromRequest, ResourceOfInt32 resourceForDatabase, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task GetForUpdateAsync(QueryLayer queryLayer, CancellationToken cancellationToken) + public Task GetForUpdateAsync(QueryLayer queryLayer, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task UpdateAsync(IntResource resourceFromRequest, IntResource resourceFromDatabase, CancellationToken cancellationToken) + public Task UpdateAsync(ResourceOfInt32 resourceFromRequest, ResourceOfInt32 resourceFromDatabase, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -337,7 +337,7 @@ public Task DeleteAsync(int id, CancellationToken cancellationToken) throw new NotImplementedException(); } - public Task SetRelationshipAsync(IntResource leftResource, object rightValue, CancellationToken cancellationToken) + public Task SetRelationshipAsync(ResourceOfInt32 leftResource, object rightValue, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -347,16 +347,17 @@ public Task AddToToManyRelationshipAsync(int leftId, ISet rightRe throw new NotImplementedException(); } - public Task RemoveFromToManyRelationshipAsync(IntResource leftResource, ISet rightResourceIds, CancellationToken cancellationToken) + public Task RemoveFromToManyRelationshipAsync(ResourceOfInt32 leftResource, ISet rightResourceIds, + CancellationToken cancellationToken) { throw new NotImplementedException(); } } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class GuidResourceRepository : IResourceRepository + private sealed class ResourceRepositoryOfGuid : IResourceRepository { - public Task> GetAsync(QueryLayer layer, CancellationToken cancellationToken) + public Task> GetAsync(QueryLayer layer, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -366,22 +367,22 @@ public Task CountAsync(FilterExpression topFilter, CancellationToken cancel throw new NotImplementedException(); } - public Task GetForCreateAsync(Guid id, CancellationToken cancellationToken) + public Task GetForCreateAsync(Guid id, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task CreateAsync(GuidResource resourceFromRequest, GuidResource resourceForDatabase, CancellationToken cancellationToken) + public Task CreateAsync(ResourceOfGuid resourceFromRequest, ResourceOfGuid resourceForDatabase, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task GetForUpdateAsync(QueryLayer queryLayer, CancellationToken cancellationToken) + public Task GetForUpdateAsync(QueryLayer queryLayer, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task UpdateAsync(GuidResource resourceFromRequest, GuidResource resourceFromDatabase, CancellationToken cancellationToken) + public Task UpdateAsync(ResourceOfGuid resourceFromRequest, ResourceOfGuid resourceFromDatabase, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -391,7 +392,7 @@ public Task DeleteAsync(Guid id, CancellationToken cancellationToken) throw new NotImplementedException(); } - public Task SetRelationshipAsync(GuidResource leftResource, object rightValue, CancellationToken cancellationToken) + public Task SetRelationshipAsync(ResourceOfGuid leftResource, object rightValue, CancellationToken cancellationToken) { throw new NotImplementedException(); } @@ -401,14 +402,15 @@ public Task AddToToManyRelationshipAsync(Guid leftId, ISet rightR throw new NotImplementedException(); } - public Task RemoveFromToManyRelationshipAsync(GuidResource leftResource, ISet rightResourceIds, CancellationToken cancellationToken) + public Task RemoveFromToManyRelationshipAsync(ResourceOfGuid leftResource, ISet rightResourceIds, + CancellationToken cancellationToken) { throw new NotImplementedException(); } } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class IntResourceDefinition : IResourceDefinition + private sealed class ResourceDefinitionOfInt32 : IResourceDefinition { public IImmutableSet OnApplyIncludes(IImmutableSet existingIncludes) { @@ -435,28 +437,28 @@ public SparseFieldSetExpression OnApplySparseFieldSet(SparseFieldSetExpression e throw new NotImplementedException(); } - public QueryStringParameterHandlers OnRegisterQueryableHandlersForQueryStringParameters() + public QueryStringParameterHandlers OnRegisterQueryableHandlersForQueryStringParameters() { throw new NotImplementedException(); } - public IDictionary GetMeta(IntResource resource) + public IDictionary GetMeta(ResourceOfInt32 resource) { throw new NotImplementedException(); } - public Task OnPrepareWriteAsync(IntResource resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) + public Task OnPrepareWriteAsync(ResourceOfInt32 resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task OnSetToOneRelationshipAsync(IntResource leftResource, HasOneAttribute hasOneRelationship, IIdentifiable rightResourceId, - WriteOperationKind writeOperation, CancellationToken cancellationToken) + public Task OnSetToOneRelationshipAsync(ResourceOfInt32 leftResource, HasOneAttribute hasOneRelationship, + IIdentifiable rightResourceId, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task OnSetToManyRelationshipAsync(IntResource leftResource, HasManyAttribute hasManyRelationship, ISet rightResourceIds, + public Task OnSetToManyRelationshipAsync(ResourceOfInt32 leftResource, HasManyAttribute hasManyRelationship, ISet rightResourceIds, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); @@ -468,35 +470,35 @@ public Task OnAddToRelationshipAsync(int leftResourceId, HasManyAttribute hasMan throw new NotImplementedException(); } - public Task OnRemoveFromRelationshipAsync(IntResource leftResource, HasManyAttribute hasManyRelationship, ISet rightResourceIds, + public Task OnRemoveFromRelationshipAsync(ResourceOfInt32 leftResource, HasManyAttribute hasManyRelationship, ISet rightResourceIds, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task OnWritingAsync(IntResource resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) + public Task OnWritingAsync(ResourceOfInt32 resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task OnWriteSucceededAsync(IntResource resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) + public Task OnWriteSucceededAsync(ResourceOfInt32 resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public void OnDeserialize(IntResource resource) + public void OnDeserialize(ResourceOfInt32 resource) { throw new NotImplementedException(); } - public void OnSerialize(IntResource resource) + public void OnSerialize(ResourceOfInt32 resource) { throw new NotImplementedException(); } } [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class GuidResourceDefinition : IResourceDefinition + private sealed class ResourceDefinitionOfGuid : IResourceDefinition { public IImmutableSet OnApplyIncludes(IImmutableSet existingIncludes) { @@ -523,28 +525,28 @@ public SparseFieldSetExpression OnApplySparseFieldSet(SparseFieldSetExpression e throw new NotImplementedException(); } - public QueryStringParameterHandlers OnRegisterQueryableHandlersForQueryStringParameters() + public QueryStringParameterHandlers OnRegisterQueryableHandlersForQueryStringParameters() { throw new NotImplementedException(); } - public IDictionary GetMeta(GuidResource resource) + public IDictionary GetMeta(ResourceOfGuid resource) { throw new NotImplementedException(); } - public Task OnPrepareWriteAsync(GuidResource resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) + public Task OnPrepareWriteAsync(ResourceOfGuid resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task OnSetToOneRelationshipAsync(GuidResource leftResource, HasOneAttribute hasOneRelationship, IIdentifiable rightResourceId, - WriteOperationKind writeOperation, CancellationToken cancellationToken) + public Task OnSetToOneRelationshipAsync(ResourceOfGuid leftResource, HasOneAttribute hasOneRelationship, + IIdentifiable rightResourceId, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task OnSetToManyRelationshipAsync(GuidResource leftResource, HasManyAttribute hasManyRelationship, ISet rightResourceIds, + public Task OnSetToManyRelationshipAsync(ResourceOfGuid leftResource, HasManyAttribute hasManyRelationship, ISet rightResourceIds, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); @@ -556,28 +558,28 @@ public Task OnAddToRelationshipAsync(Guid leftResourceId, HasManyAttribute hasMa throw new NotImplementedException(); } - public Task OnRemoveFromRelationshipAsync(GuidResource leftResource, HasManyAttribute hasManyRelationship, ISet rightResourceIds, + public Task OnRemoveFromRelationshipAsync(ResourceOfGuid leftResource, HasManyAttribute hasManyRelationship, ISet rightResourceIds, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task OnWritingAsync(GuidResource resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) + public Task OnWritingAsync(ResourceOfGuid resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public Task OnWriteSucceededAsync(GuidResource resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) + public Task OnWriteSucceededAsync(ResourceOfGuid resource, WriteOperationKind writeOperation, CancellationToken cancellationToken) { throw new NotImplementedException(); } - public void OnDeserialize(GuidResource resource) + public void OnDeserialize(ResourceOfGuid resource) { throw new NotImplementedException(); } - public void OnSerialize(GuidResource resource) + public void OnSerialize(ResourceOfGuid resource) { throw new NotImplementedException(); } @@ -586,7 +588,8 @@ public void OnSerialize(GuidResource resource) [UsedImplicitly(ImplicitUseTargetFlags.Members)] private sealed class TestDbContext : DbContext { - public DbSet Resource { get; set; } + public DbSet ResourcesOfInt32 { get; set; } + public DbSet ResourcesOfGuid { get; set; } public DbSet People { get; set; } public TestDbContext(DbContextOptions options) From 4a44dc48974477aea9a38e77eb80ca6fdf85797f Mon Sep 17 00:00:00 2001 From: Bart Koelman Date: Fri, 8 Oct 2021 16:27:39 +0200 Subject: [PATCH 6/7] Removed non-generic Identifiable and throw for resource classes that only implement IIdentifiable (without ID) when building the resource graph --- benchmarks/BenchmarkResource.cs | 2 +- .../DeserializationBenchmarkBase.cs | 2 +- .../SerializationBenchmarkBase.cs | 2 +- benchmarks/SubResource.cs | 2 +- src/Examples/GettingStarted/Models/Book.cs | 2 +- src/Examples/GettingStarted/Models/Person.cs | 2 +- .../JsonApiDotNetCoreExample/Models/Person.cs | 2 +- .../JsonApiDotNetCoreExample/Models/Tag.cs | 2 +- .../Models/TodoItem.cs | 2 +- .../MultiDbContextExample/Models/ResourceA.cs | 2 +- .../MultiDbContextExample/Models/ResourceB.cs | 2 +- .../Models/WorkItem.cs | 2 +- src/Examples/ReportsExample/Models/Report.cs | 2 +- .../Configuration/JsonApiValidationFilter.cs | 2 +- .../Configuration/ResourceGraphBuilder.cs | 12 +++- .../Queries/Internal/Parsing/FilterParser.cs | 4 +- .../Queries/Internal/QueryLayerComposer.cs | 2 +- .../Queries/Internal/SparseFieldSetCache.cs | 2 +- ...parseFieldSetQueryStringParameterReader.cs | 2 +- .../Resources/IIdentifiable.cs | 5 +- .../Resources/Identifiable.cs | 8 +-- .../Resources/IdentifiableExtensions.cs | 2 +- .../JsonConverters/ResourceObjectConverter.cs | 2 +- .../Serialization/Response/LinkBuilder.cs | 10 +++- .../Response/ResponseModelAdapter.cs | 2 +- test/DiscoveryTests/TestResource.cs | 2 +- .../Archiving/BroadcastComment.cs | 2 +- .../Archiving/TelevisionBroadcast.cs | 2 +- .../Archiving/TelevisionNetwork.cs | 2 +- .../Archiving/TelevisionStation.cs | 2 +- .../AtomicOperations/Performer.cs | 2 +- .../CompositeKeys/CarExpressionRewriter.cs | 2 +- .../CompositeKeys/Dealership.cs | 2 +- .../IntegrationTests/CompositeKeys/Engine.cs | 2 +- .../ContentNegotiation/Policy.cs | 2 +- .../ControllerActionResults/Toothbrush.cs | 2 +- .../IntegrationTests/CustomRoutes/Civilian.cs | 2 +- .../IntegrationTests/CustomRoutes/Town.cs | 2 +- .../IntegrationTests/EagerLoading/Building.cs | 2 +- .../IntegrationTests/EagerLoading/City.cs | 2 +- .../IntegrationTests/EagerLoading/State.cs | 2 +- .../IntegrationTests/EagerLoading/Street.cs | 2 +- .../ExceptionHandling/ConsumerArticle.cs | 2 +- .../ExceptionHandling/ThrowingArticle.cs | 2 +- .../HostingInIIS/ArtGallery.cs | 2 +- .../IntegrationTests/HostingInIIS/Painting.cs | 2 +- .../IdObfuscation/ObfuscatedIdentifiable.cs | 2 +- .../ModelState/SystemDirectory.cs | 2 +- .../InputValidation/ModelState/SystemFile.cs | 2 +- .../IntegrationTests/Links/PhotoLocation.cs | 2 +- .../IntegrationTests/Logging/AuditEntry.cs | 2 +- .../IntegrationTests/Meta/ProductFamily.cs | 2 +- .../IntegrationTests/Meta/SupportTicket.cs | 2 +- .../MultiTenancy/WebProduct.cs | 2 +- .../IntegrationTests/MultiTenancy/WebShop.cs | 2 +- .../NamingConventions/DivingBoard.cs | 2 +- .../NamingConventions/SwimmingPool.cs | 2 +- .../NamingConventions/WaterSlide.cs | 2 +- .../QueryStrings/AccountPreferences.cs | 2 +- .../QueryStrings/Appointment.cs | 2 +- .../IntegrationTests/QueryStrings/Blog.cs | 2 +- .../IntegrationTests/QueryStrings/BlogPost.cs | 2 +- .../IntegrationTests/QueryStrings/Calendar.cs | 2 +- .../IntegrationTests/QueryStrings/Comment.cs | 2 +- .../Filtering/FilterableResource.cs | 2 +- .../IntegrationTests/QueryStrings/Label.cs | 2 +- .../QueryStrings/LoginAttempt.cs | 2 +- .../QueryStrings/WebAccount.cs | 2 +- .../ReadWrite/Creating/CreateResourceTests.cs | 6 +- ...reateResourceWithClientGeneratedIdTests.cs | 8 +-- .../Updating/Resources/UpdateResourceTests.cs | 4 +- .../IntegrationTests/ReadWrite/WorkItem.cs | 2 +- .../IntegrationTests/ReadWrite/WorkTag.cs | 2 +- .../RequiredRelationships/Customer.cs | 2 +- .../RequiredRelationships/Order.cs | 2 +- .../RequiredRelationships/Shipment.cs | 2 +- .../GiftCertificate.cs | 2 +- .../PostOffice.cs | 2 +- .../ResourceDefinitions/Reading/Moon.cs | 2 +- .../ResourceDefinitions/Reading/Planet.cs | 2 +- .../ResourceDefinitions/Reading/Star.cs | 2 +- .../Serialization/Scholarship.cs | 2 +- .../Serialization/Student.cs | 2 +- .../ResourceInheritance/Models/ContentItem.cs | 2 +- .../Models/HealthInsurance.cs | 2 +- .../ResourceInheritance/Models/Human.cs | 2 +- .../RestrictedControllers/Bed.cs | 2 +- .../RestrictedControllers/Chair.cs | 2 +- .../RestrictedControllers/Sofa.cs | 2 +- .../RestrictedControllers/Table.cs | 2 +- .../IntegrationTests/SoftDeletion/Company.cs | 2 +- .../SoftDeletion/Department.cs | 2 +- .../DependencyContainerRegistrationTests.cs | 2 +- .../UnitTests/Links/LinkInclusionTests.cs | 2 +- .../Serialization/InputConversionTests.cs | 4 +- .../Serialization/Response/Models/Article.cs | 2 +- .../Serialization/Response/Models/Blog.cs | 4 +- .../Serialization/Response/Models/Food.cs | 4 +- .../Serialization/Response/Models/Person.cs | 4 +- .../Serialization/Response/Models/Song.cs | 2 +- test/TestBuildingBlocks/Unknown.cs | 2 +- .../Builders/ResourceGraphBuilderTests.cs | 8 +-- .../Controllers/BaseJsonApiControllerTests.cs | 2 +- .../ServiceCollectionExtensionsTests.cs | 4 +- test/UnitTests/Graph/Model.cs | 2 +- .../Internal/ResourceGraphBuilderTests.cs | 59 +++++++++---------- .../Middleware/JsonApiRequestTests.cs | 6 +- test/UnitTests/Models/IdentifiableTests.cs | 2 +- .../Models/ResourceWithStringConstructor.cs | 2 +- .../Models/ResourceWithThrowingConstructor.cs | 2 +- .../Models/ResourceWithoutConstructor.cs | 2 +- test/UnitTests/TestModels/Article.cs | 2 +- test/UnitTests/TestModels/BaseModel.cs | 2 +- test/UnitTests/TestModels/Blog.cs | 2 +- test/UnitTests/TestModels/Food.cs | 2 +- .../TestModels/IdentifiableWithAttribute.cs | 2 +- test/UnitTests/TestModels/Person.cs | 2 +- test/UnitTests/TestModels/Song.cs | 2 +- test/UnitTests/TestModels/TestResource.cs | 2 +- .../TestResourceWithAbstractRelationship.cs | 2 +- .../TestModels/TestResourceWithList.cs | 2 +- 121 files changed, 181 insertions(+), 179 deletions(-) diff --git a/benchmarks/BenchmarkResource.cs b/benchmarks/BenchmarkResource.cs index acc1511844..ad18d999c7 100644 --- a/benchmarks/BenchmarkResource.cs +++ b/benchmarks/BenchmarkResource.cs @@ -5,7 +5,7 @@ namespace Benchmarks { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class BenchmarkResource : Identifiable + public sealed class BenchmarkResource : Identifiable { [Attr(PublicName = BenchmarkResourcePublicNames.NameAttr)] public string Name { get; set; } diff --git a/benchmarks/Deserialization/DeserializationBenchmarkBase.cs b/benchmarks/Deserialization/DeserializationBenchmarkBase.cs index c8c29f0af0..5ceff85a2d 100644 --- a/benchmarks/Deserialization/DeserializationBenchmarkBase.cs +++ b/benchmarks/Deserialization/DeserializationBenchmarkBase.cs @@ -56,7 +56,7 @@ protected DeserializationBenchmarkBase() protected abstract JsonApiRequest CreateJsonApiRequest(IResourceGraph resourceGraph); [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class ResourceA : Identifiable + public sealed class ResourceA : Identifiable { [Attr] public bool Attribute01 { get; set; } diff --git a/benchmarks/Serialization/SerializationBenchmarkBase.cs b/benchmarks/Serialization/SerializationBenchmarkBase.cs index 716169423b..41fa9776b6 100644 --- a/benchmarks/Serialization/SerializationBenchmarkBase.cs +++ b/benchmarks/Serialization/SerializationBenchmarkBase.cs @@ -64,7 +64,7 @@ protected SerializationBenchmarkBase() protected abstract IEvaluatedIncludeCache CreateEvaluatedIncludeCache(IResourceGraph resourceGraph); [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class ResourceA : Identifiable + public sealed class ResourceA : Identifiable { [Attr] public bool Attribute01 { get; set; } diff --git a/benchmarks/SubResource.cs b/benchmarks/SubResource.cs index 73536a87ae..9d0f95bbcf 100644 --- a/benchmarks/SubResource.cs +++ b/benchmarks/SubResource.cs @@ -5,7 +5,7 @@ namespace Benchmarks { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class SubResource : Identifiable + public sealed class SubResource : Identifiable { [Attr] public string Value { get; set; } diff --git a/src/Examples/GettingStarted/Models/Book.cs b/src/Examples/GettingStarted/Models/Book.cs index 9f15d3e3c9..f636dd54e1 100644 --- a/src/Examples/GettingStarted/Models/Book.cs +++ b/src/Examples/GettingStarted/Models/Book.cs @@ -5,7 +5,7 @@ namespace GettingStarted.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Book : Identifiable + public sealed class Book : Identifiable { [Attr] public string Title { get; set; } diff --git a/src/Examples/GettingStarted/Models/Person.cs b/src/Examples/GettingStarted/Models/Person.cs index 495a4fe27b..52a95ac330 100644 --- a/src/Examples/GettingStarted/Models/Person.cs +++ b/src/Examples/GettingStarted/Models/Person.cs @@ -6,7 +6,7 @@ namespace GettingStarted.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Person : Identifiable + public sealed class Person : Identifiable { [Attr] public string Name { get; set; } diff --git a/src/Examples/JsonApiDotNetCoreExample/Models/Person.cs b/src/Examples/JsonApiDotNetCoreExample/Models/Person.cs index 0f30ab3bf6..4d7d3369fa 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Models/Person.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Models/Person.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreExample.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Person : Identifiable + public sealed class Person : Identifiable { [Attr] public string FirstName { get; set; } diff --git a/src/Examples/JsonApiDotNetCoreExample/Models/Tag.cs b/src/Examples/JsonApiDotNetCoreExample/Models/Tag.cs index e0f5d0894c..03fb527c4b 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Models/Tag.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Models/Tag.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreExample.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Tag : Identifiable + public sealed class Tag : Identifiable { [Required] [MinLength(1)] diff --git a/src/Examples/JsonApiDotNetCoreExample/Models/TodoItem.cs b/src/Examples/JsonApiDotNetCoreExample/Models/TodoItem.cs index dbc0c59a04..cc6341bdb2 100644 --- a/src/Examples/JsonApiDotNetCoreExample/Models/TodoItem.cs +++ b/src/Examples/JsonApiDotNetCoreExample/Models/TodoItem.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreExample.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TodoItem : Identifiable + public sealed class TodoItem : Identifiable { [Attr] public string Description { get; set; } diff --git a/src/Examples/MultiDbContextExample/Models/ResourceA.cs b/src/Examples/MultiDbContextExample/Models/ResourceA.cs index 85cbf2b89a..f536237f14 100644 --- a/src/Examples/MultiDbContextExample/Models/ResourceA.cs +++ b/src/Examples/MultiDbContextExample/Models/ResourceA.cs @@ -5,7 +5,7 @@ namespace MultiDbContextExample.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class ResourceA : Identifiable + public sealed class ResourceA : Identifiable { [Attr] public string NameA { get; set; } diff --git a/src/Examples/MultiDbContextExample/Models/ResourceB.cs b/src/Examples/MultiDbContextExample/Models/ResourceB.cs index dd1739ee49..55a3d79a59 100644 --- a/src/Examples/MultiDbContextExample/Models/ResourceB.cs +++ b/src/Examples/MultiDbContextExample/Models/ResourceB.cs @@ -5,7 +5,7 @@ namespace MultiDbContextExample.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class ResourceB : Identifiable + public sealed class ResourceB : Identifiable { [Attr] public string NameB { get; set; } diff --git a/src/Examples/NoEntityFrameworkExample/Models/WorkItem.cs b/src/Examples/NoEntityFrameworkExample/Models/WorkItem.cs index 20d381a2ba..98aa8a9fd9 100644 --- a/src/Examples/NoEntityFrameworkExample/Models/WorkItem.cs +++ b/src/Examples/NoEntityFrameworkExample/Models/WorkItem.cs @@ -6,7 +6,7 @@ namespace NoEntityFrameworkExample.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class WorkItem : Identifiable + public sealed class WorkItem : Identifiable { [Attr] public bool IsBlocked { get; set; } diff --git a/src/Examples/ReportsExample/Models/Report.cs b/src/Examples/ReportsExample/Models/Report.cs index 6635687a1d..ef4a360a22 100644 --- a/src/Examples/ReportsExample/Models/Report.cs +++ b/src/Examples/ReportsExample/Models/Report.cs @@ -5,7 +5,7 @@ namespace ReportsExample.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Report : Identifiable + public sealed class Report : Identifiable { [Attr] public string Title { get; set; } diff --git a/src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs b/src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs index 6829e35788..208167fa2b 100644 --- a/src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs +++ b/src/JsonApiDotNetCore/Configuration/JsonApiValidationFilter.cs @@ -64,7 +64,7 @@ private IServiceProvider GetScopedServiceProvider() private static bool IsId(string key) { - return key == nameof(Identifiable.Id) || key.EndsWith($".{nameof(Identifiable.Id)}", StringComparison.Ordinal); + return key == nameof(Identifiable.Id) || key.EndsWith($".{nameof(Identifiable.Id)}", StringComparison.Ordinal); } private static bool IsAtPrimaryEndpoint(IJsonApiRequest request) diff --git a/src/JsonApiDotNetCore/Configuration/ResourceGraphBuilder.cs b/src/JsonApiDotNetCore/Configuration/ResourceGraphBuilder.cs index c063444d88..4e19bed130 100644 --- a/src/JsonApiDotNetCore/Configuration/ResourceGraphBuilder.cs +++ b/src/JsonApiDotNetCore/Configuration/ResourceGraphBuilder.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Reflection; using JetBrains.Annotations; +using JsonApiDotNetCore.Errors; using JsonApiDotNetCore.Resources; using JsonApiDotNetCore.Resources.Annotations; using Microsoft.EntityFrameworkCore; @@ -130,14 +131,19 @@ public ResourceGraphBuilder Add(Type resourceClrType, Type idClrType = null, str if (resourceClrType.IsOrImplementsInterface(typeof(IIdentifiable))) { string effectivePublicName = publicName ?? FormatResourceName(resourceClrType); - Type effectiveIdType = idClrType ?? _typeLocator.TryGetIdType(resourceClrType) ?? typeof(int); + Type effectiveIdType = idClrType ?? _typeLocator.TryGetIdType(resourceClrType); + + if (effectiveIdType == null) + { + throw new InvalidConfigurationException($"Resource type '{resourceClrType}' implements 'IIdentifiable', but not 'IIdentifiable'."); + } ResourceType resourceType = CreateResourceType(effectivePublicName, resourceClrType, effectiveIdType); _resourceTypes.Add(resourceType); } else { - _logger.LogWarning($"Entity '{resourceClrType}' does not implement '{nameof(IIdentifiable)}'."); + _logger.LogWarning($"Skipping: Type '{resourceClrType}' does not implement '{nameof(IIdentifiable)}'."); } return this; @@ -168,7 +174,7 @@ private IReadOnlyCollection GetAttributes(Type resourceClrType) // Although strictly not correct, 'id' is added to the list of attributes for convenience. // For example, it enables to filter on ID, without the need to special-case existing logic. // And when using sparse fields, it silently adds 'id' to the set of attributes to retrieve. - if (property.Name == nameof(Identifiable.Id) && attribute == null) + if (property.Name == nameof(Identifiable.Id) && attribute == null) { var idAttr = new AttrAttribute { diff --git a/src/JsonApiDotNetCore/Queries/Internal/Parsing/FilterParser.cs b/src/JsonApiDotNetCore/Queries/Internal/Parsing/FilterParser.cs index ef6ffd234e..390c1fe891 100644 --- a/src/JsonApiDotNetCore/Queries/Internal/Parsing/FilterParser.cs +++ b/src/JsonApiDotNetCore/Queries/Internal/Parsing/FilterParser.cs @@ -154,7 +154,7 @@ protected ComparisonExpression ParseComparison(string operatorName) PropertyInfo leftProperty = leftChain.Fields[^1].Property; - if (leftProperty.Name == nameof(Identifiable.Id) && rightTerm is LiteralConstantExpression rightConstant) + if (leftProperty.Name == nameof(Identifiable.Id) && rightTerm is LiteralConstantExpression rightConstant) { string id = DeObfuscateStringId(leftProperty.ReflectedType, rightConstant.Value); rightTerm = new LiteralConstantExpression(id); @@ -214,7 +214,7 @@ protected AnyExpression ParseAny() PropertyInfo targetAttributeProperty = targetAttribute.Fields[^1].Property; - if (targetAttributeProperty.Name == nameof(Identifiable.Id)) + if (targetAttributeProperty.Name == nameof(Identifiable.Id)) { constantSet = DeObfuscateIdConstants(constantSet, targetAttributeProperty); } diff --git a/src/JsonApiDotNetCore/Queries/Internal/QueryLayerComposer.cs b/src/JsonApiDotNetCore/Queries/Internal/QueryLayerComposer.cs index 165ce5b032..6df4be7495 100644 --- a/src/JsonApiDotNetCore/Queries/Internal/QueryLayerComposer.cs +++ b/src/JsonApiDotNetCore/Queries/Internal/QueryLayerComposer.cs @@ -483,7 +483,7 @@ protected virtual IDictionary GetProjectionF private static AttrAttribute GetIdAttribute(ResourceType resourceType) { - return resourceType.GetAttributeByPropertyName(nameof(Identifiable.Id)); + return resourceType.GetAttributeByPropertyName(nameof(Identifiable.Id)); } } } diff --git a/src/JsonApiDotNetCore/Queries/Internal/SparseFieldSetCache.cs b/src/JsonApiDotNetCore/Queries/Internal/SparseFieldSetCache.cs index 8f745086af..b6759bdcae 100644 --- a/src/JsonApiDotNetCore/Queries/Internal/SparseFieldSetCache.cs +++ b/src/JsonApiDotNetCore/Queries/Internal/SparseFieldSetCache.cs @@ -96,7 +96,7 @@ public IImmutableSet GetIdAttributeSetForRelationshipQuery(Resour { ArgumentGuard.NotNull(resourceType, nameof(resourceType)); - AttrAttribute idAttribute = resourceType.GetAttributeByPropertyName(nameof(Identifiable.Id)); + AttrAttribute idAttribute = resourceType.GetAttributeByPropertyName(nameof(Identifiable.Id)); var inputExpression = new SparseFieldSetExpression(ImmutableHashSet.Create(idAttribute)); // Intentionally not cached, as we are fetching ID only (ignoring any sparse fieldset that came from query string). diff --git a/src/JsonApiDotNetCore/QueryStrings/Internal/SparseFieldSetQueryStringParameterReader.cs b/src/JsonApiDotNetCore/QueryStrings/Internal/SparseFieldSetQueryStringParameterReader.cs index 2872351bd9..007cd8553f 100644 --- a/src/JsonApiDotNetCore/QueryStrings/Internal/SparseFieldSetQueryStringParameterReader.cs +++ b/src/JsonApiDotNetCore/QueryStrings/Internal/SparseFieldSetQueryStringParameterReader.cs @@ -92,7 +92,7 @@ private SparseFieldSetExpression GetSparseFieldSet(string parameterValue, Resour if (sparseFieldSet == null) { // We add ID on an incoming empty fieldset, so that callers can distinguish between no fieldset and an empty one. - AttrAttribute idAttribute = resourceType.GetAttributeByPropertyName(nameof(Identifiable.Id)); + AttrAttribute idAttribute = resourceType.GetAttributeByPropertyName(nameof(Identifiable.Id)); return new SparseFieldSetExpression(ImmutableHashSet.Create(idAttribute)); } diff --git a/src/JsonApiDotNetCore/Resources/IIdentifiable.cs b/src/JsonApiDotNetCore/Resources/IIdentifiable.cs index 99559870a4..fb377cf8de 100644 --- a/src/JsonApiDotNetCore/Resources/IIdentifiable.cs +++ b/src/JsonApiDotNetCore/Resources/IIdentifiable.cs @@ -1,8 +1,7 @@ namespace JsonApiDotNetCore.Resources { /// - /// When implemented by a class, indicates to JsonApiDotNetCore that the class represents a JSON:API resource. Note that JsonApiDotNetCore also assumes - /// that a property named 'Id' exists. + /// Defines the basic contract for a JSON:API resource. All resource classes must implement . /// public interface IIdentifiable { @@ -26,7 +25,7 @@ public interface IIdentifiable public interface IIdentifiable : IIdentifiable { /// - /// The typed identifier as used by the underlying data store (usually numeric). + /// The typed identifier as used by the underlying data store (usually numeric or Guid). /// TId Id { get; set; } } diff --git a/src/JsonApiDotNetCore/Resources/Identifiable.cs b/src/JsonApiDotNetCore/Resources/Identifiable.cs index aada6b312a..5ca96dfb2b 100644 --- a/src/JsonApiDotNetCore/Resources/Identifiable.cs +++ b/src/JsonApiDotNetCore/Resources/Identifiable.cs @@ -4,13 +4,9 @@ namespace JsonApiDotNetCore.Resources { - /// - public abstract class Identifiable : Identifiable - { - } - /// - /// A convenient basic implementation of that provides conversion between and . + /// A convenient basic implementation of that provides conversion between typed and + /// . /// /// /// The resource identifier type. diff --git a/src/JsonApiDotNetCore/Resources/IdentifiableExtensions.cs b/src/JsonApiDotNetCore/Resources/IdentifiableExtensions.cs index 807d6c3f23..d9456e5014 100644 --- a/src/JsonApiDotNetCore/Resources/IdentifiableExtensions.cs +++ b/src/JsonApiDotNetCore/Resources/IdentifiableExtensions.cs @@ -9,7 +9,7 @@ public static object GetTypedId(this IIdentifiable identifiable) { ArgumentGuard.NotNull(identifiable, nameof(identifiable)); - PropertyInfo property = identifiable.GetType().GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = identifiable.GetType().GetProperty(nameof(Identifiable.Id)); if (property == null) { diff --git a/src/JsonApiDotNetCore/Serialization/JsonConverters/ResourceObjectConverter.cs b/src/JsonApiDotNetCore/Serialization/JsonConverters/ResourceObjectConverter.cs index a5e12175ba..a95cc59f77 100644 --- a/src/JsonApiDotNetCore/Serialization/JsonConverters/ResourceObjectConverter.cs +++ b/src/JsonApiDotNetCore/Serialization/JsonConverters/ResourceObjectConverter.cs @@ -183,7 +183,7 @@ private static IDictionary ReadAttributes(ref Utf8JsonReader rea { object attributeValue; - if (property.Name == nameof(Identifiable.Id)) + if (property.Name == nameof(Identifiable.Id)) { attributeValue = JsonInvalidAttributeInfo.Id; } diff --git a/src/JsonApiDotNetCore/Serialization/Response/LinkBuilder.cs b/src/JsonApiDotNetCore/Serialization/Response/LinkBuilder.cs index e2bc01aec6..aa6d76255e 100644 --- a/src/JsonApiDotNetCore/Serialization/Response/LinkBuilder.cs +++ b/src/JsonApiDotNetCore/Serialization/Response/LinkBuilder.cs @@ -24,9 +24,13 @@ public class LinkBuilder : ILinkBuilder private const string PageSizeParameterName = "page[size]"; private const string PageNumberParameterName = "page[number]"; - private static readonly string GetPrimaryControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetAsync)); - private static readonly string GetSecondaryControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetSecondaryAsync)); - private static readonly string GetRelationshipControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController.GetRelationshipAsync)); + private static readonly string GetPrimaryControllerActionName = NoAsyncSuffix(nameof(BaseJsonApiController, int>.GetAsync)); + + private static readonly string GetSecondaryControllerActionName = + NoAsyncSuffix(nameof(BaseJsonApiController, int>.GetSecondaryAsync)); + + private static readonly string GetRelationshipControllerActionName = + NoAsyncSuffix(nameof(BaseJsonApiController, int>.GetRelationshipAsync)); private readonly IJsonApiOptions _options; private readonly IJsonApiRequest _request; diff --git a/src/JsonApiDotNetCore/Serialization/Response/ResponseModelAdapter.cs b/src/JsonApiDotNetCore/Serialization/Response/ResponseModelAdapter.cs index 10f25f2c20..df19cb6f70 100644 --- a/src/JsonApiDotNetCore/Serialization/Response/ResponseModelAdapter.cs +++ b/src/JsonApiDotNetCore/Serialization/Response/ResponseModelAdapter.cs @@ -215,7 +215,7 @@ protected virtual IDictionary ConvertAttributes(IIdentifiable re foreach (AttrAttribute attr in resourceType.Attributes) { - if (!fieldSet.Contains(attr) || attr.Property.Name == nameof(Identifiable.Id)) + if (!fieldSet.Contains(attr) || attr.Property.Name == nameof(Identifiable.Id)) { continue; } diff --git a/test/DiscoveryTests/TestResource.cs b/test/DiscoveryTests/TestResource.cs index f394c920b0..187e018176 100644 --- a/test/DiscoveryTests/TestResource.cs +++ b/test/DiscoveryTests/TestResource.cs @@ -4,7 +4,7 @@ namespace DiscoveryTests { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TestResource : Identifiable + public sealed class TestResource : Identifiable { } } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastComment.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastComment.cs index 623a603b6b..82f658ea8a 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastComment.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/BroadcastComment.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class BroadcastComment : Identifiable + public sealed class BroadcastComment : Identifiable { [Attr] public string Text { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcast.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcast.cs index 4713b956fa..5304c6135f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcast.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionBroadcast.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TelevisionBroadcast : Identifiable + public sealed class TelevisionBroadcast : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetwork.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetwork.cs index 55ab73ffe3..cdf0b64195 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetwork.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionNetwork.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TelevisionNetwork : Identifiable + public sealed class TelevisionNetwork : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStation.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStation.cs index b0c8a711f4..2c6a73307c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStation.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Archiving/TelevisionStation.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Archiving { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TelevisionStation : Identifiable + public sealed class TelevisionStation : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Performer.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Performer.cs index f910e6706c..99485daa63 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Performer.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/AtomicOperations/Performer.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.AtomicOperations { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Performer : Identifiable + public sealed class Performer : Identifiable { [Attr] public string ArtistName { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CarExpressionRewriter.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CarExpressionRewriter.cs index c5ec910a98..392d71703f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CarExpressionRewriter.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/CarExpressionRewriter.cs @@ -78,7 +78,7 @@ public override QueryExpression VisitMatchText(MatchTextExpression expression, o private static bool IsCarId(PropertyInfo property) { - return property.Name == nameof(Identifiable.Id) && property.DeclaringType == typeof(Car); + return property.Name == nameof(Identifiable.Id) && property.DeclaringType == typeof(Car); } private QueryExpression RewriteFilterOnCarStringIds(ResourceFieldChainExpression existingCarIdChain, IEnumerable carStringIds) diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/Dealership.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/Dealership.cs index cb41add695..2c6d312ecd 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/Dealership.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/Dealership.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CompositeKeys { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Dealership : Identifiable + public sealed class Dealership : Identifiable { [Attr] public string Address { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/Engine.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/Engine.cs index 7f764e5277..dd4f38a97f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/Engine.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CompositeKeys/Engine.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CompositeKeys { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Engine : Identifiable + public sealed class Engine : Identifiable { [Attr] public string SerialCode { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/Policy.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/Policy.cs index 5d89daa33e..e92f0978a9 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/Policy.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ContentNegotiation/Policy.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ContentNegotiation { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Policy : Identifiable + public sealed class Policy : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/Toothbrush.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/Toothbrush.cs index 84299ab5d2..674513f910 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/Toothbrush.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ControllerActionResults/Toothbrush.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ControllerActionResults { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Toothbrush : Identifiable + public sealed class Toothbrush : Identifiable { [Attr] public bool IsElectric { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/Civilian.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/Civilian.cs index ec7ddcf5d9..046220d59e 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/Civilian.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/Civilian.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CustomRoutes { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Civilian : Identifiable + public sealed class Civilian : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/Town.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/Town.cs index 4ddb1898e9..1f586d0521 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/Town.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/CustomRoutes/Town.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.CustomRoutes { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Town : Identifiable + public sealed class Town : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/Building.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/Building.cs index 8d423e3d4a..17abe93afc 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/Building.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/Building.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Building : Identifiable + public sealed class Building : Identifiable { private string _tempPrimaryDoorColor; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/City.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/City.cs index 679d002d22..fafa1b85d5 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/City.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/City.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class City : Identifiable + public sealed class City : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/State.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/State.cs index cc1c323fbe..7e63c968eb 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/State.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/State.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class State : Identifiable + public sealed class State : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/Street.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/Street.cs index 6566295238..1910b8b773 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/Street.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/EagerLoading/Street.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.EagerLoading { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Street : Identifiable + public sealed class Street : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticle.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticle.cs index b70b079bb3..244a0dec5a 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticle.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ConsumerArticle.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ExceptionHandling { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class ConsumerArticle : Identifiable + public sealed class ConsumerArticle : Identifiable { [Attr] public string Code { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticle.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticle.cs index 870f168c04..d0a3ce819a 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticle.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ExceptionHandling/ThrowingArticle.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ExceptionHandling { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class ThrowingArticle : Identifiable + public sealed class ThrowingArticle : Identifiable { [Attr] [NotMapped] diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGallery.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGallery.cs index 93cbe7665e..856551aacf 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGallery.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/ArtGallery.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.HostingInIIS { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class ArtGallery : Identifiable + public sealed class ArtGallery : Identifiable { [Attr] public string Theme { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/Painting.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/Painting.cs index c00c2826e8..bc6820ddbd 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/Painting.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/HostingInIIS/Painting.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.HostingInIIS { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Painting : Identifiable + public sealed class Painting : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiable.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiable.cs index ab86709eba..41bf98c51c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiable.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/IdObfuscation/ObfuscatedIdentifiable.cs @@ -2,7 +2,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.IdObfuscation { - public abstract class ObfuscatedIdentifiable : Identifiable + public abstract class ObfuscatedIdentifiable : Identifiable { private static readonly HexadecimalCodec Codec = new(); diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectory.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectory.cs index 9a72870cb2..e0accf3621 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectory.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemDirectory.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.InputValidation.ModelState { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class SystemDirectory : Identifiable + public sealed class SystemDirectory : Identifiable { [Required] [RegularExpression("^[0-9]+$")] diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFile.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFile.cs index de73e1f01e..16ed4b6925 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFile.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/InputValidation/ModelState/SystemFile.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.InputValidation.ModelState { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class SystemFile : Identifiable + public sealed class SystemFile : Identifiable { [Attr] [Required] diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocation.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocation.cs index 5112ba3cd4..ad28db953d 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocation.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Links/PhotoLocation.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Links { [ResourceLinks(TopLevelLinks = LinkTypes.None, ResourceLinks = LinkTypes.None, RelationshipLinks = LinkTypes.Related)] [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class PhotoLocation : Identifiable + public sealed class PhotoLocation : Identifiable { [Attr] public string PlaceName { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntry.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntry.cs index f7dc6dac53..958787ea34 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntry.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Logging/AuditEntry.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Logging { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class AuditEntry : Identifiable + public sealed class AuditEntry : Identifiable { [Attr] public string UserName { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamily.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamily.cs index 23d6656282..4728385036 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamily.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/ProductFamily.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Meta { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class ProductFamily : Identifiable + public sealed class ProductFamily : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicket.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicket.cs index fe8c6dfd1e..1691f4371a 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicket.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/Meta/SupportTicket.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.Meta { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class SupportTicket : Identifiable + public sealed class SupportTicket : Identifiable { [Attr] public string Description { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProduct.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProduct.cs index f7e65c2315..4e852aa772 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProduct.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebProduct.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.MultiTenancy { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class WebProduct : Identifiable + public sealed class WebProduct : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShop.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShop.cs index ddddace8fa..04e87b939f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShop.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/MultiTenancy/WebShop.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.MultiTenancy { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class WebShop : Identifiable, IHasTenant + public sealed class WebShop : Identifiable, IHasTenant { [Attr] public string Url { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoard.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoard.cs index 30dd4d2cd9..9dcd5091f7 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoard.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/DivingBoard.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.NamingConventions { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class DivingBoard : Identifiable + public sealed class DivingBoard : Identifiable { [Attr] [Required] diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPool.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPool.cs index ae3b1ef04f..e4c8e82faf 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPool.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/SwimmingPool.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.NamingConventions { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class SwimmingPool : Identifiable + public sealed class SwimmingPool : Identifiable { [Attr] public bool IsIndoor { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/WaterSlide.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/WaterSlide.cs index b74f2fcfe6..7c436bb5e4 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/WaterSlide.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/NamingConventions/WaterSlide.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.NamingConventions { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class WaterSlide : Identifiable + public sealed class WaterSlide : Identifiable { [Attr] public decimal LengthInMeters { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/AccountPreferences.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/AccountPreferences.cs index 640fff74a9..17b0d478e8 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/AccountPreferences.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/AccountPreferences.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class AccountPreferences : Identifiable + public sealed class AccountPreferences : Identifiable { [Attr] public bool UseDarkTheme { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Appointment.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Appointment.cs index 7221f0815c..99c28d8649 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Appointment.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Appointment.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Appointment : Identifiable + public sealed class Appointment : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Blog.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Blog.cs index e13dde1faa..ff9c6ae459 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Blog.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Blog.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Blog : Identifiable + public sealed class Blog : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPost.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPost.cs index d62291379b..0916eb2a1d 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPost.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/BlogPost.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class BlogPost : Identifiable + public sealed class BlogPost : Identifiable { [Attr] public string Caption { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Calendar.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Calendar.cs index 90ffe9d9b3..cca8b961b8 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Calendar.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Calendar.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Calendar : Identifiable + public sealed class Calendar : Identifiable { [Attr] public string TimeZone { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Comment.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Comment.cs index 1c849ffcd7..b2568b2e8f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Comment.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Comment.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Comment : Identifiable + public sealed class Comment : Identifiable { [Attr] public string Text { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResource.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResource.cs index 515eb70db0..d9188a1dfe 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResource.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Filtering/FilterableResource.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings.Filtering { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class FilterableResource : Identifiable + public sealed class FilterableResource : Identifiable { [Attr] public string SomeString { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Label.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Label.cs index cac2a323d2..cd1d2c5142 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Label.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/Label.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Label : Identifiable + public sealed class Label : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/LoginAttempt.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/LoginAttempt.cs index d86783f387..dcdb2bae95 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/LoginAttempt.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/LoginAttempt.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class LoginAttempt : Identifiable + public sealed class LoginAttempt : Identifiable { [Attr] public DateTimeOffset TriedAt { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccount.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccount.cs index ee47154be3..3f9f89487f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccount.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/QueryStrings/WebAccount.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.QueryStrings { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class WebAccount : Identifiable + public sealed class WebAccount : Identifiable { [Attr] public string UserName { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceTests.cs index 25eff993b6..d66a02f5e4 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceTests.cs @@ -115,7 +115,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => workItemInDatabase.DueAt.Should().Be(newWorkItem.DueAt); }); - PropertyInfo property = typeof(WorkItem).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(WorkItem).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(int)); } @@ -162,7 +162,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => userAccountInDatabase.LastName.Should().Be(newUserAccount.LastName); }); - PropertyInfo property = typeof(UserAccount).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(UserAccount).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(long)); } @@ -206,7 +206,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => groupInDatabase.Name.Should().Be(newGroup.Name); }); - PropertyInfo property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(Guid)); } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceWithClientGeneratedIdTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceWithClientGeneratedIdTests.cs index 181152a06d..1f438e7eb8 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceWithClientGeneratedIdTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Creating/CreateResourceWithClientGeneratedIdTests.cs @@ -76,7 +76,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => groupInDatabase.Name.Should().Be($"{newGroup.Name}{ImplicitlyChangingWorkItemGroupDefinition.Suffix}"); }); - PropertyInfo property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(Guid)); } @@ -122,7 +122,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => groupInDatabase.Name.Should().Be($"{newGroup.Name}{ImplicitlyChangingWorkItemGroupDefinition.Suffix}"); }); - PropertyInfo property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(Guid)); } @@ -162,7 +162,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => colorInDatabase.DisplayName.Should().Be(newColor.DisplayName); }); - PropertyInfo property = typeof(RgbColor).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(RgbColor).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(string)); } @@ -202,7 +202,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => colorInDatabase.DisplayName.Should().Be(newColor.DisplayName); }); - PropertyInfo property = typeof(RgbColor).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(RgbColor).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(string)); } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Updating/Resources/UpdateResourceTests.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Updating/Resources/UpdateResourceTests.cs index 8f2fa5efab..916e2f2f28 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Updating/Resources/UpdateResourceTests.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/Updating/Resources/UpdateResourceTests.cs @@ -325,7 +325,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => groupInDatabase.IsPublic.Should().Be(existingGroup.IsPublic); }); - PropertyInfo property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(WorkItemGroup).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(Guid)); } @@ -372,7 +372,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext => colorInDatabase.DisplayName.Should().Be(newDisplayName); }); - PropertyInfo property = typeof(RgbColor).GetProperty(nameof(Identifiable.Id)); + PropertyInfo property = typeof(RgbColor).GetProperty(nameof(Identifiable.Id)); property.Should().NotBeNull().And.Subject.PropertyType.Should().Be(typeof(string)); } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItem.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItem.cs index ed8a27f115..51f83556d4 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItem.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkItem.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ReadWrite { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class WorkItem : Identifiable + public sealed class WorkItem : Identifiable { [Attr] public string Description { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkTag.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkTag.cs index fbb0be35f5..2d08ef3cac 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkTag.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ReadWrite/WorkTag.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ReadWrite { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class WorkTag : Identifiable + public sealed class WorkTag : Identifiable { [Attr] public string Text { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Customer.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Customer.cs index 27f6623a92..c36e588f1f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Customer.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Customer.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Customer : Identifiable + public sealed class Customer : Identifiable { [Attr] public string EmailAddress { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Order.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Order.cs index 124382e8f4..5507dc8701 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Order.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Order.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Order : Identifiable + public sealed class Order : Identifiable { [Attr] public decimal Amount { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Shipment.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Shipment.cs index 24768ad68e..d57bb4c008 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Shipment.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RequiredRelationships/Shipment.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RequiredRelationships { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Shipment : Identifiable + public sealed class Shipment : Identifiable { [Attr] public string TrackAndTraceCode { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificate.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificate.cs index 0c96d5c58a..8b56a2523d 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificate.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/GiftCertificate.cs @@ -8,7 +8,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceConstructorInjection { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class GiftCertificate : Identifiable + public sealed class GiftCertificate : Identifiable { private readonly ISystemClock _systemClock; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOffice.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOffice.cs index 688faf36e4..06c2dbc32a 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOffice.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceConstructorInjection/PostOffice.cs @@ -9,7 +9,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceConstructorInjection { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class PostOffice : Identifiable + public sealed class PostOffice : Identifiable { private readonly ISystemClock _systemClock; diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Moon.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Moon.cs index a3a2e23199..e2dc3c3b8e 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Moon.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Moon.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Moon : Identifiable + public sealed class Moon : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Planet.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Planet.cs index a4090b4228..fc17df16bf 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Planet.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Planet.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Planet : Identifiable + public sealed class Planet : Identifiable { [Attr] public string PublicName { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Star.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Star.cs index 84e51726c3..4baab0ae04 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Star.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Reading/Star.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Reading { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Star : Identifiable + public sealed class Star : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/Scholarship.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/Scholarship.cs index cc8981559c..196ad46b7c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/Scholarship.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/Scholarship.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Serialization { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Scholarship : Identifiable + public sealed class Scholarship : Identifiable { [Attr] public string ProgramName { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/Student.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/Student.cs index 32ebe1feb2..995095ab3c 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/Student.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceDefinitions/Serialization/Student.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceDefinitions.Serialization { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Student : Identifiable + public sealed class Student : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/ContentItem.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/ContentItem.cs index 17c3683ae8..250d6b90e6 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/ContentItem.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/ContentItem.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceInheritance.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public abstract class ContentItem : Identifiable + public abstract class ContentItem : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/HealthInsurance.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/HealthInsurance.cs index e4a2588e8a..2a1ce62919 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/HealthInsurance.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/HealthInsurance.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceInheritance.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public abstract class HealthInsurance : Identifiable + public abstract class HealthInsurance : Identifiable { [Attr] public bool MonthlyFee { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/Human.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/Human.cs index 684d8d4bd2..efb5a524c8 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/Human.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/ResourceInheritance/Models/Human.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.ResourceInheritance.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public abstract class Human : Identifiable + public abstract class Human : Identifiable { [Attr] public string FamilyName { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Bed.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Bed.cs index 286b6bca66..5c229c796d 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Bed.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Bed.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Bed : Identifiable + public sealed class Bed : Identifiable { [Attr] public bool IsDouble { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Chair.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Chair.cs index d133b847ce..62e2358d1b 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Chair.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Chair.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Chair : Identifiable + public sealed class Chair : Identifiable { [Attr] public int LegCount { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Sofa.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Sofa.cs index c34602fc18..c110b5d0d8 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Sofa.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Sofa.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Sofa : Identifiable + public sealed class Sofa : Identifiable { [Attr] public int SeatCount { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Table.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Table.cs index 8f3901bf26..a2ed9e0734 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Table.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/RestrictedControllers/Table.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.RestrictedControllers { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Table : Identifiable + public sealed class Table : Identifiable { [Attr] public int LegCount { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/Company.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/Company.cs index dcb9f82509..f0e9283a7f 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/Company.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/Company.cs @@ -7,7 +7,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.SoftDeletion { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Company : Identifiable, ISoftDeletable + public sealed class Company : Identifiable, ISoftDeletable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/Department.cs b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/Department.cs index 0913cbb84c..307ab8f483 100644 --- a/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/Department.cs +++ b/test/JsonApiDotNetCoreTests/IntegrationTests/SoftDeletion/Department.cs @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.IntegrationTests.SoftDeletion { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Department : Identifiable, ISoftDeletable + public sealed class Department : Identifiable, ISoftDeletable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Configuration/DependencyContainerRegistrationTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/Configuration/DependencyContainerRegistrationTests.cs index cc2d9566b0..e7ddc9ce11 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Configuration/DependencyContainerRegistrationTests.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Configuration/DependencyContainerRegistrationTests.cs @@ -137,7 +137,7 @@ public DependencyContainerRegistrationDbContext(DbContextOptions { [Attr] public string Field { get; set; } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Links/LinkInclusionTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/Links/LinkInclusionTests.cs index 84546eefd0..34721a2982 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Links/LinkInclusionTests.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Links/LinkInclusionTests.cs @@ -356,7 +356,7 @@ public void Applies_cascading_settings_for_relationship_links(LinkTypes linksInR } } - private sealed class ExampleResource : Identifiable + private sealed class ExampleResource : Identifiable { } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/InputConversionTests.cs b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/InputConversionTests.cs index 341effc4cc..76182c4467 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/InputConversionTests.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/InputConversionTests.cs @@ -237,7 +237,7 @@ public void Converts_various_data_types_with_defaults() } private static DocumentAdapter CreateDocumentAdapter(Func createRequest) - where TResource : Identifiable + where TResource : Identifiable { var options = new JsonApiOptions(); IResourceGraph resourceGraph = new ResourceGraphBuilder(options, NullLoggerFactory.Instance).Add().Build(); @@ -271,7 +271,7 @@ private static DocumentAdapter CreateDocumentAdapter(Func { [Attr] public bool Boolean { get; set; } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Article.cs b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Article.cs index ce79fe44f7..78caec3f5e 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Article.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Article.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.UnitTests.Serialization.Response.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Article : Identifiable + public sealed class Article : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Blog.cs b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Blog.cs index 8438fc2c0a..b7cebea94a 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Blog.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Blog.cs @@ -1,11 +1,11 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; using JsonApiDotNetCore.Resources; using JsonApiDotNetCore.Resources.Annotations; namespace JsonApiDotNetCoreTests.UnitTests.Serialization.Response.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Blog : Identifiable + public sealed class Blog : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Food.cs b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Food.cs index 5acc9d6bb8..93abc38148 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Food.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Food.cs @@ -1,11 +1,11 @@ -using JetBrains.Annotations; +using JetBrains.Annotations; using JsonApiDotNetCore.Resources; using JsonApiDotNetCore.Resources.Annotations; namespace JsonApiDotNetCoreTests.UnitTests.Serialization.Response.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Food : Identifiable + public sealed class Food : Identifiable { [Attr] public string Dish { get; set; } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Person.cs b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Person.cs index 0c5972b291..6121996fe8 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Person.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Person.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using JetBrains.Annotations; using JsonApiDotNetCore.Resources; using JsonApiDotNetCore.Resources.Annotations; @@ -6,7 +6,7 @@ namespace JsonApiDotNetCoreTests.UnitTests.Serialization.Response.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Person : Identifiable + public sealed class Person : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Song.cs b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Song.cs index 6bda0ab81b..45f75f0346 100644 --- a/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Song.cs +++ b/test/JsonApiDotNetCoreTests/UnitTests/Serialization/Response/Models/Song.cs @@ -5,7 +5,7 @@ namespace JsonApiDotNetCoreTests.UnitTests.Serialization.Response.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Song : Identifiable + public sealed class Song : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/TestBuildingBlocks/Unknown.cs b/test/TestBuildingBlocks/Unknown.cs index 294490d96e..58ed6da14a 100644 --- a/test/TestBuildingBlocks/Unknown.cs +++ b/test/TestBuildingBlocks/Unknown.cs @@ -80,7 +80,7 @@ private static string InnerFor(bool isAlt) } throw new NotSupportedException( - $"Unsupported '{nameof(Identifiable.Id)}' property of type '{type}' on resource type '{typeof(TResource).Name}'."); + $"Unsupported '{nameof(Identifiable.Id)}' property of type '{type}' on resource type '{typeof(TResource).Name}'."); } } } diff --git a/test/UnitTests/Builders/ResourceGraphBuilderTests.cs b/test/UnitTests/Builders/ResourceGraphBuilderTests.cs index 90171ad268..634bc6d4a3 100644 --- a/test/UnitTests/Builders/ResourceGraphBuilderTests.cs +++ b/test/UnitTests/Builders/ResourceGraphBuilderTests.cs @@ -84,11 +84,11 @@ public void Relationships_Without_Names_Specified_Will_Use_Configured_Formatter( Assert.Equal("relatedResources", testResourceType.Relationships.Single(relationship => relationship is not HasOneAttribute).PublicName); } - private sealed class NonDbResource : Identifiable + private sealed class NonDbResource : Identifiable { } - private sealed class DbResource : Identifiable + private sealed class DbResource : Identifiable { } @@ -104,7 +104,7 @@ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) } [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TestResource : Identifiable + public sealed class TestResource : Identifiable { [Attr] public string CompoundAttribute { get; set; } @@ -117,7 +117,7 @@ public sealed class TestResource : Identifiable } [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class RelatedResource : Identifiable + public sealed class RelatedResource : Identifiable { [Attr] public string Unused { get; set; } diff --git a/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs b/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs index 301e05302d..7f504edab0 100644 --- a/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs +++ b/test/UnitTests/Controllers/BaseJsonApiControllerTests.cs @@ -265,7 +265,7 @@ public async Task DeleteAsync_Throws_405_If_No_Service() } [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Resource : Identifiable + public sealed class Resource : Identifiable { [Attr] public string TestAttribute { get; set; } diff --git a/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs b/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs index 8583eb6b37..cae850fadc 100644 --- a/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs +++ b/test/UnitTests/Extensions/ServiceCollectionExtensionsTests.cs @@ -178,7 +178,7 @@ public void AddJsonApi_With_Context_Uses_Resource_Type_Name_If_NoOtherSpecified( Assert.Equal("resourceOfInt32s", intResourceType.PublicName); } - private sealed class ResourceOfInt32 : Identifiable + private sealed class ResourceOfInt32 : Identifiable { } @@ -599,7 +599,7 @@ public TestDbContext(DbContextOptions options) } [UsedImplicitly(ImplicitUseKindFlags.Access)] - private sealed class Person : Identifiable + private sealed class Person : Identifiable { } } diff --git a/test/UnitTests/Graph/Model.cs b/test/UnitTests/Graph/Model.cs index 2fb3214de3..8144871b2e 100644 --- a/test/UnitTests/Graph/Model.cs +++ b/test/UnitTests/Graph/Model.cs @@ -2,7 +2,7 @@ namespace UnitTests.Graph { - internal sealed class Model : Identifiable + internal sealed class Model : Identifiable { } } diff --git a/test/UnitTests/Internal/ResourceGraphBuilderTests.cs b/test/UnitTests/Internal/ResourceGraphBuilderTests.cs index 110aa17027..3aaf096ded 100644 --- a/test/UnitTests/Internal/ResourceGraphBuilderTests.cs +++ b/test/UnitTests/Internal/ResourceGraphBuilderTests.cs @@ -1,9 +1,11 @@ +using System; using System.Linq; using Castle.DynamicProxy; +using FluentAssertions; using JetBrains.Annotations; using JsonApiDotNetCore.Configuration; +using JsonApiDotNetCore.Errors; using JsonApiDotNetCore.Resources; -using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using TestBuildingBlocks; @@ -14,84 +16,79 @@ namespace UnitTests.Internal public sealed class ResourceGraphBuilderTests { [Fact] - public void AddDbContext_Does_Not_Throw_If_Context_Contains_Members_That_Do_Not_Implement_IIdentifiable() + public void Throws_when_adding_resource_type_that_implements_only_non_generic_IIdentifiable() { // Arrange var resourceGraphBuilder = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance); // Act - resourceGraphBuilder.Add(typeof(TestDbContext)); - var resourceGraph = (ResourceGraph)resourceGraphBuilder.Build(); + Action action = () => resourceGraphBuilder.Add(typeof(ResourceWithoutId)); // Assert - Assert.Empty(resourceGraph.GetResourceTypes()); + action.Should().ThrowExactly() + .WithMessage($"Resource type '{typeof(ResourceWithoutId)}' implements 'IIdentifiable', but not 'IIdentifiable'."); } [Fact] - public void Adding_DbContext_Members_That_Do_Not_Implement_IIdentifiable_Logs_Warning() + public void Logs_warning_when_adding_non_resource_type() { // Arrange var loggerFactory = new FakeLoggerFactory(LogLevel.Warning); var resourceGraphBuilder = new ResourceGraphBuilder(new JsonApiOptions(), loggerFactory); - resourceGraphBuilder.Add(typeof(TestDbContext)); // Act - resourceGraphBuilder.Build(); + resourceGraphBuilder.Add(typeof(NonResource)); // Assert - Assert.Single(loggerFactory.Logger.Messages); - Assert.Equal(LogLevel.Warning, loggerFactory.Logger.Messages.Single().LogLevel); + loggerFactory.Logger.Messages.Should().HaveCount(1); - Assert.Equal("Entity 'UnitTests.Internal.ResourceGraphBuilderTests+TestDbContext' does not implement 'IIdentifiable'.", - loggerFactory.Logger.Messages.Single().Text); + FakeLoggerFactory.FakeLogMessage message = loggerFactory.Logger.Messages.ElementAt(0); + message.LogLevel.Should().Be(LogLevel.Warning); + message.Text.Should().Be($"Skipping: Type '{typeof(NonResource)}' does not implement 'IIdentifiable'."); } [Fact] - public void GetResourceType_Yields_Right_Type_For_LazyLoadingProxy() + public void Can_resolve_correct_type_for_lazy_loading_proxy() { // Arrange - var resourceGraphBuilder = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance); - resourceGraphBuilder.Add(); - var resourceGraph = (ResourceGraph)resourceGraphBuilder.Build(); + IResourceGraph resourceGraph = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance).Add().Build(); var proxyGenerator = new ProxyGenerator(); + var proxy = proxyGenerator.CreateClassProxy(); // Act - var proxy = proxyGenerator.CreateClassProxy(); - ResourceType barType = resourceGraph.GetResourceType(proxy.GetType()); + ResourceType resourceType = resourceGraph.GetResourceType(proxy.GetType()); // Assert - Assert.Equal(typeof(Bar), barType.ClrType); + resourceType.ClrType.Should().Be(typeof(ResourceOfInt32)); } [Fact] - public void GetResourceType_Yields_Right_Type_For_Identifiable() + public void Can_resolve_correct_type_for_resource() { // Arrange - var resourceGraphBuilder = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance); - resourceGraphBuilder.Add(); - var resourceGraph = (ResourceGraph)resourceGraphBuilder.Build(); + IResourceGraph resourceGraph = new ResourceGraphBuilder(new JsonApiOptions(), NullLoggerFactory.Instance).Add().Build(); // Act - ResourceType barType = resourceGraph.GetResourceType(typeof(Bar)); + ResourceType resourceType = resourceGraph.GetResourceType(typeof(ResourceOfInt32)); // Assert - Assert.Equal(typeof(Bar), barType.ClrType); + resourceType.ClrType.Should().Be(typeof(ResourceOfInt32)); } - [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] - private sealed class Foo + private sealed class ResourceWithoutId : IIdentifiable { + public string StringId { get; set; } + public string LocalId { get; set; } } - [UsedImplicitly(ImplicitUseTargetFlags.Members)] - private sealed class TestDbContext : DbContext + [UsedImplicitly(ImplicitUseKindFlags.InstantiatedNoFixedConstructorSignature)] + private sealed class NonResource { - public DbSet Foos { get; set; } } // ReSharper disable once ClassCanBeSealed.Global // ReSharper disable once MemberCanBePrivate.Global - public class Bar : Identifiable + public class ResourceOfInt32 : Identifiable { } } diff --git a/test/UnitTests/Middleware/JsonApiRequestTests.cs b/test/UnitTests/Middleware/JsonApiRequestTests.cs index a17bfaf0a5..92be9f28c7 100644 --- a/test/UnitTests/Middleware/JsonApiRequestTests.cs +++ b/test/UnitTests/Middleware/JsonApiRequestTests.cs @@ -121,19 +121,19 @@ private static void SetupRoutes(HttpContext httpContext, string requestMethod, s } [UsedImplicitly(ImplicitUseTargetFlags.Itself)] - private sealed class Person : Identifiable + private sealed class Person : Identifiable { } [UsedImplicitly(ImplicitUseTargetFlags.Members)] - private sealed class Tag : Identifiable + private sealed class Tag : Identifiable { [HasMany] public ISet TodoItems { get; set; } } [UsedImplicitly(ImplicitUseTargetFlags.Members)] - private sealed class TodoItem : Identifiable + private sealed class TodoItem : Identifiable { [HasOne] public Person Owner { get; set; } diff --git a/test/UnitTests/Models/IdentifiableTests.cs b/test/UnitTests/Models/IdentifiableTests.cs index 2b5f9dc51b..ae932f9a3c 100644 --- a/test/UnitTests/Models/IdentifiableTests.cs +++ b/test/UnitTests/Models/IdentifiableTests.cs @@ -35,7 +35,7 @@ public void GetStringId_Returns_Null_If_Object_Is_Default() Assert.Null(stringId); } - private sealed class IntId : Identifiable + private sealed class IntId : Identifiable { public string ExposedGetStringId(int value) { diff --git a/test/UnitTests/Models/ResourceWithStringConstructor.cs b/test/UnitTests/Models/ResourceWithStringConstructor.cs index 82c80ae9f6..b1bec7637c 100644 --- a/test/UnitTests/Models/ResourceWithStringConstructor.cs +++ b/test/UnitTests/Models/ResourceWithStringConstructor.cs @@ -5,7 +5,7 @@ namespace UnitTests.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - internal sealed class ResourceWithStringConstructor : Identifiable + internal sealed class ResourceWithStringConstructor : Identifiable { public string Text { get; } diff --git a/test/UnitTests/Models/ResourceWithThrowingConstructor.cs b/test/UnitTests/Models/ResourceWithThrowingConstructor.cs index b1fe9f6d48..cc446db11d 100644 --- a/test/UnitTests/Models/ResourceWithThrowingConstructor.cs +++ b/test/UnitTests/Models/ResourceWithThrowingConstructor.cs @@ -5,7 +5,7 @@ namespace UnitTests.Models { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - internal sealed class ResourceWithThrowingConstructor : Identifiable + internal sealed class ResourceWithThrowingConstructor : Identifiable { public ResourceWithThrowingConstructor() { diff --git a/test/UnitTests/Models/ResourceWithoutConstructor.cs b/test/UnitTests/Models/ResourceWithoutConstructor.cs index 521e01405e..0b16902023 100644 --- a/test/UnitTests/Models/ResourceWithoutConstructor.cs +++ b/test/UnitTests/Models/ResourceWithoutConstructor.cs @@ -2,7 +2,7 @@ namespace UnitTests.Models { - internal sealed class ResourceWithoutConstructor : Identifiable + internal sealed class ResourceWithoutConstructor : Identifiable { } } diff --git a/test/UnitTests/TestModels/Article.cs b/test/UnitTests/TestModels/Article.cs index 6c35c7e243..200ec5f5b9 100644 --- a/test/UnitTests/TestModels/Article.cs +++ b/test/UnitTests/TestModels/Article.cs @@ -5,7 +5,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Article : Identifiable + public sealed class Article : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/UnitTests/TestModels/BaseModel.cs b/test/UnitTests/TestModels/BaseModel.cs index 1ff8ebe94f..27372cc429 100644 --- a/test/UnitTests/TestModels/BaseModel.cs +++ b/test/UnitTests/TestModels/BaseModel.cs @@ -2,7 +2,7 @@ namespace UnitTests.TestModels { - public abstract class BaseModel : Identifiable + public abstract class BaseModel : Identifiable { } } diff --git a/test/UnitTests/TestModels/Blog.cs b/test/UnitTests/TestModels/Blog.cs index da286bb79d..1c5c192117 100644 --- a/test/UnitTests/TestModels/Blog.cs +++ b/test/UnitTests/TestModels/Blog.cs @@ -5,7 +5,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Blog : Identifiable + public sealed class Blog : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/UnitTests/TestModels/Food.cs b/test/UnitTests/TestModels/Food.cs index 940ef18cb8..07f9c884fa 100644 --- a/test/UnitTests/TestModels/Food.cs +++ b/test/UnitTests/TestModels/Food.cs @@ -5,7 +5,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Food : Identifiable + public sealed class Food : Identifiable { [Attr] public string Dish { get; set; } diff --git a/test/UnitTests/TestModels/IdentifiableWithAttribute.cs b/test/UnitTests/TestModels/IdentifiableWithAttribute.cs index 671a222e4b..c2317695b9 100644 --- a/test/UnitTests/TestModels/IdentifiableWithAttribute.cs +++ b/test/UnitTests/TestModels/IdentifiableWithAttribute.cs @@ -5,7 +5,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public class IdentifiableWithAttribute : Identifiable + public class IdentifiableWithAttribute : Identifiable { [Attr] public string AttributeMember { get; set; } diff --git a/test/UnitTests/TestModels/Person.cs b/test/UnitTests/TestModels/Person.cs index 93a9087594..cfdf45263a 100644 --- a/test/UnitTests/TestModels/Person.cs +++ b/test/UnitTests/TestModels/Person.cs @@ -6,7 +6,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Person : Identifiable + public sealed class Person : Identifiable { [Attr] public string Name { get; set; } diff --git a/test/UnitTests/TestModels/Song.cs b/test/UnitTests/TestModels/Song.cs index d9a52f238b..fdf6a837d6 100644 --- a/test/UnitTests/TestModels/Song.cs +++ b/test/UnitTests/TestModels/Song.cs @@ -5,7 +5,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class Song : Identifiable + public sealed class Song : Identifiable { [Attr] public string Title { get; set; } diff --git a/test/UnitTests/TestModels/TestResource.cs b/test/UnitTests/TestModels/TestResource.cs index 41d63aa896..4ff805e4da 100644 --- a/test/UnitTests/TestModels/TestResource.cs +++ b/test/UnitTests/TestModels/TestResource.cs @@ -6,7 +6,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TestResource : Identifiable + public sealed class TestResource : Identifiable { [Attr] public string StringField { get; set; } diff --git a/test/UnitTests/TestModels/TestResourceWithAbstractRelationship.cs b/test/UnitTests/TestModels/TestResourceWithAbstractRelationship.cs index e88927aedd..06970c7fc4 100644 --- a/test/UnitTests/TestModels/TestResourceWithAbstractRelationship.cs +++ b/test/UnitTests/TestModels/TestResourceWithAbstractRelationship.cs @@ -6,7 +6,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TestResourceWithAbstractRelationship : Identifiable + public sealed class TestResourceWithAbstractRelationship : Identifiable { [HasOne] public BaseModel ToOne { get; set; } diff --git a/test/UnitTests/TestModels/TestResourceWithList.cs b/test/UnitTests/TestModels/TestResourceWithList.cs index 966bd28dfb..12cb5eb3ec 100644 --- a/test/UnitTests/TestModels/TestResourceWithList.cs +++ b/test/UnitTests/TestModels/TestResourceWithList.cs @@ -6,7 +6,7 @@ namespace UnitTests.TestModels { [UsedImplicitly(ImplicitUseTargetFlags.Members)] - public sealed class TestResourceWithList : Identifiable + public sealed class TestResourceWithList : Identifiable { [Attr] public List ComplexFields { get; set; } From e55ec828e411d3681dc6dd1df547cd8453c12b57 Mon Sep 17 00:00:00 2001 From: Bart Koelman Date: Fri, 8 Oct 2021 17:09:38 +0200 Subject: [PATCH 7/7] Updated documentation --- docs/api/index.md | 2 +- docs/getting-started/step-by-step.md | 14 ++++----- docs/usage/extensibility/controllers.md | 31 +++++-------------- docs/usage/extensibility/repositories.md | 31 +++++++++---------- .../extensibility/resource-definitions.md | 16 +++++----- docs/usage/extensibility/services.md | 12 +++---- docs/usage/meta.md | 4 +-- docs/usage/options.md | 2 +- docs/usage/resource-graph.md | 4 +-- docs/usage/resources/attributes.md | 16 +++++----- docs/usage/resources/index.md | 19 ++---------- docs/usage/resources/relationships.md | 12 +++---- docs/usage/routing.md | 12 +++---- 13 files changed, 72 insertions(+), 103 deletions(-) diff --git a/docs/api/index.md b/docs/api/index.md index c8e4a69a3d..7eb109b9af 100644 --- a/docs/api/index.md +++ b/docs/api/index.md @@ -6,4 +6,4 @@ This section documents the package API and is generated from the XML source comm - [`JsonApiOptions`](JsonApiDotNetCore.Configuration.JsonApiOptions.yml) - [`IResourceGraph`](JsonApiDotNetCore.Configuration.IResourceGraph.yml) -- [`JsonApiResourceDefinition`](JsonApiDotNetCore.Resources.JsonApiResourceDefinition-1.yml) +- [`JsonApiResourceDefinition`](JsonApiDotNetCore.Resources.JsonApiResourceDefinition-2.yml) diff --git a/docs/getting-started/step-by-step.md b/docs/getting-started/step-by-step.md index 1443409b7f..75661780cc 100644 --- a/docs/getting-started/step-by-step.md +++ b/docs/getting-started/step-by-step.md @@ -35,10 +35,10 @@ Install-Package JsonApiDotNetCore ### Define Models Define your domain models such that they implement `IIdentifiable`. -The easiest way to do this is to inherit from `Identifiable` +The easiest way to do this is to inherit from `Identifiable`. ```c# -public class Person : Identifiable +public class Person : Identifiable { [Attr] public string Name { get; set; } @@ -47,7 +47,7 @@ public class Person : Identifiable ### Define DbContext -Nothing special here, just an ordinary `DbContext` +Nothing special here, just an ordinary `DbContext`. ``` public class AppDbContext : DbContext @@ -63,14 +63,14 @@ public class AppDbContext : DbContext ### Define Controllers -You need to create controllers that inherit from `JsonApiController` or `JsonApiController` -where `TResource` is the model that inherits from `Identifiable` +You need to create controllers that inherit from `JsonApiController` +where `TResource` is the model that inherits from `Identifiable`. ```c# -public class PeopleController : JsonApiController +public class PeopleController : JsonApiController { public PeopleController(IJsonApiOptions options, ILoggerFactory loggerFactory, - IResourceService resourceService) + IResourceService resourceService) : base(options, loggerFactory, resourceService) { } diff --git a/docs/usage/extensibility/controllers.md b/docs/usage/extensibility/controllers.md index c117642cbc..2d5d24cec9 100644 --- a/docs/usage/extensibility/controllers.md +++ b/docs/usage/extensibility/controllers.md @@ -1,29 +1,12 @@ # Controllers -You need to create controllers that inherit from `JsonApiController` - -```c# -public class ArticlesController : JsonApiController
-{ - public ArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, - IResourceService
resourceService) - : base(options, loggerFactory, resourceService) - { - } -} -``` - -## Non-Integer Type Keys - -If your model is using a type other than `int` for the primary key, you must explicitly declare it in the controller/service/repository definitions. +You need to create controllers that inherit from `JsonApiController` ```c# public class ArticlesController : JsonApiController -//---------------------------------------------------------- ^^^^ { public ArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, IResourceService resourceService) - //----------------------- ^^^^ : base(options, loggerFactory, resourceService) { } @@ -39,10 +22,10 @@ In this example, if a client attempts to do anything other than GET a resource, This approach is ok, but introduces some boilerplate that can easily be avoided. ```c# -public class ArticlesController : BaseJsonApiController
+public class ArticlesController : BaseJsonApiController { public ArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, - IResourceService
resourceService) + IResourceService resourceService) : base(options, loggerFactory, resourceService) { } @@ -76,10 +59,10 @@ An attempt to use one of the blacklisted methods will result in a HTTP 405 Metho ```c# [HttpReadOnly] -public class ArticlesController : BaseJsonApiController
+public class ArticlesController : BaseJsonApiController { public ArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, - IResourceService
resourceService) + IResourceService resourceService) : base(options, loggerFactory, resourceService) { } @@ -95,10 +78,10 @@ As with the ActionFilter attributes, if a service implementation is not availabl For more information about resource service injection, see [Replacing injected services](~/usage/extensibility/layer-overview.md#replacing-injected-services) and [Resource Services](~/usage/extensibility/services.md). ```c# -public class ReportsController : BaseJsonApiController +public class ReportsController : BaseJsonApiController { public ReportsController(IJsonApiOptions options, ILoggerFactory loggerFactory, - IGetAllService getAllService) + IGetAllService getAllService) : base(options, loggerFactory, getAllService) { } diff --git a/docs/usage/extensibility/repositories.md b/docs/usage/extensibility/repositories.md index 1ddd025ac5..7d76f2389a 100644 --- a/docs/usage/extensibility/repositories.md +++ b/docs/usage/extensibility/repositories.md @@ -8,9 +8,9 @@ The repository should then be registered in Startup.cs. ```c# public void ConfigureServices(IServiceCollection services) { - services.AddScoped, ArticleRepository>(); - services.AddScoped, ArticleRepository>(); - services.AddScoped, ArticleRepository>(); + services.AddScoped, ArticleRepository>(); + services.AddScoped, ArticleRepository>(); + services.AddScoped, ArticleRepository>(); } ``` @@ -34,18 +34,18 @@ A sample implementation that performs authorization might look like this. All of the methods in EntityFrameworkCoreRepository will use the `GetAll()` method to get the `DbSet`, so this is a good method to apply filters such as user or tenant authorization. ```c# -public class ArticleRepository : EntityFrameworkCoreRepository
+public class ArticleRepository : EntityFrameworkCoreRepository { private readonly IAuthenticationService _authenticationService; public ArticleRepository(IAuthenticationService authenticationService, ITargetedFields targetedFields, IDbContextResolver dbContextResolver, - IResourceGraph resourceGraph, IGenericServiceFactory genericServiceFactory, - IResourceFactory resourceFactory, + IResourceGraph resourceGraph, IResourceFactory resourceFactory, IEnumerable constraintProviders, - ILoggerFactory loggerFactory) - : base(targetedFields, dbContextResolver, resourceGraph, genericServiceFactory, - resourceFactory, constraintProviders, loggerFactory) + ILoggerFactory loggerFactory, + IResourceDefinitionAccessor resourceDefinitionAccessor) + : base(targetedFields, dbContextResolver, resourceGraph, resourceFactory, + constraintProviders, loggerFactory, resourceDefinitionAccessor) { _authenticationService = authenticationService; } @@ -64,18 +64,17 @@ If you need to use multiple Entity Framework Core DbContexts, first create a rep This example shows a single `DbContextARepository` for all entities that are members of `DbContextA`. ```c# -public class DbContextARepository : EntityFrameworkCoreRepository - where TResource : class, IIdentifiable +public class DbContextARepository : EntityFrameworkCoreRepository + where TResource : class, IIdentifiable { public DbContextARepository(ITargetedFields targetedFields, DbContextResolver dbContextResolver, // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - IResourceGraph resourceGraph, IGenericServiceFactory genericServiceFactory, - IResourceFactory resourceFactory, + IResourceGraph resourceGraph, IResourceFactory resourceFactory, IEnumerable constraintProviders, - ILoggerFactory loggerFactory) - : base(targetedFields, dbContextResolver, resourceGraph, genericServiceFactory, - resourceFactory, constraintProviders, loggerFactory) + ILoggerFactory loggerFactory, IResourceDefinitionAccessor resourceDefinitionAccessor) + : base(targetedFields, dbContextResolver, resourceGraph, resourceFactory, + constraintProviders, loggerFactory, resourceDefinitionAccessor) { } } diff --git a/docs/usage/extensibility/resource-definitions.md b/docs/usage/extensibility/resource-definitions.md index 6ebace8d52..f56442fcac 100644 --- a/docs/usage/extensibility/resource-definitions.md +++ b/docs/usage/extensibility/resource-definitions.md @@ -23,7 +23,7 @@ public class Startup resource definition on the container yourself: ```c# -services.AddScoped, ProductResource>(); +services.AddScoped, ProductDefinition>(); ``` ## Customizing queries @@ -31,7 +31,7 @@ services.AddScoped, ProductResource>(); _since v4.0_ For various reasons (see examples below) you may need to change parts of the query, depending on resource type. -`JsonApiResourceDefinition` (which is an empty implementation of `IResourceDefinition`) provides overridable methods that pass you the result of query string parameter parsing. +`JsonApiResourceDefinition` (which is an empty implementation of `IResourceDefinition`) provides overridable methods that pass you the result of query string parameter parsing. The value returned by you determines what will be used to execute the query. An intermediate format (`QueryExpression` and derived types) is used, which enables us to separate JSON:API implementation @@ -45,7 +45,7 @@ For example, you may accept some sensitive data that should only be exposed to a **Note:** to exclude attributes unconditionally, use `[Attr(Capabilities = ~AttrCapabilities.AllowView)]` on a resource class property. ```c# -public class UserDefinition : JsonApiResourceDefinition +public class UserDefinition : JsonApiResourceDefinition { public UserDefinition(IResourceGraph resourceGraph) : base(resourceGraph) @@ -104,7 +104,7 @@ Content-Type: application/vnd.api+json You can define the default sort order if no `sort` query string parameter is provided. ```c# -public class AccountDefinition : JsonApiResourceDefinition +public class AccountDefinition : JsonApiResourceDefinition { public AccountDefinition(IResourceGraph resourceGraph) : base(resourceGraph) @@ -132,7 +132,7 @@ public class AccountDefinition : JsonApiResourceDefinition You may want to enforce pagination on large database tables. ```c# -public class AccessLogDefinition : JsonApiResourceDefinition +public class AccessLogDefinition : JsonApiResourceDefinition { public AccessLogDefinition(IResourceGraph resourceGraph) : base(resourceGraph) @@ -163,7 +163,7 @@ public class AccessLogDefinition : JsonApiResourceDefinition The next example filters out `Account` resources that are suspended. ```c# -public class AccountDefinition : JsonApiResourceDefinition +public class AccountDefinition : JsonApiResourceDefinition { public AccountDefinition(IResourceGraph resourceGraph) : base(resourceGraph) @@ -192,7 +192,7 @@ public class AccountDefinition : JsonApiResourceDefinition In the example below, an error is returned when a user tries to include the manager of an employee. ```c# -public class EmployeeDefinition : JsonApiResourceDefinition +public class EmployeeDefinition : JsonApiResourceDefinition { public EmployeeDefinition(IResourceGraph resourceGraph) : base(resourceGraph) @@ -227,7 +227,7 @@ Note this directly influences the Entity Framework Core `IQueryable`. As opposed But it only works on primary resource endpoints (for example: /articles, but not on /blogs/1/articles or /blogs?include=articles). ```c# -public class ItemDefinition : JsonApiResourceDefinition +public class ItemDefinition : JsonApiResourceDefinition { public ItemDefinition(IResourceGraph resourceGraph) : base(resourceGraph) diff --git a/docs/usage/extensibility/services.md b/docs/usage/extensibility/services.md index 2c157ae432..83bb7e5ffa 100644 --- a/docs/usage/extensibility/services.md +++ b/docs/usage/extensibility/services.md @@ -5,13 +5,13 @@ This allows you to customize it however you want. This is also a good place to i ## Supplementing Default Behavior -If you don't need to alter the underlying mechanisms, you can inherit from `JsonApiResourceService` and override the existing methods. +If you don't need to alter the underlying mechanisms, you can inherit from `JsonApiResourceService` and override the existing methods. In simple cases, you can also just wrap the base implementation with your custom logic. A simple example would be to send notifications when a resource gets created. ```c# -public class TodoItemService : JsonApiResourceService +public class TodoItemService : JsonApiResourceService { private readonly INotificationService _notificationService; @@ -43,21 +43,21 @@ public class TodoItemService : JsonApiResourceService ## Not Using Entity Framework Core? As previously discussed, this library uses Entity Framework Core by default. -If you'd like to use another ORM that does not provide what JsonApiResourceService depends upon, you can use a custom `IResourceService` implementation. +If you'd like to use another ORM that does not provide what JsonApiResourceService depends upon, you can use a custom `IResourceService` implementation. ```c# // Startup.cs public void ConfigureServices(IServiceCollection services) { // add the service override for Product - services.AddScoped, ProductService>(); + services.AddScoped, ProductService>(); // add your own Data Access Object services.AddScoped(); } // ProductService.cs -public class ProductService : IResourceService +public class ProductService : IResourceService { private readonly IProductDao _dao; @@ -154,7 +154,7 @@ public class Startup Then in the controller, you should inherit from the base controller and pass the services into the named, optional base parameters: ```c# -public class ArticlesController : BaseJsonApiController
+public class ArticlesController : BaseJsonApiController { public ArticlesController(IJsonApiOptions options, ILoggerFactory loggerFactory, ICreateService create, IDeleteService delete) diff --git a/docs/usage/meta.md b/docs/usage/meta.md index 6f052103e4..62eefaa158 100644 --- a/docs/usage/meta.md +++ b/docs/usage/meta.md @@ -39,10 +39,10 @@ public sealed class CopyrightResponseMeta : IResponseMeta ## Resource Meta -Resource-specific metadata can be added by implementing `IResourceDefinition.GetMeta` (or overriding it on `JsonApiResourceDefinition`): +Resource-specific metadata can be added by implementing `IResourceDefinition.GetMeta` (or overriding it on `JsonApiResourceDefinition`): ```c# -public class PersonDefinition : JsonApiResourceDefinition +public class PersonDefinition : JsonApiResourceDefinition { public PersonDefinition(IResourceGraph resourceGraph) : base(resourceGraph) diff --git a/docs/usage/options.md b/docs/usage/options.md index e2e099e31e..54eb7f0d3b 100644 --- a/docs/usage/options.md +++ b/docs/usage/options.md @@ -109,7 +109,7 @@ options.ValidateModelState = true; ``` ```c# -public class Person : Identifiable +public class Person : Identifiable { [Attr] [Required] diff --git a/docs/usage/resource-graph.md b/docs/usage/resource-graph.md index 36e424d6e0..11d13be951 100644 --- a/docs/usage/resource-graph.md +++ b/docs/usage/resource-graph.md @@ -85,7 +85,7 @@ services.AddJsonApi(resources: builder => 2. The model is decorated with a `ResourceAttribute` ```c# [Resource("myResources")] -public class MyModel : Identifiable +public class MyModel : Identifiable { } ``` @@ -93,7 +93,7 @@ public class MyModel : Identifiable 3. The configured naming convention (by default this is camel-case). ```c# // this will be registered as "myModels" -public class MyModel : Identifiable +public class MyModel : Identifiable { } ``` diff --git a/docs/usage/resources/attributes.md b/docs/usage/resources/attributes.md index 6a42bae7e0..90fbb9d7c1 100644 --- a/docs/usage/resources/attributes.md +++ b/docs/usage/resources/attributes.md @@ -3,7 +3,7 @@ If you want an attribute on your model to be publicly available, add the `AttrAttribute`. ```c# -public class Person : Identifiable +public class Person : Identifiable { [Attr] public string FirstName { get; set; } @@ -18,7 +18,7 @@ There are two ways the exposed attribute name is determined: 2. Individually using the attribute's constructor. ```c# -public class Person : Identifiable +public class Person : Identifiable { [Attr(PublicName = "first-name")] public string FirstName { get; set; } @@ -42,7 +42,7 @@ This can be overridden per attribute. Attributes can be marked to allow returning their value in responses. When not allowed and requested using `?fields[]=`, it results in an HTTP 400 response. ```c# -public class User : Identifiable +public class User : Identifiable { [Attr(Capabilities = ~AttrCapabilities.AllowView)] public string Password { get; set; } @@ -54,7 +54,7 @@ public class User : Identifiable Attributes can be marked as creatable, which will allow `POST` requests to assign a value to them. When sent but not allowed, an HTTP 422 response is returned. ```c# -public class Person : Identifiable +public class Person : Identifiable { [Attr(Capabilities = AttrCapabilities.AllowCreate)] public string CreatorName { get; set; } @@ -66,7 +66,7 @@ public class Person : Identifiable Attributes can be marked as changeable, which will allow `PATCH` requests to update them. When sent but not allowed, an HTTP 422 response is returned. ```c# -public class Person : Identifiable +public class Person : Identifiable { [Attr(Capabilities = AttrCapabilities.AllowChange)] public string FirstName { get; set; } @@ -78,7 +78,7 @@ public class Person : Identifiable Attributes can be marked to allow filtering and/or sorting. When not allowed, it results in an HTTP 400 response. ```c# -public class Person : Identifiable +public class Person : Identifiable { [Attr(Capabilities = AttrCapabilities.AllowSort | AttrCapabilities.AllowFilter)] public string FirstName { get; set; } @@ -93,7 +93,7 @@ so you should use their APIs to specify serialization format. You can also use [global options](~/usage/options.md#customize-serializer-options) to control the `JsonSerializer` behavior. ```c# -public class Foo : Identifiable +public class Foo : Identifiable { [Attr] public Bar Bar { get; set; } @@ -113,7 +113,7 @@ The first member is the concrete type that you will directly interact with in yo and retrieval. ```c# -public class Foo : Identifiable +public class Foo : Identifiable { [Attr, NotMapped] public Bar Bar { get; set; } diff --git a/docs/usage/resources/index.md b/docs/usage/resources/index.md index 29f510e543..552b3886fa 100644 --- a/docs/usage/resources/index.md +++ b/docs/usage/resources/index.md @@ -8,25 +8,12 @@ public class Person : Identifiable } ``` -You can use the non-generic `Identifiable` if your primary key is an integer. +**Note:** Earlier versions of JsonApiDotNetCore allowed a short-hand notation when `TId` is of type `int`. This was removed in v5. -```c# -public class Person : Identifiable -{ -} - -// is the same as: - -public class Person : Identifiable -{ -} -``` - -If you need to attach annotations or attributes on the `Id` property, -you can override the virtual property. +If you need to attach annotations or attributes on the `Id` property, you can override the virtual property. ```c# -public class Person : Identifiable +public class Person : Identifiable { [Key] [Column("PersonID")] diff --git a/docs/usage/resources/relationships.md b/docs/usage/resources/relationships.md index 2495419a6a..24d3e834ff 100644 --- a/docs/usage/resources/relationships.md +++ b/docs/usage/resources/relationships.md @@ -11,7 +11,7 @@ The left side of a relationship is where the relationship is declared, the right This exposes a to-one relationship. ```c# -public class TodoItem : Identifiable +public class TodoItem : Identifiable { [HasOne] public Person Owner { get; set; } @@ -25,7 +25,7 @@ The left side of this relationship is of type `TodoItem` (public name: "todoItem This exposes a to-many relationship. ```c# -public class Person : Identifiable +public class Person : Identifiable { [HasMany] public ICollection TodoItems { get; set; } @@ -44,7 +44,7 @@ which would expose the relationship to the client the same way as any other `Has However, under the covers it would use the join type and Entity Framework Core's APIs to get and set the relationship. ```c# -public class Article : Identifiable +public class Article : Identifiable { // tells Entity Framework Core to ignore this property [NotMapped] @@ -68,7 +68,7 @@ There are two ways the exposed relationship name is determined: 2. Individually using the attribute's constructor. ```c# -public class TodoItem : Identifiable +public class TodoItem : Identifiable { [HasOne(PublicName = "item-owner")] public Person Owner { get; set; } @@ -80,7 +80,7 @@ public class TodoItem : Identifiable Relationships can be marked to disallow including them using the `?include=` query string parameter. When not allowed, it results in an HTTP 400 response. ```c# -public class TodoItem : Identifiable +public class TodoItem : Identifiable { [HasOne(CanInclude: false)] public Person Owner { get; set; } @@ -95,7 +95,7 @@ Your resource may expose a calculated property, whose value depends on a related So for the calculated property to be evaluated correctly, the related entity must always be retrieved. You can achieve that using `EagerLoad`, for example: ```c# -public class ShippingAddress : Identifiable +public class ShippingAddress : Identifiable { [Attr] public string Street { get; set; } diff --git a/docs/usage/routing.md b/docs/usage/routing.md index 0a10831d9b..79ad1a1e05 100644 --- a/docs/usage/routing.md +++ b/docs/usage/routing.md @@ -23,14 +23,14 @@ Which results in URLs like: https://yourdomain.com/api/v1/people The library will configure routes for all controllers in your project. By default, routes are camel-cased. This is based on the [recommendations](https://jsonapi.org/recommendations/) outlined in the JSON:API spec. ```c# -public class OrderLine : Identifiable +public class OrderLine : Identifiable { } -public class OrderLineController : JsonApiController +public class OrderLineController : JsonApiController { public OrderLineController(IJsonApiOptions options, ILoggerFactory loggerFactory, - IResourceService resourceService) + IResourceService resourceService) : base(options, loggerFactory, resourceService) { } @@ -45,7 +45,7 @@ The exposed name of the resource ([which can be customized](~/usage/resource-gra ### Non-JSON:API controllers -If a controller does not inherit from `JsonApiController`, the [configured naming convention](~/usage/options.md#customize-serializer-options) is applied to the name of the controller. +If a controller does not inherit from `JsonApiController`, the [configured naming convention](~/usage/options.md#customize-serializer-options) is applied to the name of the controller. ```c# public class OrderLineController : ControllerBase @@ -63,10 +63,10 @@ It is possible to bypass the default routing convention for a controller. ```c# [Route("v1/custom/route/lines-in-order"), DisableRoutingConvention] -public class OrderLineController : JsonApiController +public class OrderLineController : JsonApiController { public OrderLineController(IJsonApiOptions options, ILoggerFactory loggerFactory, - IResourceService resourceService) + IResourceService resourceService) : base(options, loggerFactory, resourceService) { }