Interface LockService

All Known Subinterfaces:
LockServiceExtension, LockServiceTrait
All Known Implementing Classes:
LockServiceImpl, VirtualLockServiceExtension

@AlfrescoPublicApi public interface LockService
Interface for public and internal lock operations.
Author:
Roy Wetherall
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Checks to see if the current user has access to the specified node.
    void
    After calling suspendLocks turn the locks back on.
    Retrieve the additional lock info associated with a node ref.
    Retrieve the lock properties for the given NodeRef.
    Gets the lock status for the node reference relative to the current user.
    getLockStatus(NodeRef nodeRef, String userName)
    Gets the lock status for the node reference for the specified user.
    Gets the lock type for the node indicated.
    boolean
    isLocked(NodeRef nodeRef)
    Indicates if the node is locked for the current user.
    boolean
    Indicates if the node is locked AND it's *not* a WRITE_LOCK for the current user.
    void
    lock(Collection<NodeRef> nodeRefs, LockType lockType, int timeToExpire)
    Places a lock on all the nodes referenced in the passed list.
    void
    lock(NodeRef nodeRef, LockType lockType)
    Places a lock on a node.
    void
    lock(NodeRef nodeRef, LockType lockType, int timeToExpire)
    Places a persistent lock on a node.
    void
    lock(NodeRef nodeRef, LockType lockType, int timeToExpire, boolean lockChildren)
    Places a lock on a node and optionally on all its children.
    void
    lock(NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime)
    Places a lock on a node.
    void
    lock(NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime, boolean lockChildren)
    Places a lock on a node and optionally on all its children.
    void
    lock(NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime, String additionalInfo)
    Places a lock on a node.
    void
    Specifies the maximum expiry time for which a request for an ephemeral lock will be honoured.
    void
    Allow the current transaction to update a node despite any locks that may be on it.
    void
    Removes a lock on the nodes provided.
    void
    unlock(NodeRef nodeRef)
    Removes the lock on a node; if there is no lock then nothing is done.
    void
    unlock(NodeRef nodeRef, boolean lockChildren)
    Removes the lock on a node and optional on its children.
    void
    unlock(NodeRef nodeRef, boolean lockChildren, boolean allowCheckedOut)
    Removes the lock on a node and optional on its children.
  • Field Details

  • Method Details

    • lock

      @Auditable(parameters={"nodeRef","lockType"}) void lock(NodeRef nodeRef, LockType lockType) throws UnableToAquireLockException
      Places a lock on a node.

      The lock prevents any other user or process from comitting updates to the node until the lock is released.

      The lock will be owned by the current user.

      A lock made with this call will never expire.

      Parameters:
      nodeRef - a reference to a node
      lockType - the lock type
      Throws:
      UnableToAquireLockException - thrown if the lock could not be obtained
    • lock

      @Auditable(parameters={"nodeRef","lockType","timeToExpire"}) void lock(NodeRef nodeRef, LockType lockType, int timeToExpire) throws UnableToAquireLockException
      Places a persistent lock on a node.

      The lock prevents any other user or process from comitting updates to the node until the lock is released.

      The lock will be owned by the current user.

      If the time to expire is 0 then the lock will never expire. Otherwise the timeToExpire indicates the number of seconds before the lock expires. When a lock expires the lock is considered to have been released.

      If the node is already locked and the user is the lock owner then the lock will be renewed with the passed timeToExpire.

      Parameters:
      nodeRef - a reference to a node
      lockType - the lock type
      timeToExpire - the number of seconds before the locks expires.
      Throws:
      UnableToAquireLockException - thrown if the lock could not be obtained
    • lock

      @Auditable(parameters={"nodeRef","lockType","timeToExpire","lifetime"}) void lock(NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime) throws UnableToAquireLockException
      Places a lock on a node.

      The lock prevents any other user or process from comitting updates to the node until the lock is released.

      The lock will be owned by the current user.

      If the time to expire is 0 then the lock will never expire. Otherwise the timeToExpire indicates the number of seconds before the lock expires. When a lock expires the lock is considered to have been released.

      If the node is already locked and the user is the lock owner then the lock will be renewed with the passed timeToExpire.

      Parameters:
      nodeRef - a reference to a node
      lockType - the lock type
      timeToExpire - the number of seconds before the locks expires.
      lifetime - allows persistent or ephemeral locks to be specified.
      Throws:
      UnableToAquireLockException - thrown if the lock could not be obtained
    • lock

      @Auditable(parameters={"nodeRef","lockType","timeToExpire","lifetime"}) void lock(NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime, String additionalInfo) throws UnableToAquireLockException
      Places a lock on a node.

      The lock prevents any other user or process from comitting updates to the node until the lock is released.

      The lock will be owned by the current user.

      If the time to expire is 0 then the lock will never expire. Otherwise the timeToExpire indicates the number of seconds before the lock expires. When a lock expires the lock is considered to have been released.

      If the node is already locked and the user is the lock owner then the lock will be renewed with the passed timeToExpire.

      Parameters:
      nodeRef - a reference to a node
      lockType - the lock type
      timeToExpire - the number of seconds before the locks expires.
      lifetime - allows persistent or ephemeral locks to be specified.
      additionalInfo - additional lock data stored alongside core lock data such as timeToExpire. NOTE: only valid for ephemeral locks.
      Throws:
      UnableToAquireLockException - thrown if the lock could not be obtained
    • lock

      @Auditable(parameters={"nodeRef","lockType","timeToExpire","lockChildren"}) void lock(NodeRef nodeRef, LockType lockType, int timeToExpire, boolean lockChildren) throws UnableToAquireLockException
      Places a lock on a node and optionally on all its children.

      The lock prevents any other user or process from committing updates to the node until the lock is released.

      The lock will be owned by the current user.

      If any one of the child locks can not be taken then an exception will be raised and all locks cancelled.

      If the time to expire is 0 then the lock will never expire. Otherwise the timeToExpire indicates the number of seconds before the lock expires. When a lock expires the lock is considered to have been released.

      If the node is already locked and the user is the lock owner then the lock will be renewed with the passed timeToExpire.

      Parameters:
      nodeRef - a reference to a node
      lockType - the lock type
      timeToExpire - the number of seconds before the locks expires.
      lockChildren - if true indicates that all the children (and grandchildren, etc) of the node will also be locked, false otherwise
      Throws:
      UnableToAquireLockException - thrown if the lock could not be obtained
    • lock

      @Auditable(parameters={"nodeRef","lockType","timeToExpire","lifetime","lockChildren"}) void lock(NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime, boolean lockChildren) throws UnableToAquireLockException
      Places a lock on a node and optionally on all its children.

      The lock prevents any other user or process from committing updates to the node until the lock is released.

      The lock will be owned by the current user.

      If the time to expire is 0 then the lock will never expire. Otherwise the timeToExpire indicates the number of seconds before the lock expires. When a lock expires the lock is considered to have been released.

      If the node is already locked and the user is the lock owner then the lock will be renewed with the passed timeToExpire.

      Parameters:
      nodeRef - a reference to a node
      lockType - the lock type
      timeToExpire - the number of seconds before the locks expires.
      lifetime - allows persistent or ephemeral locks to be specified.
      lockChildren - if true indicates that all the children (and grandchildren, etc) of the node will also be locked, false otherwise
      Throws:
      UnableToAquireLockException - thrown if the lock could not be obtained
    • lock

      @Auditable(parameters={"nodeRefs","lockType","timeToExpire"}) void lock(Collection<NodeRef> nodeRefs, LockType lockType, int timeToExpire) throws UnableToAquireLockException
      Places a lock on all the nodes referenced in the passed list.

      The lock prevents any other user or process from comitting updates to the node until the lock is released.

      The lock will be owned by the current user.

      If the time to expire is 0 then the lock will never expire. Otherwise the timeToExpire indicates the number of seconds before the lock expires. When a lock expires the lock is considered to have been released.

      If the node is already locked and the current user is the lock owner then the lock will be renewed with the passed timeToExpire.

      Parameters:
      nodeRefs - a list of node references
      lockType - the type of lock being created
      timeToExpire - the number of seconds before the locks expires.
      Throws:
      UnableToAquireLockException - thrown if the lock could not be obtained
    • unlock

      @Auditable(parameters="nodeRef") void unlock(NodeRef nodeRef) throws UnableToReleaseLockException
      Removes the lock on a node; if there is no lock then nothing is done.

      The user must have sufficient permissions to remove the lock (ie: be the owner of the lock or have admin rights) and the node must not be checked out. Otherwise an exception will be raised.

      Parameters:
      nodeRef - a reference to a node
      Throws:
      UnableToReleaseLockException - thrown if the lock could not be released
    • unlock

      @Auditable(parameters={"nodeRef","lockChildren"}) void unlock(NodeRef nodeRef, boolean lockChildren) throws UnableToReleaseLockException
      Removes the lock on a node and optional on its children.

      The user must have sufficient permissions to remove the lock(s) (ie: be the owner of the lock(s) or have admin rights) and the node(s) must not be checked out. Otherwise an exception will be raised.

      If one of the child nodes is not locked then it will be ignored and the process continue without error.

      If the lock on any one of the child nodes cannot be released then an exception will be raised.

      Parameters:
      nodeRef - a node reference
      lockChildren - if true then all the children (and grandchildren, etc) of the node will also be unlocked, false otherwise
      Throws:
      UnableToReleaseLockException - thrown if the lock could not be released
    • unlock

      @Auditable(parameters={"nodeRef","lockChildren","allowCheckedOut"}) void unlock(NodeRef nodeRef, boolean lockChildren, boolean allowCheckedOut) throws UnableToReleaseLockException
      Removes the lock on a node and optional on its children.

      The user must have sufficient permissions to remove the lock(s) (ie: be the owner of the lock(s) or have admin rights) otherwise an exception will be raised.

      If one of the child nodes is not locked then it will be ignored and the process continue without error.

      If the lock on any one of the child nodes cannot be released then an exception will be raised.

      Parameters:
      nodeRef - a node reference
      lockChildren - if true then all the children (and grandchildren, etc) of the node will also be unlocked, false otherwise
      allowCheckedOut - is it permissable for a node to be a checked out node?
      Throws:
      UnableToReleaseLockException - thrown if the lock could not be released
    • unlock

      @Auditable(parameters="nodeRefs") void unlock(Collection<NodeRef> nodeRefs) throws UnableToReleaseLockException
      Removes a lock on the nodes provided.

      The user must have sufficient permissions to remove the locks (ie: be the owner of the locks or have admin rights) otherwise an exception will be raised.

      If one of the nodes is not locked then it will be ignored and the process will continue without an error.

      If the lock on any one of the nodes cannot be released than an exception will be raised and the process rolled back.

      Parameters:
      nodeRefs - the node references
      Throws:
      UnableToReleaseLockException - thrown if the lock could not be released
    • getLockStatus

      @Auditable(parameters="nodeRef") LockStatus getLockStatus(NodeRef nodeRef)
      Gets the lock status for the node reference relative to the current user.
      Parameters:
      nodeRef - the node reference
      Returns:
      the lock status
      See Also:
    • getLockStatus

      @Auditable(parameters={"nodeRef","userName"}) LockStatus getLockStatus(NodeRef nodeRef, String userName)
      Gets the lock status for the node reference for the specified user.
      Parameters:
      nodeRef - the node reference
      userName - the user name
      Returns:
      the lock status
      See Also:
    • getLockType

      @Auditable(parameters="nodeRef") LockType getLockType(NodeRef nodeRef)
      Gets the lock type for the node indicated.

      Returns null if the node is not locked.

      Throws an exception if the node does not have the lock aspect.

      Parameters:
      nodeRef - the node reference
      Returns:
      the lock type, null is returned if the object in question has no lock
    • isLocked

      @Auditable(parameters="nodeRef") boolean isLocked(NodeRef nodeRef)
      Indicates if the node is locked for the current user.
      Parameters:
      nodeRef -
      Returns:
    • isLockedAndReadOnly

      @Auditable(parameters="nodeRef") boolean isLockedAndReadOnly(NodeRef nodeRef)
      Indicates if the node is locked AND it's *not* a WRITE_LOCK for the current user.
      Parameters:
      nodeRef -
      Returns:
    • checkForLock

      @Auditable(parameters="nodeRef") void checkForLock(NodeRef nodeRef)
      Checks to see if the current user has access to the specified node.

      If the node is locked by another user then a NodeLockedException is thrown.

      Gets the user reference from the current session.

      Parameters:
      nodeRef - the node reference
      Throws:
      NodeLockedException - thrown if the node is locked by someone else. This is based on the lock status of the lock, the user ref and the lock type.
    • suspendLocks

      void suspendLocks()
      Allow the current transaction to update a node despite any locks that may be on it.

      Used for the system to be able to update locked nodes.

    • enableLocks

      void enableLocks()
      After calling suspendLocks turn the locks back on.
    • getAdditionalInfo

      String getAdditionalInfo(NodeRef nodeRef)
      Retrieve the additional lock info associated with a node ref.

      Parameters:
      nodeRef - NodeRef
      Returns:
      Additional info string or null
    • getLockState

      LockState getLockState(NodeRef nodeRef)
      Retrieve the lock properties for the given NodeRef.

      Do NOT use the returned information to determine the actual state of a lock, use getLockStatus(NodeRef) and other LockService methods for this purpose.

      The returned data is intended for information purposes only, e.g. returning the timeout in a WebDAV response.

      Parameters:
      nodeRef - NodeRef
      Returns:
      LockState
    • setEphemeralExpiryThreshold

      void setEphemeralExpiryThreshold(int threshSecs)
      Specifies the maximum expiry time for which a request for an ephemeral lock will be honoured. Requests for ephemeral locks with expiry times greater than this value will be automatically converted to a request for a persistent lock.
      Parameters:
      threshSecs - int