Skip to content

Commit d84f30f

Browse files
committed
feat: AuthResourceBase with default hook implementation
1 parent d7e71d8 commit d84f30f

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

src/JsonApiDotNetCore/Hooks/Discovery/HooksDiscovery.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ public HooksDiscovery()
3636
/// <returns>The implemented hooks for model.</returns>
3737
void DiscoverImplementedHooksForModel()
3838
{
39-
var derivedTypes = TypeLocator.GetDerivedTypes(typeof(TEntity).Assembly, typeof(ResourceDefinition<TEntity>)).ToList();
39+
Type parameterizedResourceDefinition = typeof(ResourceDefinition<TEntity>);
40+
var derivedTypes = TypeLocator.GetDerivedTypes(typeof(TEntity).Assembly, parameterizedResourceDefinition).ToList();
4041
try
4142
{
4243
var implementedHooks = new List<ResourceHook>();
@@ -48,7 +49,7 @@ void DiscoverImplementedHooksForModel()
4849
foreach (var hook in _allHooks)
4950
{
5051
var method = targetType.GetMethod(hook.ToString("G"));
51-
if (method.DeclaringType == targetType)
52+
if (method.DeclaringType != parameterizedResourceDefinition)
5253
{
5354
implementedHooks.Add(hook);
5455
if (hook == ResourceHook.BeforeImplicitUpdateRelationship)

test/UnitTests/ResourceHooks/DiscoveryTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ public class AnotherDummy : Identifiable { }
3434
public abstract class ResourceDefintionBase<T> : ResourceDefinition<T> where T : class, IIdentifiable
3535
{
3636
protected ResourceDefintionBase(IResourceGraph graph) : base(graph) { }
37+
38+
public override IEnumerable<T> BeforeDelete(HashSet<T> entities, ResourcePipeline pipeline) { return entities; }
39+
public override void AfterDelete(HashSet<T> entities, ResourcePipeline pipeline, bool succeeded) { }
3740
}
3841

3942
public class AnotherDummyResourceDefinition : ResourceDefintionBase<AnotherDummy>
4043
{
4144
public AnotherDummyResourceDefinition() : base(new ResourceGraphBuilder().AddResource<Dummy>().Build()) { }
42-
43-
public override IEnumerable<AnotherDummy> BeforeDelete(HashSet<AnotherDummy> entities, ResourcePipeline pipeline) { return entities; }
44-
public override void AfterDelete(HashSet<AnotherDummy> entities, ResourcePipeline pipeline, bool succeeded) { }
4545
}
4646
[Fact]
4747
public void Hook_Discovery_With_Inheritance()

0 commit comments

Comments
 (0)