Skip to content

Commit 680e809

Browse files
author
Bart Koelman
committed
Replaced obsolete IResourceFactory.GetResourceDefinitionAccessor() with injected service
1 parent 07a74e8 commit 680e809

File tree

16 files changed

+47
-57
lines changed

16 files changed

+47
-57
lines changed

benchmarks/Serialization/JsonApiDeserializerBenchmarks.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,18 @@ public JsonApiDeserializerBenchmarks()
3838
IResourceGraph resourceGraph = _dependencyFactory.CreateResourceGraph(options);
3939

4040
var serviceContainer = new ServiceContainer();
41-
serviceContainer.AddService(typeof(IResourceDefinitionAccessor), new ResourceDefinitionAccessor(resourceGraph, serviceContainer));
41+
var resourceDefinitionAccessor = new ResourceDefinitionAccessor(resourceGraph, serviceContainer);
42+
43+
serviceContainer.AddService(typeof(IResourceDefinitionAccessor), resourceDefinitionAccessor);
4244
serviceContainer.AddService(typeof(IResourceDefinition<BenchmarkResource>), new JsonApiResourceDefinition<BenchmarkResource>(resourceGraph));
4345

4446
var targetedFields = new TargetedFields();
4547
var request = new JsonApiRequest();
4648
var resourceFactory = new ResourceFactory(serviceContainer);
4749
var httpContextAccessor = new HttpContextAccessor();
4850

49-
_jsonApiDeserializer = new RequestDeserializer(resourceGraph, resourceFactory, targetedFields, httpContextAccessor, request, options);
51+
_jsonApiDeserializer = new RequestDeserializer(resourceGraph, resourceFactory, targetedFields, httpContextAccessor, request, options,
52+
resourceDefinitionAccessor);
5053
}
5154

5255
[Benchmark]

src/Examples/MultiDbContextExample/Repositories/DbContextARepository.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ public sealed class DbContextARepository<TResource> : EntityFrameworkCoreReposit
1414
where TResource : class, IIdentifiable<int>
1515
{
1616
public DbContextARepository(ITargetedFields targetedFields, DbContextResolver<DbContextA> contextResolver, IResourceGraph resourceGraph,
17-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
18-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
17+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
18+
IResourceDefinitionAccessor resourceDefinitionAccessor)
19+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
1920
{
2021
}
2122
}

src/Examples/MultiDbContextExample/Repositories/DbContextBRepository.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ public sealed class DbContextBRepository<TResource> : EntityFrameworkCoreReposit
1414
where TResource : class, IIdentifiable<int>
1515
{
1616
public DbContextBRepository(ITargetedFields targetedFields, DbContextResolver<DbContextB> contextResolver, IResourceGraph resourceGraph,
17-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
18-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
17+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
18+
IResourceDefinitionAccessor resourceDefinitionAccessor)
19+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
1920
{
2021
}
2122
}

src/JsonApiDotNetCore/Repositories/EntityFrameworkCoreRepository.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,32 +34,31 @@ public class EntityFrameworkCoreRepository<TResource, TId> : IResourceRepository
3434
private readonly IResourceGraph _resourceGraph;
3535
private readonly IResourceFactory _resourceFactory;
3636
private readonly IEnumerable<IQueryConstraintProvider> _constraintProviders;
37-
private readonly TraceLogWriter<EntityFrameworkCoreRepository<TResource, TId>> _traceWriter;
3837
private readonly IResourceDefinitionAccessor _resourceDefinitionAccessor;
38+
private readonly TraceLogWriter<EntityFrameworkCoreRepository<TResource, TId>> _traceWriter;
3939

4040
/// <inheritdoc />
4141
public virtual string TransactionId => _dbContext.Database.CurrentTransaction?.TransactionId.ToString();
4242

