From c945c07530b0a379029bd57b2a10162773d22f05 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Mon, 3 Nov 2014 15:27:32 +0000 Subject: [PATCH] RM-1675 (Moved in-place record is not shown non-RM Administrator users) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@89782 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../record/InplaceRecordServiceImpl.java | 8 ++++++++ .../record/MoveInplaceRecordTest.java | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/InplaceRecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/InplaceRecordServiceImpl.java index 6c4ee8e816..e90693e924 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/InplaceRecordServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/InplaceRecordServiceImpl.java @@ -19,6 +19,7 @@ package org.alfresco.module.org_alfresco_module_rm.record; import java.util.List; +import java.util.Set; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; @@ -159,11 +160,18 @@ public class InplaceRecordServiceImpl extends ServiceBaseImpl implements Inplace { try { + // Get the extended readers/writers + Set extendedReaders = extendedSecurityService.getExtendedReaders(nodeRef); + Set extendedWriters = extendedSecurityService.getExtendedWriters(nodeRef); + // Move the record fileFolderService.moveFrom(nodeRef, source, targetNodeRef, null); // Update the originating location property nodeService.setProperty(nodeRef, PROP_RECORD_ORIGINATING_LOCATION, targetNodeRef); + + // Set the extended readers/writers + extendedSecurityService.addExtendedSecurity(nodeRef, extendedReaders, extendedWriters); } catch (FileExistsException | FileNotFoundException ex) { diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/MoveInplaceRecordTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/MoveInplaceRecordTest.java index a0e5dfc6b9..9c05652660 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/MoveInplaceRecordTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/MoveInplaceRecordTest.java @@ -18,7 +18,10 @@ */ package org.alfresco.module.org_alfresco_module_rm.test.integration.record; +import static org.apache.commons.collections.ListUtils.removeAll; + import java.util.List; +import java.util.Set; import org.alfresco.model.ContentModel; import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase; @@ -54,6 +57,10 @@ public class MoveInplaceRecordTest extends BaseRMTestCase // The destination folder in collaboration site private NodeRef destinationDmFolder; + // Extended Readers/Writers + private Set extendedReadersBeforeMove; + private Set extendedWritersBeforeMove; + public void given() { // Create the destination folder @@ -76,6 +83,9 @@ public class MoveInplaceRecordTest extends BaseRMTestCase // Check that the document is a record now assertTrue(recordService.isRecord(dmDocument)); + + extendedReadersBeforeMove = extendedSecurityService.getExtendedReaders(dmDocument); + extendedWritersBeforeMove = extendedSecurityService.getExtendedWriters(dmDocument); } public void when() @@ -100,6 +110,16 @@ public class MoveInplaceRecordTest extends BaseRMTestCase List destinationFolderChildAssocs = nodeService.getChildAssocs(destinationDmFolder); assertEquals(1, destinationFolderChildAssocs.size()); assertEquals(dmDocument, destinationFolderChildAssocs.get(0).getChildRef()); + + // Check extended readers/writers + Set extendedReadersAfterMove = extendedSecurityService.getExtendedReaders(dmDocument); + Set extendedWritersAfterMove = extendedSecurityService.getExtendedWriters(dmDocument); + + assertEquals(extendedReadersBeforeMove.size(), extendedReadersAfterMove.size()); + assertEquals(extendedWritersBeforeMove.size(), extendedWritersAfterMove.size()); + + assertEquals(0, removeAll(extendedReadersBeforeMove, extendedReadersAfterMove).size()); + assertEquals(0, removeAll(extendedWritersBeforeMove, extendedWritersAfterMove).size()); } }); }