org.apache.jackrabbit.core.lock
Interface LockManager

All Known Implementing Classes:
LockManagerImpl, XALockManager

public interface LockManager

Defines the functionality needed for locking and unlocking nodes.


Method Summary
 void checkLock(NodeImpl node)
          Check whether the node given is locked by somebody else than the current session.
 void checkLock(Path path, Session session)
          Check whether the path given is locked by somebody else than the session described.
 Lock getLock(NodeImpl node)
          Returns the Lock object that applies to a node.
 boolean holdsLock(NodeImpl node)
          Returns true if the node given holds a lock; otherwise returns false
 boolean isLocked(NodeImpl node)
          Returns true if this node is locked either as a result of a lock held by this node or by a deep lock on a node above this node; otherwise returns false
 Lock lock(NodeImpl node, boolean isDeep, boolean isSessionScoped)
          Lock a node.
 void lockTokenAdded(SessionImpl session, String lt)
          Invoked by a session to inform that a lock token has been added.
 void lockTokenRemoved(SessionImpl session, String lt)
          Invoked by a session to inform that a lock token has been removed.
 void unlock(NodeImpl node)
          Removes the lock on a node given by its path.
 

Method Detail

lock

public Lock lock(NodeImpl node,
                 boolean isDeep,
                 boolean isSessionScoped)
          throws LockException,
                 RepositoryException
Lock a node. Checks whether the node is not locked and then returns a lock object for this node.

Parameters:
node - node
isDeep - whether the lock applies to this node only
isSessionScoped - whether the lock is session scoped
Returns:
lock object
Throws:
LockException - if this node already is locked, or some descendant node is locked and isDeep is true
RepositoryException
See Also:
Node.lock(boolean, boolean)

getLock

public Lock getLock(NodeImpl node)
             throws LockException,
                    RepositoryException
Returns the Lock object that applies to a node. This may be either a lock on this node itself or a deep lock on a node above this node.

Parameters:
node - node
Returns:
lock object
Throws:
LockException - if this node is not locked
RepositoryException
See Also:
Node.getLock()

unlock

public void unlock(NodeImpl node)
            throws LockException,
                   RepositoryException
Removes the lock on a node given by its path.

Parameters:
node - node
Throws:
LockException - if this node is not locked or the session does not have the correct lock token
RepositoryException
See Also:
Node.unlock()

holdsLock

public boolean holdsLock(NodeImpl node)
                  throws RepositoryException
Returns true if the node given holds a lock; otherwise returns false

Parameters:
node - node
Returns:
true if the node given holds a lock; otherwise returns false
Throws:
RepositoryException
See Also:
Node.holdsLock()

isLocked

public boolean isLocked(NodeImpl node)
                 throws RepositoryException
Returns true if this node is locked either as a result of a lock held by this node or by a deep lock on a node above this node; otherwise returns false

Parameters:
node - node
Returns:
true if this node is locked either as a result of a lock held by this node or by a deep lock on a node above this node; otherwise returns false
Throws:
RepositoryException
See Also:
Node.isLocked()

checkLock

public void checkLock(NodeImpl node)
               throws LockException,
                      RepositoryException
Check whether the node given is locked by somebody else than the current session. Access is allowed if the node is not locked or if the session itself holds the lock to this node, i.e. the session contains the lock token for the lock.

Parameters:
node - node to check
Throws:
LockException - if write access to the specified node is not allowed
RepositoryException - if some other error occurs

checkLock

public void checkLock(Path path,
                      Session session)
               throws LockException,
                      RepositoryException
Check whether the path given is locked by somebody else than the session described. Access is allowed if the node is not locked or if the session itself holds the lock to this node, i.e. the session contains the lock token for the lock.

Parameters:
path - path to check
session - session
Throws:
LockException - if write access to the specified path is not allowed
RepositoryException - if some other error occurs

lockTokenAdded

public void lockTokenAdded(SessionImpl session,
                           String lt)
Invoked by a session to inform that a lock token has been added.

Parameters:
session - session that has a added lock token
lt - added lock token

lockTokenRemoved

public void lockTokenRemoved(SessionImpl session,
                             String lt)
Invoked by a session to inform that a lock token has been removed.

Parameters:
session - session that has a removed lock token
lt - removed lock token


Copyright © 2004-2006 The Apache Software Foundation. All Rights Reserved.