public class LockServiceImpl extends Object implements LockService, NodeServicePolicies.OnCreateChildAssociationPolicy, NodeServicePolicies.BeforeUpdateNodePolicy, NodeServicePolicies.BeforeDeleteNodePolicy, NodeServicePolicies.OnMoveNodePolicy, CopyServicePolicies.OnCopyNodePolicy, VersionServicePolicies.OnCreateVersionPolicy, TransactionListener, Extensible
Policy.Arg
Modifier and Type | Field and Description |
---|---|
static int |
MAX_EPHEMERAL_LOCK_SECONDS |
QNAME
QNAME
QNAME
QNAME
ARG_0, ARG_1, QNAME
QNAME
Constructor and Description |
---|
LockServiceImpl() |
Modifier and Type | Method and Description |
---|---|
void |
afterCommit()
Invoked after transaction commit.
|
void |
afterRollback()
Invoked after transaction rollback.
|
void |
beforeCommit(boolean readOnly)
Called before a transaction is committed.
|
void |
beforeCompletion()
Invoked before transaction commit/rollback.
|
void |
beforeDeleteNode(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Ensures that node is not locked.
|
void |
beforeUpdateNode(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Ensures that node is not locked.
|
void |
checkForLock(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Checks to see if the current user has access to the specified node.
|
void |
enableLocks()
After calling suspendLocks turn the locks back on.
|
void |
flush() |
String |
getAdditionalInfo(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Retrieve the additional lock info associated with a node ref.
|
BehaviourFilter |
getBehaviourFilter() |
CopyBehaviourCallback |
getCopyCallback(org.alfresco.service.namespace.QName classRef,
CopyDetails copyDetails)
Called for all types and aspects before copying a node.
|
int |
getEphemeralExpiryThreshold() |
List<org.alfresco.service.cmr.repository.NodeRef> |
getLocks(org.alfresco.service.cmr.repository.StoreRef storeRef)
Deprecated.
Uses search and does not report on ephemeral locks.
|
List<org.alfresco.service.cmr.repository.NodeRef> |
getLocks(org.alfresco.service.cmr.repository.StoreRef storeRef,
LockType lockType)
Deprecated.
Uses search and does not report on ephemeral locks.
|
LockState |
getLockState(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Retrieve the lock properties for the given NodeRef.
|
LockStatus |
getLockStatus(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Gets the lock status for the node reference relative to the current user.
|
LockStatus |
getLockStatus(org.alfresco.service.cmr.repository.NodeRef nodeRef,
String userName)
Gets the lock status for a node and a user name
|
LockType |
getLockType(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Gets the lock type for the node indicated.
|
<M extends Trait> |
getTrait(Class<? extends M> traitAPI) |
void |
init()
Initialise methods called by Spring framework
|
boolean |
isLocked(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Indicates if the node is locked for the current user.
|
boolean |
isLockedAndReadOnly(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Indicates if the node is locked AND it's *not* a WRITE_LOCK for the current user.
|
void |
lock(Collection<org.alfresco.service.cmr.repository.NodeRef> nodeRefs,
LockType lockType,
int timeToExpire)
Places a lock on all the nodes referenced in the passed list.
|
void |
lock(org.alfresco.service.cmr.repository.NodeRef nodeRef,
LockType lockType)
Places a lock on a node.
|
void |
lock(org.alfresco.service.cmr.repository.NodeRef nodeRef,
LockType lockType,
int timeToExpire)
Places a
persistent lock on a node. |
void |
lock(org.alfresco.service.cmr.repository.NodeRef nodeRef,
LockType lockType,
int timeToExpire,
boolean lockChildren)
Places a lock on a node and optionally on all its children.
|
void |
lock(org.alfresco.service.cmr.repository.NodeRef nodeRef,
LockType lockType,
int timeToExpire,
Lifetime lifetime)
Places a lock on a node.
|
void |
lock(org.alfresco.service.cmr.repository.NodeRef nodeRef,
LockType lockType,
int timeToExpire,
Lifetime lifetime,
boolean lockChildren)
Places a lock on a node and optionally on all its children.
|
void |
lock(org.alfresco.service.cmr.repository.NodeRef nodeRef,
LockType lockType,
int timeToExpire,
Lifetime lifetime,
String additionalInfo)
Places a lock on a node.
|
void |
onCreateChildAssociation(org.alfresco.service.cmr.repository.ChildAssociationRef childAssocRef,
boolean isNewNode)
Ensures that the parent is not locked.
|
void |
onCreateVersion(org.alfresco.service.namespace.QName classRef,
org.alfresco.service.cmr.repository.NodeRef versionableNode,
Map<String,Serializable> versionProperties,
PolicyScope nodeDetails)
OnCreateVersion behaviour for the lock aspect
|
void |
onMoveNode(org.alfresco.service.cmr.repository.ChildAssociationRef oldChildAssocRef,
org.alfresco.service.cmr.repository.ChildAssociationRef newChildAssocRef)
Called when a node has been moved.
|
void |
setAuthenticationService(AuthenticationService authenticationService) |
void |
setBehaviourFilter(BehaviourFilter behaviourFilter) |
void |
setEphemeralExpiryThreshold(int threshSecs)
Specifies the maximum expiry time for which a request for an ephemeral lock
will be honoured.
|
void |
setLockableAspectInterceptor(LockableAspectInterceptor lockableAspectInterceptor) |
void |
setLockStore(LockStore lockStore) |
void |
setNodeIndexer(NodeIndexer nodeIndexer) |
void |
setNodeService(org.alfresco.service.cmr.repository.NodeService nodeService) |
void |
setPolicyComponent(PolicyComponent policyComponent) |
void |
setSearchService(org.alfresco.service.cmr.search.SearchService searchService) |
void |
setTenantService(org.alfresco.repo.tenant.TenantService tenantService) |
void |
suspendLocks()
Allow the current transaction to update a node despite any locks that may be on it.
|
void |
unlock(Collection<org.alfresco.service.cmr.repository.NodeRef> nodeRefs)
Removes a lock on the nodes provided.
|
void |
unlock(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Removes the lock on a node; if there is no lock then nothing is done.
|
void |
unlock(org.alfresco.service.cmr.repository.NodeRef nodeRef,
boolean lockChildren)
Removes the lock on a node and optional on its children.
|
void |
unlock(org.alfresco.service.cmr.repository.NodeRef nodeRef,
boolean unlockChildren,
boolean allowCheckedOut)
Removes the lock on a node and optional on its children.
|
public static final int MAX_EPHEMERAL_LOCK_SECONDS
public void setNodeService(org.alfresco.service.cmr.repository.NodeService nodeService)
public void setTenantService(org.alfresco.repo.tenant.TenantService tenantService)
public void setLockStore(LockStore lockStore)
public void setPolicyComponent(PolicyComponent policyComponent)
public void setLockableAspectInterceptor(LockableAspectInterceptor lockableAspectInterceptor)
public void setAuthenticationService(AuthenticationService authenticationService)
public void setSearchService(org.alfresco.service.cmr.search.SearchService searchService)
public void init()
public void lock(org.alfresco.service.cmr.repository.NodeRef nodeRef, LockType lockType)
LockService
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.
lock
in interface LockService
nodeRef
- a reference to a nodelockType
- the lock typeLockService.lock(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.lock.LockType)
public void lock(org.alfresco.service.cmr.repository.NodeRef nodeRef, LockType lockType, int timeToExpire)
LockService
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.
lock
in interface LockService
nodeRef
- a reference to a nodelockType
- the lock typetimeToExpire
- the number of seconds before the locks expires.LockService.lock(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.lock.LockType, int)
public void lock(org.alfresco.service.cmr.repository.NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime)
LockService
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.
lock
in interface LockService
nodeRef
- a reference to a nodelockType
- the lock typetimeToExpire
- the number of seconds before the locks expires.lifetime
- allows persistent or ephemeral locks to be specified.LockService.lock(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.lock.LockType, int, Lifetime, String)
public void lock(org.alfresco.service.cmr.repository.NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime, boolean lockChildren)
LockService
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.
lock
in interface LockService
nodeRef
- a reference to a nodelockType
- the lock typetimeToExpire
- 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 otherwiseLockService.lock(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.lock.LockType, int, Lifetime, boolean)
public void lock(org.alfresco.service.cmr.repository.NodeRef nodeRef, LockType lockType, int timeToExpire, Lifetime lifetime, String additionalInfo)
LockService
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.
lock
in interface LockService
nodeRef
- a reference to a nodelockType
- the lock typetimeToExpire
- 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.LockService.lock(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.lock.LockType, int, Lifetime, String)
public void lock(org.alfresco.service.cmr.repository.NodeRef nodeRef, LockType lockType, int timeToExpire, boolean lockChildren) throws UnableToAquireLockException
LockService
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.
lock
in interface LockService
nodeRef
- a reference to a nodelockType
- the lock typetimeToExpire
- 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 otherwiseUnableToAquireLockException
- thrown if the lock could not be obtainedLockService.lock(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.lock.LockType, int, boolean)
public void lock(Collection<org.alfresco.service.cmr.repository.NodeRef> nodeRefs, LockType lockType, int timeToExpire) throws UnableToAquireLockException
LockService
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.
lock
in interface LockService
nodeRefs
- a list of node referenceslockType
- the type of lock being createdtimeToExpire
- the number of seconds before the locks expires.UnableToAquireLockException
- thrown if the lock could not be obtainedLockService.lock(java.util.Collection, org.alfresco.service.cmr.lock.LockType, int)
public void unlock(org.alfresco.service.cmr.repository.NodeRef nodeRef) throws UnableToReleaseLockException
LockService
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.
unlock
in interface LockService
nodeRef
- a reference to a nodeUnableToReleaseLockException
- thrown if the lock could not be releasedLockService.unlock(NodeRef)
public void unlock(org.alfresco.service.cmr.repository.NodeRef nodeRef, boolean lockChildren) throws UnableToReleaseLockException
LockService
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.
unlock
in interface LockService
nodeRef
- a node referencelockChildren
- if true then all the children (and grandchildren, etc)
of the node will also be unlocked, false otherwiseUnableToReleaseLockException
- thrown if the lock could not be releasedLockService.unlock(org.alfresco.service.cmr.repository.NodeRef, boolean)
public void unlock(org.alfresco.service.cmr.repository.NodeRef nodeRef, boolean unlockChildren, boolean allowCheckedOut) throws UnableToReleaseLockException
LockService
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.
unlock
in interface LockService
nodeRef
- a node referenceunlockChildren
- if true then all the children (and grandchildren, etc)
of the node will also be unlocked, false otherwiseallowCheckedOut
- is it permissable for a node to be a checked out node?UnableToReleaseLockException
- thrown if the lock could not be releasedLockService.unlock(NodeRef, boolean, boolean)
public void unlock(Collection<org.alfresco.service.cmr.repository.NodeRef> nodeRefs) throws UnableToReleaseLockException
LockService
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.
unlock
in interface LockService
nodeRefs
- the node referencesUnableToReleaseLockException
- thrown if the lock could not be releasedLockService.unlock(Collection)
public LockStatus getLockStatus(org.alfresco.service.cmr.repository.NodeRef nodeRef)
LockService
getLockStatus
in interface LockService
nodeRef
- the node referenceLockService.getLockStatus(NodeRef)
public LockStatus getLockStatus(org.alfresco.service.cmr.repository.NodeRef nodeRef, String userName)
getLockStatus
in interface LockService
nodeRef
- the node referenceuserName
- the user nameLockService.getLockStatus(NodeRef)
public LockType getLockType(org.alfresco.service.cmr.repository.NodeRef nodeRef)
LockService
Returns null if the node is not locked.
Throws an exception if the node does not have the lock aspect.
getLockType
in interface LockService
nodeRef
- the node referenceLockService.getLockType(NodeRef)
public void checkForLock(org.alfresco.service.cmr.repository.NodeRef nodeRef) throws NodeLockedException
If the node is locked by another user then a NodeLockedException is thrown.
Gets the user reference from the current session.
checkForLock
in interface LockService
nodeRef
- the node referenceNodeLockedException
- 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.public void onCreateChildAssociation(org.alfresco.service.cmr.repository.ChildAssociationRef childAssocRef, boolean isNewNode)
onCreateChildAssociation
in interface NodeServicePolicies.OnCreateChildAssociationPolicy
childAssocRef
- the child association that has been createdisNewNode
- true if the node is new or false if the node is being linked incheckForLock(NodeRef)
public void beforeUpdateNode(org.alfresco.service.cmr.repository.NodeRef nodeRef)
beforeUpdateNode
in interface NodeServicePolicies.BeforeUpdateNodePolicy
nodeRef
- reference to the node being updatedcheckForLock(NodeRef)
public void beforeDeleteNode(org.alfresco.service.cmr.repository.NodeRef nodeRef)
beforeDeleteNode
in interface NodeServicePolicies.BeforeDeleteNodePolicy
nodeRef
- the node referencecheckForLock(NodeRef)
public CopyBehaviourCallback getCopyCallback(org.alfresco.service.namespace.QName classRef, CopyDetails copyDetails)
CopyServicePolicies.OnCopyNodePolicy
getCopyCallback
in interface CopyServicePolicies.OnCopyNodePolicy
classRef
- the type or aspect qualified namecopyDetails
- the details of the impending copyDoNothingCopyBehaviourCallback
CopyServicePolicies
public void onCreateVersion(org.alfresco.service.namespace.QName classRef, org.alfresco.service.cmr.repository.NodeRef versionableNode, Map<String,Serializable> versionProperties, PolicyScope nodeDetails)
Ensures that the property values of the lock aspect are not 'frozen' in the version store.
onCreateVersion
in interface VersionServicePolicies.OnCreateVersionPolicy
classRef
- the class referenceversionableNode
- the versionable node referenceversionProperties
- the version propertiesnodeDetails
- the details of the node to be versioned@Deprecated public List<org.alfresco.service.cmr.repository.NodeRef> getLocks(org.alfresco.service.cmr.repository.StoreRef storeRef)
public boolean isLocked(org.alfresco.service.cmr.repository.NodeRef nodeRef)
isLocked
in interface LockService
public boolean isLockedAndReadOnly(org.alfresco.service.cmr.repository.NodeRef nodeRef)
isLockedAndReadOnly
in interface LockService
@Deprecated public List<org.alfresco.service.cmr.repository.NodeRef> getLocks(org.alfresco.service.cmr.repository.StoreRef storeRef, LockType lockType)
public void onMoveNode(org.alfresco.service.cmr.repository.ChildAssociationRef oldChildAssocRef, org.alfresco.service.cmr.repository.ChildAssociationRef newChildAssocRef)
NodeServicePolicies.OnMoveNodePolicy
onMoveNode
in interface NodeServicePolicies.OnMoveNodePolicy
oldChildAssocRef
- the child association reference prior to the movenewChildAssocRef
- the child association reference after the movepublic void suspendLocks()
LockService
Used for the system to be able to update locked nodes.
suspendLocks
in interface LockService
public void enableLocks()
LockService
enableLocks
in interface LockService
public String getAdditionalInfo(org.alfresco.service.cmr.repository.NodeRef nodeRef)
LockService
getAdditionalInfo
in interface LockService
nodeRef
- NodeRefpublic LockState getLockState(org.alfresco.service.cmr.repository.NodeRef nodeRef)
LockService
Do NOT use the returned information to determine the actual state of a lock,
use LockService.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.
getLockState
in interface LockService
nodeRef
- NodeRefpublic void setBehaviourFilter(BehaviourFilter behaviourFilter)
public BehaviourFilter getBehaviourFilter()
public void setNodeIndexer(NodeIndexer nodeIndexer)
public void flush()
public void beforeCommit(boolean readOnly)
TransactionListener
All transaction resources are still available.
beforeCommit
in interface org.alfresco.util.transaction.TransactionListener
readOnly
- true if the transaction is read-onlypublic void beforeCompletion()
TransactionListener
TransactionListener.beforeCommit(boolean)
even if TransactionListener.beforeCommit(boolean)
failed.
All transaction resources are still available.
beforeCompletion
in interface org.alfresco.util.transaction.TransactionListener
public void afterCommit()
TransactionListener
Any exceptions generated here will only be logged and will have no effect on the state of the transaction.
Although all transaction resources are still available, this method should be used only for cleaning up resources after a commit has occured.
afterCommit
in interface org.alfresco.util.transaction.TransactionListener
public void afterRollback()
TransactionListener
Any exceptions generated here will only be logged and will have no effect on the state of the transaction.
Although all transaction resources are still available, this method should be used only for cleaning up resources after a rollback has occured.
afterRollback
in interface org.alfresco.util.transaction.TransactionListener
public void setEphemeralExpiryThreshold(int threshSecs)
LockService
setEphemeralExpiryThreshold
in interface LockService
threshSecs
- intpublic int getEphemeralExpiryThreshold()
public <M extends Trait> ExtendedTrait<M> getTrait(Class<? extends M> traitAPI)
getTrait
in interface Extensible
Copyright © 2005–2017 Alfresco Software. All rights reserved.