4343
public EntityFrameworkCoreRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
44-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
44+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
45+
IResourceDefinitionAccessor resourceDefinitionAccessor)
4546
{
46-
ArgumentGuard.NotNull(contextResolver, nameof(contextResolver));
47-
ArgumentGuard.NotNull(loggerFactory, nameof(loggerFactory));
4847
ArgumentGuard.NotNull(targetedFields, nameof(targetedFields));
48+
ArgumentGuard.NotNull(contextResolver, nameof(contextResolver));
4949
ArgumentGuard.NotNull(resourceGraph, nameof(resourceGraph));
5050
ArgumentGuard.NotNull(resourceFactory, nameof(resourceFactory));
5151
ArgumentGuard.NotNull(constraintProviders, nameof(constraintProviders));
52+
ArgumentGuard.NotNull(loggerFactory, nameof(loggerFactory));
53+
ArgumentGuard.NotNull(resourceDefinitionAccessor, nameof(resourceDefinitionAccessor));
5254

5355
_targetedFields = targetedFields;
56+
_dbContext = contextResolver.GetContext();
5457
_resourceGraph = resourceGraph;
5558
_resourceFactory = resourceFactory;
5659
_constraintProviders = constraintProviders;
57-
_dbContext = contextResolver.GetContext();
60+
_resourceDefinitionAccessor = resourceDefinitionAccessor;
5861
_traceWriter = new TraceLogWriter<EntityFrameworkCoreRepository<TResource, TId>>(loggerFactory);
59-
60-
#pragma warning disable 612 // Method is obsolete
61-
_resourceDefinitionAccessor = resourceFactory.GetResourceDefinitionAccessor();
62-
#pragma warning restore 612
6362
}
6463

6564
/// <inheritdoc />
@@ -533,8 +532,9 @@ public class EntityFrameworkCoreRepository<TResource> : EntityFrameworkCoreRepos
533532
where TResource : class, IIdentifiable<int>
534533
{
535534
public EntityFrameworkCoreRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
536-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
537-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
535+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
536+
IResourceDefinitionAccessor resourceDefinitionAccessor)
537+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
538538
{
539539
}
540540
}

src/JsonApiDotNetCore/Resources/IResourceFactory.cs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Linq.Expressions;
3-
using JsonApiDotNetCore.Repositories;
43

54
namespace JsonApiDotNetCore.Resources
65
{
@@ -24,12 +23,5 @@ public TResource CreateInstance<TResource>()
2423
/// Returns an expression tree that represents creating a new resource object instance.
2524
/// </summary>
2625
public NewExpression CreateNewExpression(Type resourceType);
27-
28-
/// <summary>
29-
/// Provides access to the request-scoped <see cref="IResourceDefinitionAccessor" /> instance. This method has been added solely to prevent introducing a
30-
/// breaking change in the <see cref="EntityFrameworkCoreRepository{TResource,TId}" /> constructor and will be removed in the next major version.
31-
/// </summary>
32-
[Obsolete]
33-
IResourceDefinitionAccessor GetResourceDefinitionAccessor();
3426
}
3527
}

src/JsonApiDotNetCore/Resources/ResourceFactory.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,6 @@ public ResourceFactory(IServiceProvider serviceProvider)
1919
_serviceProvider = serviceProvider;
2020
}
2121

