8.4.12 The Lock Object

The Lock object represents a lock on a particular node:

javax.jcr.lock.
Lock

String

getLockOwner()

Returns the user ID of the user who owns this lock. This is the value of the jcr:lockOwner property of the lock-holding node. It is also the value returned by Session.getUserID at the time that the lock was placed. The lock owner's identity is only provided for informational purposes. It does not govern who can perform an unlock or make changes to the locked nodes; that depends entirely upon who the token holder is.

boolean

isDeep()

Returns true if this is a deep lock; false otherwise.

Node

getNode()

Returns the lock holding node. Note that N.getLock().getNode() (where N is a locked node) will only return N if N is the lock holder. If N is in the subtree of the lock holder, H, then this call will return H.

String

getLockToken()

May return the lock token for this lock. If this Session holds the lock token for this lock, then this method will return that lock token. If this Session does not hold the applicable lock token then this method will return null.

boolean

isLive()

Returns true if this Lock object represents a lock that is currently in effect. If this lock has been unlocked either explicitly or due to an implementation-specific limitation (like a timeout) then it returns false. Note that this method is intended for those cases where one is holding a Lock Java object and wants to find out whether the lock (the repository-level entity that is attached to the lockable node) that this object originally represented still exists. For example, a timeout or explicit unlock will remove a lock from a node but the Lock Java object corresponding to that lock may still exist, and in that case its isLive method will return false.

A RepositoryException is thrown if an error occurs.

boolean

isSessionScoped()

Returns true if this is a session-scoped lock. Returns false if this is an open-scoped lock.

void

refresh()

If this lock's time-to-live is governed by a timer, this method resets that timer so that the lock does not timeout and expire. If this lock's time-to-live is not governed by a timer, then this method has no effect.

A LockException is thrown if this Session does not hold the correct lock token for this lock.

A RepositoryException is thrown if another error occurs.