|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.jackrabbit.core.lock.LockManagerImpl
public class LockManagerImpl
Provides the functionality needed for locking and unlocking nodes.
Constructor Summary | |
---|---|
LockManagerImpl(SessionImpl session,
FileSystem fs)
Create a new instance of this class. |
Method Summary | |
---|---|
void |
beginUpdate()
Start an update operation. |
void |
cancelUpdate()
Cancel an update operation. |
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. |
void |
close()
Close this lock manager. |
void |
dump(PrintStream ps)
Dump contents of path map and elements included to PrintStream given. |
void |
endUpdate()
End an update operation. |
void |
externalLock(NodeId nodeId,
boolean isDeep,
String userId)
Handle an external lock operation. |
void |
externalUnlock(NodeId nodeId)
Handle an external unlock operation. |
Lock |
getLock(NodeImpl node)
Returns the Lock object that applies to a node. |
AbstractLockInfo |
getLockInfo(NodeId id)
Return the most appropriate lock information for a node. |
Lock[] |
getLocks(SessionImpl session)
Returns all locks owned by the specified session. |
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 |
boolean |
isLockHolder(Session session,
NodeImpl node)
Returns true if the specified session holds a lock on the
given 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 |
onEvent(EventIterator events)
|
void |
setEventChannel(LockEventChannel eventChannel)
Set a lock event channel |
void |
unlock(NodeImpl node)
Removes the lock on a node given by its path. In order to prevent deadlocks from within the synchronous dispatching of events, content modifications should not be made from within code sections that hold monitors. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public LockManagerImpl(SessionImpl session, FileSystem fs) throws RepositoryException
session
- system sessionfs
- file system for persisting locks
RepositoryException
- if an error occursMethod Detail |
---|
public void close()
public AbstractLockInfo getLockInfo(NodeId id) throws RepositoryException
null
if node is not locked
RepositoryException
- if an error occurspublic Lock lock(NodeImpl node, boolean isDeep, boolean isSessionScoped) throws LockException, RepositoryException
lock
in interface LockManager
node
- nodeisDeep
- whether the lock applies to this node onlyisSessionScoped
- whether the lock is session scoped
LockException
- if this node already is locked, or some descendant
node is locked and isDeep
is true
RepositoryException
Node.lock(boolean, boolean)
public Lock getLock(NodeImpl node) throws LockException, RepositoryException
getLock
in interface LockManager
node
- node
LockException
- if this node is not locked
RepositoryException
Node.getLock()
public Lock[] getLocks(SessionImpl session) throws RepositoryException
getLocks
in interface LockManager
session
- session
RepositoryException
- if an error occursSessionImpl.getLocks()
public void unlock(NodeImpl node) throws LockException, RepositoryException
unlock
in interface LockManager
node
- node
LockException
- if this node is not locked or the session
does not have the correct lock token
RepositoryException
Node.unlock()
public boolean holdsLock(NodeImpl node) throws RepositoryException
true
if the node given holds a lock;
otherwise returns false
.
holdsLock
in interface LockManager
node
- node
true
if the node given holds a lock;
otherwise returns false
RepositoryException
Node.holdsLock()
public boolean isLockHolder(Session session, NodeImpl node) throws RepositoryException
true
if the specified session holds a lock on the
given node; otherwise returns false
.
Note that isLockHolder(session, node)==true
implies
holdsLock(node)==true
.
isLockHolder
in interface LockManager
session
- sessionnode
- node
false
RepositoryException
public boolean isLocked(NodeImpl node) throws RepositoryException
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
isLocked
in interface LockManager
node
- node
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
RepositoryException
Node.isLocked()
public void checkLock(NodeImpl node) throws LockException, RepositoryException
checkLock
in interface LockManager
node
- node to check
LockException
- if write access to the specified node is not allowed
RepositoryException
- if some other error occurspublic void checkLock(Path path, Session session) throws LockException, RepositoryException
checkLock
in interface LockManager
path
- path to checksession
- session
LockException
- if write access to the specified path is not allowed
RepositoryException
- if some other error occurspublic void lockTokenAdded(SessionImpl session, String lt)
lockTokenAdded
in interface LockManager
session
- session that has a added lock tokenlt
- added lock tokenpublic void lockTokenRemoved(SessionImpl session, String lt)
lockTokenRemoved
in interface LockManager
session
- session that has a removed lock tokenlt
- removed lock tokenpublic void beginUpdate()
public void endUpdate()
public void cancelUpdate()
public void onEvent(EventIterator events)
onEvent
in interface EventListener
public void setEventChannel(LockEventChannel eventChannel)
eventChannel
- lock event channelpublic void externalLock(NodeId nodeId, boolean isDeep, String userId) throws RepositoryException
externalLock
in interface LockEventListener
nodeId
- node idisDeep
- true
if the lock is deep;
false
otherwiseuserId
- user id
RepositoryException
- if the lock cannot be processedpublic void externalUnlock(NodeId nodeId) throws RepositoryException
externalUnlock
in interface LockEventListener
nodeId
- node id
RepositoryException
- if the unlock cannot be processedpublic void dump(PrintStream ps)
PrintStream
given.
dump
in interface Dumpable
ps
- print stream to dump to
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |