Class ADMAccessControlListDAO
- java.lang.Object
-
- org.alfresco.repo.domain.permissions.ADMAccessControlListDAO
-
- All Implemented Interfaces:
AccessControlListDAO
public class ADMAccessControlListDAO extends java.lang.Object implements AccessControlListDAO
DAO layer for the improved ACL implementation. This layer is responsible for setting ACLs and any cascade behaviour required. It also implements the migration from the old implementation to the new.- Author:
- andyh
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classADMAccessControlListDAO.CounterSimple counterstatic classADMAccessControlListDAO.CounterSetCounter for each type of ACL change
-
Constructor Summary
Constructors Constructor Description ADMAccessControlListDAO()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidforceCopy(org.alfresco.service.cmr.repository.NodeRef nodeRef)AclgetAccessControlList(org.alfresco.service.cmr.repository.NodeRef nodeRef)Get the ACL from a node.AclgetAccessControlList(org.alfresco.service.cmr.repository.StoreRef storeRef)java.lang.LonggetIndirectAcl(org.alfresco.service.cmr.repository.NodeRef nodeRef)java.lang.LonggetInheritedAcl(org.alfresco.service.cmr.repository.NodeRef nodeRef)booleanisPreserveAuditableData()java.util.Map<ACLType,java.lang.Integer>patchAcls()voidsetAccessControlList(org.alfresco.service.cmr.repository.NodeRef nodeRef, java.lang.Long aclId)Set the ACL on a node.voidsetAccessControlList(org.alfresco.service.cmr.repository.NodeRef nodeRef, Acl acl)Set the ACL on a node.voidsetAccessControlList(org.alfresco.service.cmr.repository.StoreRef storeRef, Acl acl)voidsetAclDAO(AclDAO aclDaoComponent)voidsetBehaviourFilter(BehaviourFilter behaviourFilter)voidsetFixedAclMaxTransactionTime(long fixedAclMaxTransactionTime)voidsetFixedAcls(java.lang.Long nodeId, java.lang.Long inheritFrom, java.lang.Long mergeFrom, java.lang.Long sharedAclToReplace, java.util.List<AclChange> changes, boolean set)Support to set a shared ACL on a node and all of its childrenvoidsetFixedAcls(java.lang.Long nodeId, java.lang.Long inheritFrom, java.lang.Long mergeFrom, java.lang.Long sharedAclToReplace, java.util.List<AclChange> changes, boolean set, boolean asyncCall, boolean propagateOnChildren)Support to set a shared ACL on a node and all of its childrenjava.util.List<AclChange>setInheritanceForChildren(org.alfresco.service.cmr.repository.NodeRef parent, java.lang.Long inheritFrom, java.lang.Long sharedAclToReplace)Update inheritancejava.util.List<AclChange>setInheritanceForChildren(org.alfresco.service.cmr.repository.NodeRef parent, java.lang.Long inheritFrom, java.lang.Long sharedAclToReplace, boolean asyncCall)Set the inheritance on a given node and it's children.voidsetNodeDAO(NodeDAO nodeDAO)voidsetPreserveAuditableData(boolean preserveAuditableData)voidupdateChangedAcls(org.alfresco.service.cmr.repository.NodeRef startingPoint, java.util.List<AclChange> changes)Update any associated ACLsvoidupdateInheritance(java.lang.Long childNodeId, java.lang.Long oldParentAclId, java.lang.Long newParentAclId)
-
-
-
Method Detail
-
setNodeDAO
public void setNodeDAO(NodeDAO nodeDAO)
-
setAclDAO
public void setAclDAO(AclDAO aclDaoComponent)
-
setFixedAclMaxTransactionTime
public void setFixedAclMaxTransactionTime(long fixedAclMaxTransactionTime)
-
setBehaviourFilter
public void setBehaviourFilter(BehaviourFilter behaviourFilter)
-
setPreserveAuditableData
public void setPreserveAuditableData(boolean preserveAuditableData)
-
isPreserveAuditableData
public boolean isPreserveAuditableData()
-
forceCopy
public void forceCopy(org.alfresco.service.cmr.repository.NodeRef nodeRef)
- Specified by:
forceCopyin interfaceAccessControlListDAO
-
getAccessControlList
public Acl getAccessControlList(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Description copied from interface:AccessControlListDAOGet the ACL from a node.- Specified by:
getAccessControlListin interfaceAccessControlListDAO- Parameters:
nodeRef- The reference to the node.- Returns:
- The ACL.
-
getAccessControlList
public Acl getAccessControlList(org.alfresco.service.cmr.repository.StoreRef storeRef)
- Specified by:
getAccessControlListin interfaceAccessControlListDAO
-
getIndirectAcl
public java.lang.Long getIndirectAcl(org.alfresco.service.cmr.repository.NodeRef nodeRef)
- Specified by:
getIndirectAclin interfaceAccessControlListDAO
-
getInheritedAcl
public java.lang.Long getInheritedAcl(org.alfresco.service.cmr.repository.NodeRef nodeRef)
- Specified by:
getInheritedAclin interfaceAccessControlListDAO
-
patchAcls
public java.util.Map<ACLType,java.lang.Integer> patchAcls()
- Specified by:
patchAclsin interfaceAccessControlListDAO
-
setAccessControlList
public void setAccessControlList(org.alfresco.service.cmr.repository.NodeRef nodeRef, java.lang.Long aclId)Description copied from interface:AccessControlListDAOSet the ACL on a node.- Specified by:
setAccessControlListin interfaceAccessControlListDAO- Parameters:
nodeRef- The reference to the node.aclId- The ID of the ACL entity.
-
setAccessControlList
public void setAccessControlList(org.alfresco.service.cmr.repository.NodeRef nodeRef, Acl acl)Description copied from interface:AccessControlListDAOSet the ACL on a node.- Specified by:
setAccessControlListin interfaceAccessControlListDAO- Parameters:
nodeRef- The reference to the node.acl- The ACL.
-
setAccessControlList
public void setAccessControlList(org.alfresco.service.cmr.repository.StoreRef storeRef, Acl acl)- Specified by:
setAccessControlListin interfaceAccessControlListDAO
-
setInheritanceForChildren
public java.util.List<AclChange> setInheritanceForChildren(org.alfresco.service.cmr.repository.NodeRef parent, java.lang.Long inheritFrom, java.lang.Long sharedAclToReplace)
Description copied from interface:AccessControlListDAOUpdate inheritance- Specified by:
setInheritanceForChildrenin interfaceAccessControlListDAO
-
setInheritanceForChildren
public java.util.List<AclChange> setInheritanceForChildren(org.alfresco.service.cmr.repository.NodeRef parent, java.lang.Long inheritFrom, java.lang.Long sharedAclToReplace, boolean asyncCall)
Description copied from interface:AccessControlListDAOSet the inheritance on a given node and it's children. If the operation takes too long and asyncCall parameter set accordingly, fixed ACLs method will be synchronously called.- Specified by:
setInheritanceForChildrenin interfaceAccessControlListDAO
-
updateChangedAcls
public void updateChangedAcls(org.alfresco.service.cmr.repository.NodeRef startingPoint, java.util.List<AclChange> changes)Description copied from interface:AccessControlListDAOUpdate any associated ACLs- Specified by:
updateChangedAclsin interfaceAccessControlListDAO
-
setFixedAcls
public void setFixedAcls(java.lang.Long nodeId, java.lang.Long inheritFrom, java.lang.Long mergeFrom, java.lang.Long sharedAclToReplace, java.util.List<AclChange> changes, boolean set)Support to set a shared ACL on a node and all of its children- Specified by:
setFixedAclsin interfaceAccessControlListDAO- Parameters:
nodeId- the parent node idinheritFrom- the parent node's ACLmergeFrom- the shared ACL, if already known. Ifnull, will be retrieved / created lazilychanges- the list in which to record changesset- set the shared ACL on the parent ?
-
setFixedAcls
public void setFixedAcls(java.lang.Long nodeId, java.lang.Long inheritFrom, java.lang.Long mergeFrom, java.lang.Long sharedAclToReplace, java.util.List<AclChange> changes, boolean set, boolean asyncCall, boolean propagateOnChildren)Support to set a shared ACL on a node and all of its children- Parameters:
nodeId- the parent nodeinheritFrom- the parent node's ACLmergeFrom- the shared ACL, if already known. Ifnull, will be retrieved / created lazilychanges- the list in which to record changesset- set the shared ACL on the parent ?asyncCall- function may require asynchronous call depending the execution time; if time exceeds configuredfixedAclMaxTransactionTimevalue, recursion is stopped using propagateOnChildren parameter(set on false) and those nodes for which the method execution was not finished in the classical way, will have ASPECT_PENDING_FIX_ACL, which will be used inFixedAclUpdaterfor later processing
-
updateInheritance
public void updateInheritance(java.lang.Long childNodeId, java.lang.Long oldParentAclId, java.lang.Long newParentAclId)- Specified by:
updateInheritancein interfaceAccessControlListDAO
-
-