/* * Copyright 1999,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.modeshape.webdav.locking; import org.modeshape.webdav.ITransaction; import org.modeshape.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. * @param temporary * @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 * @return true if the resources were unlocked, or false otherwise */ 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 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 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 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 getTempLockedObjectByPath( ITransaction transaction, String path ); }