22-
/// <inheritdoc />
23-
public IResourceDefinitionAccessor GetResourceDefinitionAccessor()
24-
{
25-
return _serviceProvider.GetRequiredService<IResourceDefinitionAccessor>();
26-
}
27-
2822
/// <inheritdoc />
2923
public IIdentifiable CreateInstance(Type resourceType)
3024
{

src/JsonApiDotNetCore/Serialization/RequestDeserializer.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,20 @@ public class RequestDeserializer : BaseDeserializer, IJsonApiDeserializer
2929
private readonly IResourceDefinitionAccessor _resourceDefinitionAccessor;
3030

3131
public RequestDeserializer(IResourceContextProvider resourceContextProvider, IResourceFactory resourceFactory, ITargetedFields targetedFields,
32-
IHttpContextAccessor httpContextAccessor, IJsonApiRequest request, IJsonApiOptions options)
32+
IHttpContextAccessor httpContextAccessor, IJsonApiRequest request, IJsonApiOptions options, IResourceDefinitionAccessor resourceDefinitionAccessor)
3333
: base(resourceContextProvider, resourceFactory)
3434
{
3535
ArgumentGuard.NotNull(targetedFields, nameof(targetedFields));
3636
ArgumentGuard.NotNull(httpContextAccessor, nameof(httpContextAccessor));
3737
ArgumentGuard.NotNull(request, nameof(request));
3838
ArgumentGuard.NotNull(options, nameof(options));
39+
ArgumentGuard.NotNull(resourceDefinitionAccessor, nameof(resourceDefinitionAccessor));
3940

4041
_targetedFields = targetedFields;
4142
_httpContextAccessor = httpContextAccessor;
4243
_request = request;
4344
_options = options;
44-
45-
#pragma warning disable 612 // Method is obsolete
46-
_resourceDefinitionAccessor = resourceFactory.GetResourceDefinitionAccessor();
47-
#pragma warning restore 612
45+
_resourceDefinitionAccessor = resourceDefinitionAccessor;
4846
}
4947

5048
/// <inheritdoc />

test/DiscoveryTests/TestResourceRepository.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ namespace DiscoveryTests
1212
public sealed class TestResourceRepository : EntityFrameworkCoreRepository<TestResource>
1313
{
1414
public TestResourceRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
15-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
16-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
15+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
16+
IResourceDefinitionAccessor resourceDefinitionAccessor)
17+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
1718
{
1819
}
1920
}

test/JsonApiDotNetCoreExampleTests/IntegrationTests/AtomicOperations/Transactions/LyricRepository.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ public sealed class LyricRepository : EntityFrameworkCoreRepository<Lyric, long>
1616
public override string TransactionId => _extraDbContext.Database.CurrentTransaction.TransactionId.ToString();
1717

1818
public LyricRepository(ExtraDbContext extraDbContext, ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
19-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
20-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
19+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
20+
IResourceDefinitionAccessor resourceDefinitionAccessor)
21+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
2122
{
2223
_extraDbContext = extraDbContext;
2324

test/JsonApiDotNetCoreExampleTests/IntegrationTests/AtomicOperations/Transactions/MusicTrackRepository.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ public sealed class MusicTrackRepository : EntityFrameworkCoreRepository<MusicTr
1515
public override string TransactionId => null;
1616

1717
public MusicTrackRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
18-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
19-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
18+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
19+
IResourceDefinitionAccessor resourceDefinitionAccessor)
20+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
2021
{
2122
}
2223
}

test/JsonApiDotNetCoreExampleTests/IntegrationTests/CompositeKeys/CarRepository.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ public sealed class CarRepository : EntityFrameworkCoreRepository<Car, string>
1616
private readonly CarExpressionRewriter _writer;
1717

1818
public CarRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph, IResourceFactory resourceFactory,
19-
IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
20-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
19+
IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory, IResourceDefinitionAccessor resourceDefinitionAccessor)
20+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
2121
{
2222
_writer = new CarExpressionRewriter(resourceGraph);
2323
}

test/JsonApiDotNetCoreExampleTests/IntegrationTests/EagerLoading/BuildingRepository.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ namespace JsonApiDotNetCoreExampleTests.IntegrationTests.EagerLoading
1414
public sealed class BuildingRepository : EntityFrameworkCoreRepository<Building>
1515
{
1616
public BuildingRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
17-
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory)
18-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
17+
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
18+
IResourceDefinitionAccessor resourceDefinitionAccessor)
19+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
1920
{
2021
}
2122

test/JsonApiDotNetCoreExampleTests/IntegrationTests/QueryStrings/SparseFieldSets/ResultCapturingRepository.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ public sealed class ResultCapturingRepository<TResource> : EntityFrameworkCoreRe
2121

