mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-3074: Inplace move no longer needs to modify extended security
* inplace move no longer needs to store and reset extended security * no need to clear extended security when assoc is removed * a couple of extra checks to inplace move integration test
This commit is contained in:
@@ -42,8 +42,6 @@ import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedReaderDynamicAuthority;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedWriterDynamicAuthority;
|
||||
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
|
||||
import org.alfresco.repo.cache.SimpleCache;
|
||||
import org.alfresco.repo.domain.node.NodeDAO;
|
||||
|
@@ -136,7 +136,7 @@ public class RecordAspect extends AbstractDisposableItem
|
||||
Set<String> writers = extendedSecurityService.getExtendedWriters(parent);
|
||||
if (readers != null && readers.size() != 0)
|
||||
{
|
||||
extendedSecurityService.addExtendedSecurity(thumbnail, readers, writers, false);
|
||||
extendedSecurityService.addExtendedSecurity(thumbnail, readers, writers);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -34,13 +34,10 @@ import java.util.Set;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
|
||||
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model;
|
||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.role.FilePlanRoleService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedReaderDynamicAuthority;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.ExtendedWriterDynamicAuthority;
|
||||
import org.alfresco.module.org_alfresco_module_rm.security.FilePlanPermissionService;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
|
@@ -30,7 +30,6 @@ package org.alfresco.module.org_alfresco_module_rm.record;
|
||||
import static org.alfresco.model.ContentModel.ASPECT_PENDING_DELETE;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
@@ -173,18 +172,11 @@ public class InplaceRecordServiceImpl extends ServiceBaseImpl implements Inplace
|
||||
{
|
||||
try
|
||||
{
|
||||
// Get the extended readers/writers
|
||||
Set<String> extendedReaders = extendedSecurityService.getExtendedReaders(nodeRef);
|
||||
Set<String> 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)
|
||||
{
|
||||
|
@@ -253,10 +253,6 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
this,
|
||||
"onCreateChildAssociation",
|
||||
NotificationFrequency.FIRST_EVENT);
|
||||
private JavaBehaviour onDeleteDeclaredRecordLink = new JavaBehaviour(
|
||||
this,
|
||||
"onDeleteDeclaredRecordLink",
|
||||
NotificationFrequency.FIRST_EVENT);
|
||||
|
||||
/**
|
||||
* @param identifierService identifier service
|
||||
@@ -417,11 +413,6 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
TYPE_RECORD_FOLDER,
|
||||
ContentModel.ASSOC_CONTAINS,
|
||||
onCreateChildAssociation);
|
||||
policyComponent.bindAssociationBehaviour(
|
||||
NodeServicePolicies.BeforeDeleteChildAssociationPolicy.QNAME,
|
||||
ContentModel.TYPE_FOLDER,
|
||||
ContentModel.ASSOC_CONTAINS,
|
||||
onDeleteDeclaredRecordLink);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -592,27 +583,6 @@ public class RecordServiceImpl extends BaseBehaviourBean
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Looking specifically at linked content that was declared a record from a non-rm site.
|
||||
* When the site or the folder that the link was declared in is deleted we need to remove
|
||||
* the extended security property accounts in the tree
|
||||
*
|
||||
* @param childAssocRef
|
||||
*/
|
||||
public void onDeleteDeclaredRecordLink(ChildAssociationRef childAssocRef)
|
||||
{
|
||||
// Is the deleted child association not a primary association?
|
||||
// Does the deleted child association have the rma:recordOriginatingDetails aspect?
|
||||
// Is the parent of the deleted child association a folder (cm:folder)?
|
||||
if (!childAssocRef.isPrimary() &&
|
||||
nodeService.hasAspect(childAssocRef.getChildRef(), ASPECT_RECORD_ORIGINATING_DETAILS) &&
|
||||
nodeService.getType(childAssocRef.getParentRef()).equals(ContentModel.TYPE_FOLDER))
|
||||
{
|
||||
// ..then remove the extended readers and writers up the tree for this remaining node
|
||||
extendedSecurityService.removeAllExtendedSecurity(childAssocRef.getChildRef());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.record.RecordService#disablePropertyEditableCheck()
|
||||
*/
|
||||
|
@@ -69,6 +69,9 @@ public class MoveInplaceRecordTest extends BaseRMTestCase
|
||||
// Extended Readers/Writers
|
||||
private Set<String> extendedReadersBeforeMove;
|
||||
private Set<String> extendedWritersBeforeMove;
|
||||
|
||||
// primary parent of record
|
||||
private NodeRef primaryParentBeforeMove;
|
||||
|
||||
public void given()
|
||||
{
|
||||
@@ -95,6 +98,12 @@ public class MoveInplaceRecordTest extends BaseRMTestCase
|
||||
|
||||
extendedReadersBeforeMove = extendedSecurityService.getExtendedReaders(dmDocument);
|
||||
extendedWritersBeforeMove = extendedSecurityService.getExtendedWriters(dmDocument);
|
||||
|
||||
// get the primary parent and assert that it's a record management artifact
|
||||
primaryParentBeforeMove = nodeService.getPrimaryParent(dmDocument).getParentRef();
|
||||
assertTrue("Primary parent of newly created should be a records management artifact.",
|
||||
filePlanService.isFilePlanComponent(primaryParentBeforeMove));
|
||||
|
||||
}
|
||||
|
||||
public void when()
|
||||
@@ -114,12 +123,24 @@ public class MoveInplaceRecordTest extends BaseRMTestCase
|
||||
|
||||
public void then()
|
||||
{
|
||||
// assert that the document is still a record
|
||||
assertTrue("After move the document should still be a record.",
|
||||
recordService.isRecord(dmDocument));
|
||||
|
||||
// Check that the source folder is empty now and the destination folder has the document
|
||||
assertEquals(0, nodeService.getChildAssocs(dmFolder).size());
|
||||
List<ChildAssociationRef> destinationFolderChildAssocs = nodeService.getChildAssocs(destinationDmFolder);
|
||||
assertEquals(1, destinationFolderChildAssocs.size());
|
||||
assertEquals(dmDocument, destinationFolderChildAssocs.get(0).getChildRef());
|
||||
|
||||
|
||||
// Check that the primary parent of the record has remained unchanged
|
||||
NodeRef primaryParentAfterMove = nodeService.getPrimaryParent(dmDocument).getParentRef();
|
||||
assertTrue("Primary parent of record after inplace move should be a records management artifact.",
|
||||
filePlanService.isFilePlanComponent(primaryParentAfterMove));
|
||||
assertEquals("Primary parent of record after inplace move should remain the same.",
|
||||
primaryParentBeforeMove,
|
||||
primaryParentAfterMove);
|
||||
|
||||
// Check extended readers/writers
|
||||
Set<String> extendedReadersAfterMove = extendedSecurityService.getExtendedReaders(dmDocument);
|
||||
Set<String> extendedWritersAfterMove = extendedSecurityService.getExtendedWriters(dmDocument);
|
||||
|
Reference in New Issue
Block a user