From 6e0979ea2cc4be9a5aa143c1554b8f4a290d5a4f Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Thu, 24 Sep 2009 09:57:45 +0000 Subject: [PATCH] Added invokeBeforeDeleteNode calls for all nodes down a deletion stack git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@16480 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../repo/node/db/DbNodeServiceImpl.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java index d173c13820..13c7528fe9 100644 --- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java @@ -809,6 +809,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl Long nodeId = nodePair.getFirst(); // Get the node's primary children final List> childNodePairs = new ArrayList>(5); +// final Map childAssocRefsByChildId = new HashMap(5); NodeDaoService.ChildAssocRefQueryCallback callback = new NodeDaoService.ChildAssocRefQueryCallback() { public boolean handle( @@ -819,6 +820,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl { // Add it childNodePairs.add(childNodePair); +// childAssocRefsByChildId.put(childNodePair.getFirst(), childAssocPair.getSecond()); // No recurse return false; } @@ -828,18 +830,25 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl // Each child must be deleted for (Pair childNodePair : childNodePairs) { - // Cascade, if required + // Fire node policies. This ensures that each node in the hierarchy gets a notification fired. + Long childNodeId = childNodePair.getFirst(); + NodeRef childNodeRef = childNodePair.getSecond(); +// QName childNodeType = nodeDaoService.getNodeType(childNodeId); +// Set childNodeQNames = nodeDaoService.getNodeAspects(childNodeId); +// ChildAssociationRef childParentAssocRef = childAssocRefsByChildId.get(childNodeId); + + invokeBeforeDeleteNode(childNodeRef); + + // Cascade first, if required. + // This ensures that the beforeDelete policy is fired for all nodes in the hierarchy before + // the actual delete starts. if (cascade) { deletePrimaryChildren(childNodePair, true); } // Delete the child - nodeDaoService.deleteNode(childNodePair.getFirst()); -// It would appear that policies should be fired here, but they have never been, so -// in the order to maintain historical consistency we keep it the same. -// // Fire node policies. This ensures that each node in the hierarchy gets a notification fired. -// invokeOnDeleteNode(oldParentAssocPair.getSecond(), childNodeTypeQName, childNodeAspectQNames, true); -// invokeOnCreateNode(newParentAssocPair.getSecond()); + nodeDaoService.deleteNode(childNodeId); +// invokeOnDeleteNode(childParentAssocRef, childNodeType, childNodeQNames, true); } }