Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud)

78359: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud)
      76619: Merged DEV to V4.2-BUG-FIX (4.2.4).
         76456: MNT-10693 Changing permission on a document changes its modified fields in Share
         76496: MNT-10693 Changing permission on a document changes its modified fields in Share
         76499: MNT-10693 Changing permission on a document changes its modified fields in Share
                   - In PermissionServiceTest.testPreserveAuditableData() was made changes.
         76520: MNT-10693 Changing permission on a document changes its modified fields in Share
                   - In AbstractPermissionTest was changed visibility of 'applicationContext' to 'protected'. 


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@82530 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Erik Winlof
2014-09-03 11:36:59 +00:00
parent c941d1be30
commit d385bc9bb1
8 changed files with 105 additions and 18 deletions

View File

@@ -23,9 +23,11 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.domain.node.NodeDAO;
import org.alfresco.repo.domain.node.NodeIdAndAclId;
import org.alfresco.repo.domain.permissions.AVMAccessControlListDAO.CounterSet;
import org.alfresco.repo.policy.BehaviourFilter;
import org.alfresco.repo.security.permissions.ACLType;
import org.alfresco.repo.security.permissions.AccessControlList;
import org.alfresco.repo.security.permissions.AccessControlListProperties;
@@ -52,6 +54,9 @@ public class ADMAccessControlListDAO implements AccessControlListDAO
private NodeDAO nodeDAO;
private AclDAO aclDaoComponent;
private BehaviourFilter behaviourFilter;
private boolean preserveAuditableData = true;
public void setNodeDAO(NodeDAO nodeDAO)
{
@@ -62,6 +67,21 @@ public class ADMAccessControlListDAO implements AccessControlListDAO
{
this.aclDaoComponent = aclDaoComponent;
}
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
{
this.behaviourFilter = behaviourFilter;
}
public void setPreserveAuditableData(boolean preserveAuditableData)
{
this.preserveAuditableData = preserveAuditableData;
}
public boolean isPreserveAuditableData()
{
return preserveAuditableData;
}
public void forceCopy(NodeRef nodeRef)
{
@@ -250,8 +270,24 @@ public class ADMAccessControlListDAO implements AccessControlListDAO
public void setAccessControlList(NodeRef nodeRef, Long aclId)
{
Long nodeId = getNodeIdNotNull(nodeRef);
nodeDAO.setNodeAclId(nodeId, aclId);
boolean auditableBehaviorWasDisabled = preserveAuditableData && behaviourFilter.isEnabled(ContentModel.ASPECT_AUDITABLE);
if (auditableBehaviorWasDisabled)
{
behaviourFilter.disableBehaviour(ContentModel.ASPECT_AUDITABLE);
}
try
{
Long nodeId = getNodeIdNotNull(nodeRef);
nodeDAO.setNodeAclId(nodeId, aclId);
}
finally
{
if (auditableBehaviorWasDisabled)
{
behaviourFilter.enableBehaviour(ContentModel.ASPECT_AUDITABLE);
}
}
}
public void setAccessControlList(NodeRef nodeRef, Acl acl)

View File

@@ -136,7 +136,7 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
private BehaviourFilter behaviourFilter;
private NamedObjectRegistry<CannedQueryFactory<NodeRef>> cannedQueryRegistry;
private boolean preserveModificationData = true;
private boolean preserveAuditableData = true;
// TODO: Replace this with a more formal means of identifying "system" folders (i.e. aspect or UUID)
private List<String> systemPaths;
@@ -216,14 +216,14 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
this.behaviourFilter = behaviourFilter;
}
public void setPreserveModificationData(boolean preserveModificationData)
public void setPreserveAuditableData(boolean preserveAuditableData)
{
this.preserveModificationData = preserveModificationData;
this.preserveAuditableData = preserveAuditableData;
}
public boolean isPreserveModificationData()
public boolean isPreserveAuditableData()
{
return preserveModificationData;
return preserveAuditableData;
}
@@ -1084,7 +1084,7 @@ public class FileFolderServiceImpl extends AbstractBaseCopyService implements Fi
if (isPrimaryParent)
{
// move the node so that the association moves as well
boolean auditableBehaviorWasDisabled = preserveModificationData && behaviourFilter.isEnabled(ContentModel.ASPECT_AUDITABLE);
boolean auditableBehaviorWasDisabled = preserveAuditableData && behaviourFilter.isEnabled(ContentModel.ASPECT_AUDITABLE);
if (auditableBehaviorWasDisabled)
{
behaviourFilter.disableBehaviour(ContentModel.ASPECT_AUDITABLE);