From 22d42b4761ed38947c4fd5e01fc2dd5a9a0278ab Mon Sep 17 00:00:00 2001 From: Ancuta Morarasu Date: Wed, 11 May 2016 12:12:03 +0000 Subject: [PATCH] Merged HEAD (5.2) to 5.2.N (5.2.1) 126580 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 124739 gjames: ACE-5295: listArchivedNodes now works for non-admin users git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126925 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../node/archive/NodeArchiveServiceImpl.java | 17 ++++++++++++----- .../node/archive/ArchiveAndRestoreTest.java | 8 +++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java b/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java index 190d324306..2d0b0ccdfd 100644 --- a/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java +++ b/source/java/org/alfresco/repo/node/archive/NodeArchiveServiceImpl.java @@ -731,7 +731,7 @@ public class NodeArchiveServiceImpl implements NodeArchiveService private Pair getArchiveNodeRefAssocTypePair(final NodeRef archiveStoreRootNodeRef) { - String currentUser = getCurrentUser(); + final String currentUser = getCurrentUser(); if (archiveStoreRootNodeRef == null || !nodeService.exists(archiveStoreRootNodeRef)) { @@ -745,12 +745,19 @@ public class NodeArchiveServiceImpl implements NodeArchiveService } else { - List list = nodeService.getChildrenByName(archiveStoreRootNodeRef, - ContentModel.ASSOC_ARCHIVE_USER_LINK, - Collections.singletonList(currentUser)); + List list = AuthenticationUtil.runAs(new RunAsWork>() + { + @Override + public List doWork() throws Exception + { + return nodeService.getChildrenByName(archiveStoreRootNodeRef, + ContentModel.ASSOC_ARCHIVE_USER_LINK, + Collections.singletonList(currentUser)); + } + }, AuthenticationUtil.getAdminUserName()); // Empty list means that the current user hasn't deleted anything yet. - if (list.isEmpty()) + if (list == null || list.isEmpty()) { return new Pair(null, null); } diff --git a/source/test-java/org/alfresco/repo/node/archive/ArchiveAndRestoreTest.java b/source/test-java/org/alfresco/repo/node/archive/ArchiveAndRestoreTest.java index 42f76ce532..85fa244a34 100644 --- a/source/test-java/org/alfresco/repo/node/archive/ArchiveAndRestoreTest.java +++ b/source/test-java/org/alfresco/repo/node/archive/ArchiveAndRestoreTest.java @@ -1022,7 +1022,10 @@ public class ArchiveAndRestoreTest extends TestCase // USER_B deletes "bb" nodeService.deleteNode(bb); - + + result = nodeArchiveService.listArchivedNodes(queryBuilder); + assertEquals("USER_B deleted 1 item and USER_B can see it.", 1, result.getPage().size()); + result = runListArchivedNodesAsAdmin(queryBuilder); assertEquals("USER_B deleted only 1 item.", 1, result.getPage().size()); @@ -1035,6 +1038,9 @@ public class ArchiveAndRestoreTest extends TestCase this.archiveStoreRootNodeRef, paging) .build(); + result = nodeArchiveService.listArchivedNodes(queryBuilder); + assertEquals("USER_A deleted 1 item and USER_A can see it.", 1, result.getPage().size()); + result = runListArchivedNodesAsAdmin(queryBuilder); assertEquals("USER_A deleted only 1 item.", 1, result.getPage().size()); assertEquals(QNAME_AA.getLocalName(),