Class 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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void forceCopy​(org.alfresco.service.cmr.repository.NodeRef nodeRef)  
      Acl getAccessControlList​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
      Get the ACL from a node.
      Acl getAccessControlList​(org.alfresco.service.cmr.repository.StoreRef storeRef)  
      java.lang.Long getIndirectAcl​(org.alfresco.service.cmr.repository.NodeRef nodeRef)  
      java.lang.Long getInheritedAcl​(org.alfresco.service.cmr.repository.NodeRef nodeRef)  
      boolean isPreserveAuditableData()  
      java.util.Map<ACLType,​java.lang.Integer> patchAcls()  
      void setAccessControlList​(org.alfresco.service.cmr.repository.NodeRef nodeRef, java.lang.Long aclId)
      Set the ACL on a node.
      void setAccessControlList​(org.alfresco.service.cmr.repository.NodeRef nodeRef, Acl acl)
      Set the ACL on a node.
      void setAccessControlList​(org.alfresco.service.cmr.repository.StoreRef storeRef, Acl acl)  
      void setAclDAO​(AclDAO aclDaoComponent)  
      void setBehaviourFilter​(BehaviourFilter behaviourFilter)  
      void setFixedAclMaxTransactionTime​(long fixedAclMaxTransactionTime)  
      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
      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
      java.util.List<AclChange> setInheritanceForChildren​(org.alfresco.service.cmr.repository.NodeRef parent, java.lang.Long inheritFrom, java.lang.Long sharedAclToReplace)
      Update inheritance
      java.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.
      void setNodeDAO​(NodeDAO nodeDAO)  
      void setPreserveAuditableData​(boolean preserveAuditableData)  
      void updateChangedAcls​(org.alfresco.service.cmr.repository.NodeRef startingPoint, java.util.List<AclChange> changes)
      Update any associated ACLs
      void updateInheritance​(java.lang.Long childNodeId, java.lang.Long oldParentAclId, java.lang.Long newParentAclId)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ADMAccessControlListDAO

        public ADMAccessControlListDAO()
    • 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:
        forceCopy in interface AccessControlListDAO
      • getAccessControlList

        public Acl getAccessControlList​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
        Description copied from interface: AccessControlListDAO
        Get the ACL from a node.
        Specified by:
        getAccessControlList in interface AccessControlListDAO
        Parameters:
        nodeRef - The reference to the node.
        Returns:
        The ACL.
      • getIndirectAcl

        public java.lang.Long getIndirectAcl​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
        Specified by:
        getIndirectAcl in interface AccessControlListDAO
      • getInheritedAcl

        public java.lang.Long getInheritedAcl​(org.alfresco.service.cmr.repository.NodeRef nodeRef)
        Specified by:
        getInheritedAcl in interface AccessControlListDAO
      • setAccessControlList

        public void setAccessControlList​(org.alfresco.service.cmr.repository.NodeRef nodeRef,
                                         java.lang.Long aclId)
        Description copied from interface: AccessControlListDAO
        Set the ACL on a node.
        Specified by:
        setAccessControlList in interface AccessControlListDAO
        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: AccessControlListDAO
        Set the ACL on a node.
        Specified by:
        setAccessControlList in interface AccessControlListDAO
        Parameters:
        nodeRef - The reference to the node.
        acl - The ACL.
      • 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: AccessControlListDAO
        Set 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:
        setInheritanceForChildren in interface AccessControlListDAO
      • 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:
        setFixedAcls in interface AccessControlListDAO
        Parameters:
        nodeId - the parent node id
        inheritFrom - the parent node's ACL
        mergeFrom - the shared ACL, if already known. If null, will be retrieved / created lazily
        changes - the list in which to record changes
        set - 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 node
        inheritFrom - the parent node's ACL
        mergeFrom - the shared ACL, if already known. If null, will be retrieved / created lazily
        changes - the list in which to record changes
        set - set the shared ACL on the parent ?
        asyncCall - function may require asynchronous call depending the execution time; if time exceeds configured fixedAclMaxTransactionTime value, 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 in FixedAclUpdater for later processing
      • updateInheritance

        public void updateInheritance​(java.lang.Long childNodeId,
                                      java.lang.Long oldParentAclId,
                                      java.lang.Long newParentAclId)
        Specified by:
        updateInheritance in interface AccessControlListDAO