org.apache.slide.lock
Class LockImpl

java.lang.Object
  |
  +--org.apache.slide.lock.LockImpl
All Implemented Interfaces:
Lock

public final class LockImpl
extends java.lang.Object
implements Lock

Lock helper class.

Version:
$Revision: 1.24 $
Author:
Remy Maucherat

Constructor Summary
LockImpl(Namespace namespace, NamespaceConfig namespaceConfig, Security securityHelper)
          Constructor.
 
Method Summary
 void checkLock(SlideToken token, ObjectNode object, ActionNode action)
          Utility function for lock checking.
 void checkLock(SlideToken slideToken, ObjectNode subject, SubjectNode user, ActionNode action)
          Check locking for a specific action and credential.
 java.util.Enumeration enumerateLocks(SlideToken slideToken, java.lang.String objectUri)
          Enumerate locks on a subject, including any locks inherited from parent subjects.
 java.util.Enumeration enumerateLocks(SlideToken slideToken, java.lang.String objectUri, boolean inherited)
          Enumerate locks on a subject, optionally excluding locks inherited from parent subjects.
 boolean isLocked(SlideToken slideToken, NodeLock token, boolean tryToLock)
          Tests if an element is locked.
 boolean isLocked(SlideToken slideToken, ObjectNode subject, SubjectNode user, ActionNode action, boolean tryToLock)
          Tests if an element is locked.
 boolean isLocked(SlideToken slideToken, ObjectNode subject, SubjectNode user, ActionNode action, boolean inheritance, boolean tryToLock)
          Tests if an element is locked.
 void kill(SlideToken slideToken, SubjectNode subject)
          Kills locks.
 void lock(SlideToken slideToken, NodeLock token)
          Put a lock on a subject.
 void renew(SlideToken slideToken, NodeLock token, java.util.Date newExpirationDate)
          Renew a lock.
 void renew(SlideToken slideToken, java.lang.String objectUri, java.lang.String lockId, java.util.Date newExpirationDate)
          Renew a set of linked locks.
 boolean unlock(SlideToken slideToken, NodeLock token)
          Removes a lock.
 void unlock(SlideToken slideToken, java.lang.String objectUri, java.lang.String lockId)
          Removes a set of linked locks.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LockImpl

public LockImpl(Namespace namespace,
                NamespaceConfig namespaceConfig,
                Security securityHelper)
Constructor.
Parameters:
namespace - Associated namespace
namespaceConfig - Namespace configuration
securityHelper - Security helper
Method Detail

lock

public void lock(SlideToken slideToken,
                 NodeLock token)
          throws ServiceAccessException,
                 ObjectIsAlreadyLockedException,
                 AccessDeniedException,
                 ObjectNotFoundException
Put a lock on a subject.
Specified by:
lock in interface Lock
Parameters:
crendentialsToken - Credentials token
token - Object containing all the lock information
Throws:
ServiceAccessException - Low level service access exception
ObjectNotFoundException - One of the objects referenced in the lock token were not found
ObjectIsAlreadyLockedException - Object is already locked with an incompatible lock token
AccessDeniedException - Insufficient credentials to allow object locking

unlock

public boolean unlock(SlideToken slideToken,
                      NodeLock token)
               throws ServiceAccessException,
                      LockTokenNotFoundException
Removes a lock.
Specified by:
unlock in interface Lock
Parameters:
crendentialsToken - Credentials token
token - Object containing all the lock information
Returns:
true if the lock could be removed
Throws:
ServiceAccessException - Low level service access exception
LockTokenNotFoundException - Cannot find the Lock in the Lock Store service

unlock

public void unlock(SlideToken slideToken,
                   java.lang.String objectUri,
                   java.lang.String lockId)
            throws ServiceAccessException,
                   LockTokenNotFoundException,
                   ObjectNotFoundException
Removes a set of linked locks.
Specified by:
unlock in interface Lock
Parameters:
crendentialsToken - Credentials token
Throws:
ServiceAccessException - Low level service access exception
LockTokenNotFoundException - Cannot find the Lock in the Lock Store service
ObjectNotFoundException - One of the objects referenced in the lock token were not found

renew

public void renew(SlideToken slideToken,
                  NodeLock token,
                  java.util.Date newExpirationDate)
           throws ServiceAccessException,
                  LockTokenNotFoundException
Renew a lock.
Specified by:
renew in interface Lock
Parameters:
crendentialsToken - Credentials token
token - Object containing the lock info, as well as the new desired expiration date
Throws:
ServiceAccessException - Low level service access exception
LockTokenNotFoundException - Cannot find the Lock in the Lock Store service

renew

public void renew(SlideToken slideToken,
                  java.lang.String objectUri,
                  java.lang.String lockId,
                  java.util.Date newExpirationDate)
           throws ServiceAccessException,
                  LockTokenNotFoundException,
                  ObjectNotFoundException
Renew a set of linked locks.
Specified by:
renew in interface Lock
Parameters:
crendentialsToken - Credentials token
Throws:
ServiceAccessException - Low level service access exception
LockTokenNotFoundException - Cannot find the Lock in the Lock Store service
ObjectNotFoundException - One of the objects referenced in the lock token were not found

kill

