package com.ejie.x38.webdav.locking; import com.ejie.x38.webdav.ITransaction; import com.ejie.x38.webdav.exceptions.LockFailedException; public interface IResourceLocks { /** * Tries to lock the resource at "path". * * @param transaction * @param path * what resource to lock * @param owner * the owner of the lock * @param exclusive * if the lock should be exclusive (or shared) * @param depth * depth * @param timeout * Lock Duration in seconds. * @return true if the resource at path was successfully locked, false if an * existing lock prevented this * @throws LockFailedException */ boolean lock(ITransaction transaction, String path, String owner, boolean exclusive, int depth, int timeout, boolean temporary) throws LockFailedException; /** * Unlocks all resources at "path" (and all subfolders if existing)<p/> that * have the same owner. * * @param transaction * @param id * id to the resource to unlock * @param owner * who wants to unlock */ boolean unlock(ITransaction transaction, String id, String owner); /** * Unlocks all resources at "path" (and all subfolders if existing)<p/> that * have the same owner. * * @param transaction * @param path * what resource to unlock * @param owner * who wants to unlock */ void unlockTemporaryLockedObjects(ITransaction transaction, String path, String owner); /** * Deletes LockedObjects, where timeout has reached. * * @param transaction * @param temporary * Check timeout on temporary or real locks */ void checkTimeouts(ITransaction transaction, boolean temporary); /** * Tries to lock the resource at "path" exclusively. * * @param transaction * Transaction * @param path * what resource to lock * @param owner * the owner of the lock * @param depth * depth * @param timeout * Lock Duration in seconds. * @return true if the resource at path was successfully locked, false if an * existing lock prevented this * @throws LockFailedException */ boolean exclusiveLock(ITransaction transaction, String path, String owner, int depth, int timeout) throws LockFailedException; /** * Tries to lock the resource at "path" shared. * * @param transaction * Transaction * @param path * what resource to lock * @param owner * the owner of the lock * @param depth * depth * @param timeout * Lock Duration in seconds. * @return true if the resource at path was successfully locked, false if an * existing lock prevented this * @throws LockFailedException */ boolean sharedLock(ITransaction transaction, String path, String owner, int depth, int timeout) throws LockFailedException; /** * Gets the LockedObject corresponding to specified id. * * @param transaction * @param id * LockToken to requested resource * @return LockedObject or null if no LockedObject on specified path exists */ LockedObject<? extends IResourceLocks> getLockedObjectByID(ITransaction transaction, String id); /** * Gets the LockedObject on specified path. * * @param transaction * @param path * Path to requested resource * @return LockedObject or null if no LockedObject on specified path exists */ LockedObject<? extends IResourceLocks> getLockedObjectByPath(ITransaction transaction, String path); /** * Gets the LockedObject corresponding to specified id (locktoken). * * @param transaction * @param id * LockToken to requested resource * @return LockedObject or null if no LockedObject on specified path exists */ LockedObject<? extends IResourceLocks> getTempLockedObjectByID(ITransaction transaction, String id); /** * Gets the LockedObject on specified path. * * @param transaction * @param path * Path to requested resource * @return LockedObject or null if no LockedObject on specified path exists */ LockedObject<? extends IResourceLocks> getTempLockedObjectByPath(ITransaction transaction, String path); }