2222
public ResultCapturingRepository(ITargetedFields targetedFields, IDbContextResolver contextResolver, IResourceGraph resourceGraph,
2323
IResourceFactory resourceFactory, IEnumerable<IQueryConstraintProvider> constraintProviders, ILoggerFactory loggerFactory,
24-
ResourceCaptureStore captureStore)
25-
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory)
24+
IResourceDefinitionAccessor resourceDefinitionAccessor, ResourceCaptureStore captureStore)
25+
: base(targetedFields, contextResolver, resourceGraph, resourceFactory, constraintProviders, loggerFactory, resourceDefinitionAccessor)
2626
{
2727
_captureStore = captureStore;
2828
}

test/UnitTests/Models/ResourceConstructionTests.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public sealed class ResourceConstructionTests
1616
{
1717
private readonly Mock<IJsonApiRequest> _requestMock;
1818
private readonly Mock<IHttpContextAccessor> _mockHttpContextAccessor;
19+
private readonly Mock<IResourceDefinitionAccessor> _resourceDefinitionAccessorMock = new();
1920

2021
public ResourceConstructionTests()
2122
{
@@ -37,7 +38,7 @@ public void When_resource_has_default_constructor_it_must_succeed()
3738
serviceContainer.AddService(typeof(IResourceDefinitionAccessor), new NeverResourceDefinitionAccessor());
3839

3940
var serializer = new RequestDeserializer(graph, new ResourceFactory(serviceContainer), new TargetedFields(), _mockHttpContextAccessor.Object,
40-
_requestMock.Object, options);
41+
_requestMock.Object, options, _resourceDefinitionAccessorMock.Object);
4142

4243
var body = new
4344
{
@@ -70,7 +71,7 @@ public void When_resource_has_default_constructor_that_throws_it_must_fail()
7071
serviceContainer.AddService(typeof(IResourceDefinitionAccessor), new NeverResourceDefinitionAccessor());
7172

7273
var serializer = new RequestDeserializer(graph, new ResourceFactory(serviceContainer), new TargetedFields(), _mockHttpContextAccessor.Object,
73-
_requestMock.Object, options);
74+
_requestMock.Object, options, _resourceDefinitionAccessorMock.Object);
7475

7576
var body = new
7677
{
@@ -105,7 +106,7 @@ public void When_resource_has_constructor_with_string_parameter_it_must_fail()
105106
serviceContainer.AddService(typeof(IResourceDefinitionAccessor), new NeverResourceDefinitionAccessor());
106107

107108
var serializer = new RequestDeserializer(graph, new ResourceFactory(serviceContainer), new TargetedFields(), _mockHttpContextAccessor.Object,
108-
_requestMock.Object, options);
109+
_requestMock.Object, options, _resourceDefinitionAccessorMock.Object);
109110

110111
var body = new
111112
{

test/UnitTests/Serialization/Server/RequestDeserializerTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ public sealed class RequestDeserializerTests : DeserializerTestsSetup
1616
private readonly RequestDeserializer _deserializer;
1717
private readonly Mock<ITargetedFields> _fieldsManagerMock = new();
1818
private readonly Mock<IJsonApiRequest> _requestMock = new();
19+
private readonly Mock<IResourceDefinitionAccessor> _resourceDefinitionAccessorMock = new();
1920

2021
public RequestDeserializerTests()
2122
{
2223
_deserializer = new RequestDeserializer(ResourceGraph, new TestResourceFactory(), _fieldsManagerMock.Object, MockHttpContextAccessor.Object,
23-
_requestMock.Object, new JsonApiOptions());
24+
_requestMock.Object, new JsonApiOptions(), _resourceDefinitionAccessorMock.Object);
2425
}
2526

2627
[Fact]

test/UnitTests/TestResourceFactory.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,5 @@ public NewExpression CreateNewExpression(Type resourceType)
2121
{
2222
return Expression.New(resourceType);
2323
}
24-
25-
public IResourceDefinitionAccessor GetResourceDefinitionAccessor()
26-
{
27-
return new NeverResourceDefinitionAccessor();
28-
}
2924
}
3025
}

0 commit comments

Comments
 (0)