public void kill(SlideToken slideToken,
                 SubjectNode subject)
          throws ServiceAccessException,
                 AccessDeniedException,
                 LockTokenNotFoundException,
                 ObjectNotFoundException
Kills locks.
Specified by:
kill in interface Lock
Parameters:
crendentialsToken - Credentials token
subject - Subject on which locks are to be removed
Throws:
ServiceAccessException - Low level service access exception
ObjectNotFoundException - One of the objects referenced in the lock token were not found
LockTokenNotFoundException - Cannot find the Lock in the Lock Store service
AccessDeniedException - Insufficient credentials to allow forced removal of locks

enumerateLocks

public java.util.Enumeration enumerateLocks(SlideToken slideToken,
                                            java.lang.String objectUri)
                                     throws ServiceAccessException,
                                            ObjectNotFoundException,
                                            LockTokenNotFoundException
Description copied from interface: Lock
Enumerate locks on a subject, including any locks inherited from parent subjects.
Specified by:
enumerateLocks in interface Lock
Following copied from interface: org.apache.slide.lock.Lock
Parameters:
slideToken - the slide token
objectUri - the URI of the object of which we want to enumerate active locks
Returns:
an Enumeration of NodeLock objects
Throws:
ServiceAccessException - low level service access exception
ObjectNotFoundException - one of the objects referenced in the lock token were not found

enumerateLocks

public java.util.Enumeration enumerateLocks(SlideToken slideToken,
                                            java.lang.String objectUri,
                                            boolean inherited)
                                     throws ServiceAccessException,
                                            ObjectNotFoundException,
                                            LockTokenNotFoundException
Description copied from interface: Lock
Enumerate locks on a subject, optionally excluding locks inherited from parent subjects.
Specified by:
enumerateLocks in interface Lock
Following copied from interface: org.apache.slide.lock.Lock
Parameters:
slideToken - the slide token
objectUri - the URI of the object of which we want to enumerate active locks
inherited - if true, locks inherited from parent objects will be included in the result, otherwise, only locks that explicitly lock the object will be returned
Returns:
an Enumeration of NodeLock objects
Throws:
ServiceAccessException - low level service access exception
ObjectNotFoundException - one of the objects referenced in the lock token were not found
LockTokenNotFoundException - cannot find the lock in the lock store service

checkLock

public void checkLock(SlideToken token,
                      ObjectNode object,
                      ActionNode action)
               throws ServiceAccessException,
                      ObjectNotFoundException,
                      ObjectLockedException
Utility function for lock checking. Mirrors Security.checkCredentials.
Specified by:
checkLock in interface Lock
Parameters:
token - Credetials token
subject - Object on which the action is performed
action - Action to test
Throws:
ObjectLockedException - Can't perform specified action on object
ServiceAccessException - Low level service access exception
ObjectNotFoundException - One of the objects referenced in the lock token were not found

checkLock

public void checkLock(SlideToken slideToken,
                      ObjectNode subject,
                      SubjectNode user,
                      ActionNode action)
               throws ServiceAccessException,
                      ObjectNotFoundException,
                      ObjectLockedException
Check locking for a specific action and credential.
Specified by:
checkLock in interface Lock
Parameters:
slideToken - Credetials token
subject - Subject to test
user - User to test
action - Action to test
Throws:
ObjectLockedException - Can't perform specified action on object
ServiceAccessException - Low level service access exception
ObjectNotFoundException - One of the objects referenced in the lock token were not found

isLocked

public boolean isLocked(SlideToken slideToken,
                        ObjectNode subject,
                        SubjectNode user,
                        ActionNode action,
                        boolean tryToLock)
                 throws ServiceAccessException,
                        ObjectNotFoundException
Tests if an element is locked.
Specified by:
isLocked in interface Lock
Parameters:
crendentialsToken - Credentials token
subject - Subject to test
user - User to test
action - Locked for action
Returns:
boolean True if the subject is locked
Throws:
ServiceAccessException - Low level service access exception
ObjectNotFoundException - One of the objects referenced in the lock token were not found

isLocked

public boolean isLocked(SlideToken slideToken,
                        ObjectNode subject,
                        SubjectNode user,
                        ActionNode action,
                        boolean inheritance,
                        boolean tryToLock)
                 throws ServiceAccessException,
                        ObjectNotFoundException
Tests if an element is locked.
Specified by:
isLocked in interface Lock
Parameters:
crendentialsToken - Credentials token
subject - Subject to test
user - User to test
action - Locked for action
inheritance - Set to true if we want to check if any children is locked with an incompatible lock
tryToLock - True if the check is intended to check whether or not we can put a new lock
Returns:
boolean True if the subject is locked
Throws:
ServiceAccessException - Low level service access exception
ObjectNotFoundException - One of the objects referenced in the lock token were not found

isLocked

public boolean isLocked(SlideToken slideToken,
                        NodeLock token,
                        boolean tryToLock)
                 throws ServiceAccessException,
                        ObjectNotFoundException
Tests if an element is locked.
Specified by:
isLocked in interface Lock
Parameters:
token - Lock token to test
Returns:
boolean True if locked
Throws:
ServiceAccessException - Low level service access exception
ObjectNotFoundException - One of the objects referenced in the lock token were not found