You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by oz...@apache.org on 2005/01/07 14:32:33 UTC
cvs commit: jakarta-commons/transaction/src/java/org/apache/commons/transaction/file FileResourceManager.java
ozeigermann 2005/01/07 05:32:33
Modified: transaction/src/java/org/apache/commons/transaction/locking
LockManager.java
transaction RELEASE-NOTES.txt
transaction/src/java/org/apache/commons/transaction/file
FileResourceManager.java
Added: transaction/src/java/org/apache/commons/transaction/locking
LockManager2.java
Log:
Introduced LockManager2 to assure 1.0 compatibility for 1.1 and later
Revision Changes Path
1.4 +9 -121 jakarta-commons/transaction/src/java/org/apache/commons/transaction/locking/LockManager.java
Index: LockManager.java
===================================================================
RCS file: /home/cvs/jakarta-commons/transaction/src/java/org/apache/commons/transaction/locking/LockManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- LockManager.java 17 Dec 2004 00:14:08 -0000 1.3
+++ LockManager.java 7 Jan 2005 13:32:33 -0000 1.4
@@ -23,8 +23,6 @@
package org.apache.commons.transaction.locking;
-import java.util.Set;
-
/**
*
* A manager for multi level locks on resources. Encapsulates creation, removal, and retrieval of locks.
@@ -38,136 +36,26 @@
public interface LockManager {
/**
- * Tries to acquire a lock on a resource. <br>
- * <br>
- * This method does not block, but immediatly returns. If a lock is not
- * available <code>false</code> will be returned.
- *
- * @param ownerId
- * a unique id identifying the entity that wants to acquire this
- * lock
- * @param resourceId
- * the resource to get the level for
- * @param targetLockLevel
- * the lock level to acquire
- * @param reentrant
- * <code>true</code> if this request shall not be blocked by
- * other locks held by the same owner
- * @return <code>true</code> if the lock has been acquired, <code>false</code> otherwise
- *
- */
- public boolean tryLock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant);
-
- /**
- * Tries to acquire a lock on a resource. <br>
- * <br>
- * This method blocks and waits for the lock in case it is not avaiable. If
- * there is a timeout or a deadlock or the thread is interrupted a
- * LockException is thrown.
- *
- * @param ownerId
- * a unique id identifying the entity that wants to acquire this
- * lock
- * @param resourceId
- * the resource to get the level for
- * @param targetLockLevel
- * the lock level to acquire
- * @param reentrant
- * <code>true</code> if this request shall not be blocked by
- * other locks held by the same owner
- * @throws LockException
- * will be thrown when the lock can not be acquired
- */
- public void lock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant)
- throws LockException;
-
- /**
- * Tries to acquire a lock on a resource. <br>
- * <br>
- * This method blocks and waits for the lock in case it is not avaiable. If
- * there is a timeout or a deadlock or the thread is interrupted a
- * LockException is thrown.
- *
- * @param ownerId
- * a unique id identifying the entity that wants to acquire this
- * lock
- * @param resourceId
- * the resource to get the level for
- * @param targetLockLevel
- * the lock level to acquire
- * @param reentrant
- * <code>true</code> if this request shall not be blocked by
- * other locks held by the same owner
- * @param timeoutMSecs
- * specifies the maximum wait time in milliseconds
- * @throws LockException
- * will be thrown when the lock can not be acquired
- */
- public void lock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant,
- long timeoutMSecs) throws LockException;
-
- /**
- * Gets the lock level held by certain owner on a certain resource.
- *
- * @param ownerId the id of the owner of the lock
- * @param resourceId the resource to get the level for
- */
- public int getLevel(Object ownerId, Object resourceId);
-
- /**
- * Releases all locks for a certain resource held by a certain owner.
- *
- * @param ownerId the id of the owner of the lock
- * @param resourceId the resource to releases the lock for
- */
- public void release(Object ownerId, Object resourceId);
-
- /**
- * Releases all locks (partially) held by an owner.
- *
- * @param ownerId the id of the owner
- */
- public void releaseAll(Object ownerId);
-
- /**
- * Gets all locks (partially) held by an owner.
+ * Either gets an existing lock on the specified resource or creates one if none exists.
+ * This methods guarantees to do this atomically.
*
- * @param ownerId the id of the owner
- * @return all locks held by ownerId
+ * @param resourceId the resource to get or create the lock on
+ * @return the lock for the specified resource
*/
- public Set getAll(Object ownerId);
+ public MultiLevelLock atomicGetOrCreateLock(Object resourceId);
-
/**
* Gets an existing lock on the specified resource. If none exists it returns <code>null</code>.
*
* @param resourceId the resource to get the lock for
* @return the lock on the specified resource
- *
*/
public MultiLevelLock getLock(Object resourceId);
/**
* Removes the specified lock from the associated resource.
*
- * <em>Caution:</em> This does not release the lock, but only moves it out
- * of the scope of this manager. Use {@link #release(Object, Object)} for that.
- *
* @param lock the lock to be removed
*/
public void removeLock(MultiLevelLock lock);
-
- /**
- * Either gets an existing lock on the specified resource or creates one if none exists.
- * This methods guarantees to do this atomically.
- *
- * @param resourceId the resource to get or create the lock on
- * @return the lock for the specified resource
- *
- * @deprecated Direct access to locks is discouraged as dead lock detection and lock
- * maintenance now relies on the call to {@link #lock(Object, Object, int, int, long)},
- * {@link #tryLock(Object, Object, int, int)}, {@link #release(Object, Object)} and
- * {@link #releaseAll(Object)}. This method will be deleted.
- */
- public MultiLevelLock atomicGetOrCreateLock(Object resourceId);
}
1.1 jakarta-commons/transaction/src/java/org/apache/commons/transaction/locking/LockManager2.java
Index: LockManager2.java
===================================================================
/*
* $Header: /home/cvs/jakarta-commons/transaction/src/java/org/apache/commons/transaction/locking/LockManager2.java,v 1.1 2005/01/07 13:32:33 ozeigermann Exp $
* $Revision: 1.1 $
* $Date: 2005/01/07 13:32:33 $
*
* ====================================================================
*
* 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.apache.commons.transaction.locking;
import java.util.Set;
/**
* Extended version of a lock manager that also has global knowledge or all locks and should be
* used as a delegate for all locking requests. This allows for things like deadlock detection.
*
* @version $Revision: 1.1 $
* @see MultiLevelLock
* @see LockManager
* @see GenericLockManager
*/
public interface LockManager2 {
/**
* Tries to acquire a lock on a resource. <br>
* <br>
* This method does not block, but immediatly returns. If a lock is not
* available <code>false</code> will be returned.
*
* @param ownerId
* a unique id identifying the entity that wants to acquire this
* lock
* @param resourceId
* the resource to get the level for
* @param targetLockLevel
* the lock level to acquire
* @param reentrant
* <code>true</code> if this request shall not be blocked by
* other locks held by the same owner
* @return <code>true</code> if the lock has been acquired, <code>false</code> otherwise
*
*/
public boolean tryLock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant);
/**
* Tries to acquire a lock on a resource. <br>
* <br>
* This method blocks and waits for the lock in case it is not avaiable. If
* there is a timeout or a deadlock or the thread is interrupted a
* LockException is thrown.
*
* @param ownerId
* a unique id identifying the entity that wants to acquire this
* lock
* @param resourceId
* the resource to get the level for
* @param targetLockLevel
* the lock level to acquire
* @param reentrant
* <code>true</code> if this request shall not be blocked by
* other locks held by the same owner
* @throws LockException
* will be thrown when the lock can not be acquired
*/
public void lock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant)
throws LockException;
/**
* Tries to acquire a lock on a resource. <br>
* <br>
* This method blocks and waits for the lock in case it is not avaiable. If
* there is a timeout or a deadlock or the thread is interrupted a
* LockException is thrown.
*
* @param ownerId
* a unique id identifying the entity that wants to acquire this
* lock
* @param resourceId
* the resource to get the level for
* @param targetLockLevel
* the lock level to acquire
* @param reentrant
* <code>true</code> if this request shall not be blocked by
* other locks held by the same owner
* @param timeoutMSecs
* specifies the maximum wait time in milliseconds
* @throws LockException
* will be thrown when the lock can not be acquired
*/
public void lock(Object ownerId, Object resourceId, int targetLockLevel, boolean reentrant,
long timeoutMSecs) throws LockException;
/**
* Gets the lock level held by certain owner on a certain resource.
*
* @param ownerId the id of the owner of the lock
* @param resourceId the resource to get the level for
*/
public int getLevel(Object ownerId, Object resourceId);
/**
* Releases all locks for a certain resource held by a certain owner.
*
* @param ownerId the id of the owner of the lock
* @param resourceId the resource to releases the lock for
*/
public void release(Object ownerId, Object resourceId);
/**
* Releases all locks (partially) held by an owner.
*
* @param ownerId the id of the owner
*/
public void releaseAll(Object ownerId);
/**
* Gets all locks (partially) held by an owner.
*
* @param ownerId the id of the owner
* @return all locks held by ownerId
*/
public Set getAll(Object ownerId);
/**
* Gets an existing lock on the specified resource. If none exists it returns <code>null</code>.
*
* @param resourceId the resource to get the lock for
* @return the lock on the specified resource
*
*/
public MultiLevelLock getLock(Object resourceId);
/**
* Removes the specified lock from the associated resource.
*
* <em>Caution:</em> This does not release the lock, but only moves it out
* of the scope of this manager. Use {@link #release(Object, Object)} for that.
*
* @param lock the lock to be removed
*/
public void removeLock(MultiLevelLock lock);
}
1.9 +4 -4 jakarta-commons/transaction/RELEASE-NOTES.txt
Index: RELEASE-NOTES.txt
===================================================================
RCS file: /home/cvs/jakarta-commons/transaction/RELEASE-NOTES.txt,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- RELEASE-NOTES.txt 18 Dec 2004 23:19:08 -0000 1.8
+++ RELEASE-NOTES.txt 7 Jan 2005 13:32:33 -0000 1.9
@@ -1,8 +1,8 @@
-Jakarta Commons Transaction Release 1.1 beta1
----------------------------------------------
+Jakarta Commons Transaction Release 1.1 beta1 pre
+-------------------------------------------------
-RELEASE NUMBER: 1.1b1
-RELEASE TAG / BRANCH: TRANSACTION_1_1_B1_RELEASE / none yet
+RELEASE NUMBER: 1.1b1-pre
+RELEASE TAG / BRANCH: none yet / none yet
DESCRIPTION
-----------
1.6 +6 -6 jakarta-commons/transaction/src/java/org/apache/commons/transaction/file/FileResourceManager.java
Index: FileResourceManager.java
===================================================================
RCS file: /home/cvs/jakarta-commons/transaction/src/java/org/apache/commons/transaction/file/FileResourceManager.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- FileResourceManager.java 18 Dec 2004 23:19:09 -0000 1.5
+++ FileResourceManager.java 7 Jan 2005 13:32:33 -0000 1.6
@@ -45,7 +45,7 @@
import org.apache.commons.transaction.locking.GenericLock;
import org.apache.commons.transaction.locking.GenericLockManager;
import org.apache.commons.transaction.locking.LockException;
-import org.apache.commons.transaction.locking.LockManager;
+import org.apache.commons.transaction.locking.LockManager2;
import org.apache.commons.transaction.util.FileHelper;
import org.apache.commons.transaction.util.LoggerFacade;
@@ -192,7 +192,7 @@
protected Map globalTransactions;
protected List globalOpenResources;
- protected LockManager lockManager;
+ protected LockManager2 lockManager;
protected ResourceIdToPathMapper idMapper = null;
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org