@@ -22,19 +22,22 @@ internal sealed class ResourceHookExecutor : IResourceHookExecutor
2222 private readonly IIncludeService _includeService ;
2323 private readonly ITargetedFields _targetedFields ;
2424 private readonly IResourceGraph _resourceGraph ;
25+ private readonly IResourceFactory _resourceFactory ;
2526
2627 public ResourceHookExecutor (
2728 IHookExecutorHelper executorHelper ,
2829 ITraversalHelper traversalHelper ,
2930 ITargetedFields targetedFields ,
3031 IIncludeService includedRelationships ,
31- IResourceGraph resourceGraph )
32+ IResourceGraph resourceGraph ,
33+ IResourceFactory resourceFactory )
3234 {
3335 _executorHelper = executorHelper ;
3436 _traversalHelper = traversalHelper ;
3537 _targetedFields = targetedFields ;
3638 _includeService = includedRelationships ;
3739 _resourceGraph = resourceGraph ;
40+ _resourceFactory = resourceFactory ;
3841 }
3942
4043 /// <inheritdoc/>
@@ -57,7 +60,7 @@ public IEnumerable<TResource> BeforeUpdate<TResource>(IEnumerable<TResource> ent
5760 var diff = new DiffableEntityHashSet < TResource > ( node . UniqueEntities , dbValues , node . LeftsToNextLayer ( ) , _targetedFields ) ;
5861 IEnumerable < TResource > updated = container . BeforeUpdate ( diff , pipeline ) ;
5962 node . UpdateUnique ( updated ) ;
60- node . Reassign ( entities ) ;
63+ node . Reassign ( _resourceFactory , entities ) ;
6164 }
6265
6366 FireNestedBeforeUpdateHooks ( pipeline , _traversalHelper . CreateNextLayer ( node ) ) ;
@@ -72,7 +75,7 @@ public IEnumerable<TResource> BeforeCreate<TResource>(IEnumerable<TResource> ent
7275 var affected = new EntityHashSet < TResource > ( ( HashSet < TResource > ) node . UniqueEntities , node . LeftsToNextLayer ( ) ) ;
7376 IEnumerable < TResource > updated = container . BeforeCreate ( affected , pipeline ) ;
7477 node . UpdateUnique ( updated ) ;
75- node . Reassign ( entities ) ;
78+ node . Reassign ( _resourceFactory , entities ) ;
7679 }
7780 FireNestedBeforeUpdateHooks ( pipeline , _traversalHelper . CreateNextLayer ( node ) ) ;
7881 return entities ;
@@ -89,7 +92,7 @@ public IEnumerable<TResource> BeforeDelete<TResource>(IEnumerable<TResource> ent
8992
9093 IEnumerable < TResource > updated = container . BeforeDelete ( affected , pipeline ) ;
9194 node . UpdateUnique ( updated ) ;
92- node . Reassign ( entities ) ;
95+ node . Reassign ( _resourceFactory , entities ) ;
9396 }
9497
9598 // If we're deleting an article, we're implicitly affected any owners related to it.
@@ -113,14 +116,14 @@ public IEnumerable<TResource> OnReturn<TResource>(IEnumerable<TResource> entitie
113116 IEnumerable < TResource > updated = container . OnReturn ( ( HashSet < TResource > ) node . UniqueEntities , pipeline ) ;
114117 ValidateHookResponse ( updated ) ;
115118 node . UpdateUnique ( updated ) ;
116- node . Reassign ( entities ) ;
119+ node . Reassign ( _resourceFactory , entities ) ;
117120 }
118121
119122 Traverse ( _traversalHelper . CreateNextLayer ( node ) , ResourceHook . OnReturn , ( nextContainer , nextNode ) =>
120123 {
121124 var filteredUniqueSet = CallHook ( nextContainer , ResourceHook . OnReturn , new object [ ] { nextNode . UniqueEntities , pipeline } ) ;
122125 nextNode . UpdateUnique ( filteredUniqueSet ) ;
123- nextNode . Reassign ( ) ;
126+ nextNode . Reassign ( _resourceFactory ) ;
124127 } ) ;
125128 return entities ;
126129 }
@@ -270,7 +273,7 @@ private void FireNestedBeforeUpdateHooks(ResourcePipeline pipeline, NodeLayer la
270273 var allowedIds = CallHook ( nestedHookContainer , ResourceHook . BeforeUpdateRelationship , new object [ ] { GetIds ( uniqueEntities ) , resourcesByRelationship , pipeline } ) . Cast < string > ( ) ;
271274 var updated = GetAllowedEntities ( uniqueEntities , allowedIds ) ;
272275 node . UpdateUnique ( updated ) ;
273- node . Reassign ( ) ;
276+ node . Reassign ( _resourceFactory ) ;
274277 }
275278 }
276279
0 commit comments