From 59a4b2893a079165acc42d80de20d3ecfb2da3ea Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Thu, 20 Feb 2014 03:41:20 +0000 Subject: [PATCH] RM-1267: Delete Record capability is needed to delete the reference git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.1@62862 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../RecordsManagementAdminServiceImpl.java | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java index afe04b98bc..1702c3c060 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/admin/RecordsManagementAdminServiceImpl.java @@ -1116,7 +1116,7 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin /** * @see org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService#removeCustomReference(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName) */ - public void removeCustomReference(NodeRef fromNode, NodeRef toNode, QName assocId) + public void removeCustomReference(final NodeRef fromNode, final NodeRef toNode, final QName assocId) { Map availableAssocs = this.getCustomReferenceDefinitions(); @@ -1133,14 +1133,23 @@ public class RecordsManagementAdminServiceImpl implements RecordsManagementAdmin // TODO: Ask for a more efficient method such as // nodeService.removeChildAssociation(fromNode, toNode, chRef.getTypeQName(), null); - List children = nodeService.getChildAssocs(fromNode); - for (ChildAssociationRef chRef : children) - { - if (assocId.equals(chRef.getTypeQName()) && chRef.getChildRef().equals(toNode)) - { - nodeService.removeChildAssociation(chRef); - } - } + AuthenticationUtil.runAsSystem(new RunAsWork() + { + @Override + public Void doWork() throws Exception + { + List children = nodeService.getChildAssocs(fromNode); + for (ChildAssociationRef chRef : children) + { + if (assocId.equals(chRef.getTypeQName()) && chRef.getChildRef().equals(toNode)) + { + nodeService.removeChildAssociation(chRef); + } + } + + return null; + } + }); } else {