From 264b0f323fb427e57483c0e54899a57d3df5c9c2 Mon Sep 17 00:00:00 2001 From: Mark Rogers Date: Thu, 8 Dec 2011 10:22:30 +0000 Subject: [PATCH] ALF-11875 - FTP Site Manager cannot remove content. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32632 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/imap/ImapServiceImpl.java | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/source/java/org/alfresco/repo/imap/ImapServiceImpl.java b/source/java/org/alfresco/repo/imap/ImapServiceImpl.java index bbc15440dd..883456974e 100644 --- a/source/java/org/alfresco/repo/imap/ImapServiceImpl.java +++ b/source/java/org/alfresco/repo/imap/ImapServiceImpl.java @@ -1579,19 +1579,29 @@ public class ImapServiceImpl implements ImapService, OnCreateChildAssociationPol } @Override - public void beforeDeleteNode(NodeRef nodeRef) + public void beforeDeleteNode(final NodeRef nodeRef) { - for (ChildAssociationRef parentAssoc : nodeService.getParentAssocs(nodeRef)) + // RUN AS SYSTEM due to Node Service archive permissions problem ALF-11103 + AuthenticationUtil.runAs(new RunAsWork() { - NodeRef folderRef = parentAssoc.getParentRef(); - if (this.nodeService.hasAspect(folderRef, ImapModel.ASPECT_IMAP_FOLDER)) + @Override + public Void doWork() throws Exception { - this.messageCache.remove(nodeRef); + for (ChildAssociationRef parentAssoc : nodeService.getParentAssocs(nodeRef)) + { + NodeRef folderRef = parentAssoc.getParentRef(); + if (nodeService.hasAspect(folderRef, ImapModel.ASPECT_IMAP_FOLDER)) + { + messageCache.remove(nodeRef); - // Force generation of a new change token - getUidValidityTransactionListener(folderRef); + // Force generation of a new change token + getUidValidityTransactionListener(folderRef); + } + } + + return null; } - } + }, AuthenticationUtil.getSystemUserName()); } private class UidValidityTransactionListener extends TransactionListenerAdapter