public class XALockManager extends Object implements LockManager, InternalXAResource
Constructor and Description |
---|
XALockManager(LockManagerImpl lockMgr)
Create a new instance of this class.
|
Modifier and Type | Method and Description |
---|---|
void |
addLockToken(SessionImpl session,
String lt)
Invoked by a session to inform that a lock token has been added.
|
void |
afterOperation(TransactionContext tx)
|
void |
associate(TransactionContext tx)
Associate this resource with a transaction.
|
void |
beforeOperation(TransactionContext tx)
|
void |
checkLock(NodeImpl node)
Check whether the node given is locked by somebody else than the
current session.
|
void |
checkLock(Path path,
javax.jcr.Session session)
Check whether the path given is locked by somebody else than the
session described.
|
void |
checkUnlock(javax.jcr.Session session,
NodeImpl node)
Check whether a session is allowed to unlock a node.
|
void |
commit(TransactionContext tx)
Commit transaction.
|
boolean |
differentXAEnv(LockInfo info)
Return a flag indicating whether a lock info belongs to a different
XA environment.
|
javax.jcr.lock.Lock |
getLock(NodeImpl node)
Returns the Lock object that applies to a node.
|
javax.jcr.lock.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 |
javax.jcr.lock.Lock |
lock(NodeImpl node,
boolean isDeep,
boolean isSessionScoped)
Lock a node.
|
javax.jcr.lock.Lock |
lock(NodeImpl node,
boolean isDeep,
boolean isSessionScoped,
long timoutHint,
String ownerInfo)
Lock a node.
|
void |
prepare(TransactionContext tx)
Prepare transaction.
|
void |
removeLockToken(SessionImpl session,
String lt)
Invoked by a session to inform that a lock token has been removed.
|
void |
rollback(TransactionContext tx)
Rollback transaction.
|
void |
unlock(NodeImpl node)
Removes the lock on a node given by its path.
|
public XALockManager(LockManagerImpl lockMgr)
lockMgr
- lockMgr global lock managerpublic javax.jcr.lock.Lock lock(NodeImpl node, boolean isDeep, boolean isSessionScoped) throws javax.jcr.lock.LockException, javax.jcr.RepositoryException
lock
in interface LockManager
node
- nodeisDeep
- whether the lock applies to this node onlyisSessionScoped
- whether the lock is session scopedjavax.jcr.lock.LockException
- if this node already is locked, or some descendant
node is locked and isDeep
is true
javax.jcr.RepositoryException
Node.lock(boolean, boolean)
public javax.jcr.lock.Lock lock(NodeImpl node, boolean isDeep, boolean isSessionScoped, long timoutHint, String ownerInfo) throws javax.jcr.lock.LockException, javax.jcr.RepositoryException
LockManager
lock
in interface LockManager
node
- Node to create the lock for.isDeep
- whether the lock applies to this node onlyisSessionScoped
- whether the lock is session scopedtimoutHint
- Desired lock timeout in seconds.ownerInfo
- Optional string acting as information about the owner.javax.jcr.lock.LockException
- if this node already is locked, or some descendant
node is locked and isDeep
is true
javax.jcr.RepositoryException
LockManager.lock(NodeImpl, boolean, boolean, long, String)
public javax.jcr.lock.Lock getLock(NodeImpl node) throws javax.jcr.lock.LockException, javax.jcr.RepositoryException
getLock
in interface LockManager
node
- nodejavax.jcr.lock.LockException
- if this node is not lockedjavax.jcr.RepositoryException
Node.getLock()
public javax.jcr.lock.Lock[] getLocks(SessionImpl session) throws javax.jcr.RepositoryException
getLocks
in interface LockManager
session
- sessionjavax.jcr.RepositoryException
- if an error occursSessionImpl.getLocks()
public void unlock(NodeImpl node) throws javax.jcr.lock.LockException, javax.jcr.RepositoryException
unlock
in interface LockManager
node
- nodejavax.jcr.lock.LockException
- if this node is not locked or the session
does not have the correct lock tokenjavax.jcr.RepositoryException
Node.unlock()
public boolean holdsLock(NodeImpl node) throws javax.jcr.RepositoryException
true
if the node given holds a lock;
otherwise returns false
.holdsLock
in interface LockManager
node
- nodetrue
if the node given holds a lock;
otherwise returns false
javax.jcr.RepositoryException
- If an exception occurs.Node.holdsLock()
public boolean isLocked(NodeImpl node) throws javax.jcr.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
- nodetrue
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
javax.jcr.RepositoryException
- If an exception occurs.Node.isLocked()
public void checkLock(NodeImpl node) throws javax.jcr.lock.LockException, javax.jcr.RepositoryException
checkLock
in interface LockManager
node
- node to checkjavax.jcr.lock.LockException
- if write access to the specified node is not allowedjavax.jcr.RepositoryException
- if some other error occurspublic void checkLock(Path path, javax.jcr.Session session) throws javax.jcr.lock.LockException, javax.jcr.RepositoryException
checkLock
in interface LockManager
path
- path to checksession
- sessionjavax.jcr.lock.LockException
- if write access to the specified path is not allowedjavax.jcr.RepositoryException
- if some other error occurspublic void checkUnlock(javax.jcr.Session session, NodeImpl node) throws javax.jcr.lock.LockException, javax.jcr.RepositoryException
checkUnlock
in interface LockManager
javax.jcr.lock.LockException
- if unlocking is deniedjavax.jcr.RepositoryException
- if some other error occurspublic void addLockToken(SessionImpl session, String lt) throws javax.jcr.RepositoryException
addLockToken
in interface LockManager
session
- session that has a added lock tokenlt
- added lock tokenjavax.jcr.lock.LockException
javax.jcr.RepositoryException
public void removeLockToken(SessionImpl session, String lt) throws javax.jcr.RepositoryException
removeLockToken
in interface LockManager
session
- session that has a removed lock tokenlt
- removed lock tokenjavax.jcr.lock.LockException
javax.jcr.RepositoryException
public void associate(TransactionContext tx)
associate
in interface InternalXAResource
tx
- transaction context, if null
disassociatepublic void beforeOperation(TransactionContext tx)
InternalXAResource.prepare(org.apache.jackrabbit.data.core.TransactionContext)
, InternalXAResource.commit(org.apache.jackrabbit.data.core.TransactionContext)
or
InternalXAResource.rollback(org.apache.jackrabbit.data.core.TransactionContext)
method is called.beforeOperation
in interface InternalXAResource
tx
- transaction contextpublic void prepare(TransactionContext tx) throws TransactionException
prepare
in interface InternalXAResource
tx
- transaction contextTransactionException
- if an error occurspublic void commit(TransactionContext tx)
This will finish the update and unlock the shared lock manager.
commit
in interface InternalXAResource
tx
- transaction contextpublic void rollback(TransactionContext tx)
This will undo all updates and unlock the shared lock manager.
rollback
in interface InternalXAResource
tx
- transaction context.public void afterOperation(TransactionContext tx)
InternalXAResource.prepare(org.apache.jackrabbit.data.core.TransactionContext)
, InternalXAResource.commit(org.apache.jackrabbit.data.core.TransactionContext)
or
InternalXAResource.rollback(org.apache.jackrabbit.data.core.TransactionContext)
method has been called.afterOperation
in interface InternalXAResource
tx
- transaction contextpublic boolean differentXAEnv(LockInfo info)
Copyright © 2004-2020 The Apache Software Foundation. All Rights Reserved.