| java.lang.Object org.geotools.data.InProcessLockingManager
InProcessLockingManager | public class InProcessLockingManager implements LockingManager(Code) | | Provides In-Process FeatureLocking support for DataStore implementations.
If at all possible DataStore implementations should provide a real Feature
Locking support that is persisted to disk or database and resepected by
other processes.
This class provides a stop gap solution that implementations may use for
GeoServer compatability.
author: Jody Garnett, Refractions Research author: Chris Holmes, TOPP |
Inner Class :interface Lock | |
Inner Class :class TransactionLock implements Lock,State | |
Inner Class :class MemoryLock implements Lock | |
Method Summary | |
protected Set | allLocks() Set of all locks. | public void | assertAccess(String typeName, String featureID, Transaction transaction) Checks mutability of featureID for this transaction.
Two behaviors are defined by FeatureLocking:
-
TransactionLock (Blocking): lock held by a Transaction
Authorization is granted to the Transaction holding the Lock. | public FeatureWriter | checkedWriter(FeatureWriter writer, Transaction transaction) Provides a wrapper on the provided writer that checks locks. | protected synchronized Lock | createLock(Transaction transaction, FeatureLock featureLock) Creates the right sort of In-Process Lock. | public boolean | exists(String authID) Implment lockExists. | protected Lock | getLock(String typeName, String featureID) Lock for typeName & featureID if it exists. | public boolean | isLocked(String typeName, String featureID) | public synchronized void | lockFeatureID(String typeName, String featureID, Transaction transaction, FeatureLock featureLock) Aquire lock on featureID. | protected Map | locks(String typeName) | public synchronized boolean | refresh(String authID, Transaction transaction) Refresh locks held by the authorization authID . | public boolean | release(String authID, Transaction transaction) Release locks held by the authorization authID . | public synchronized void | unLockFeatureID(String typeName, String featureID, Transaction transaction, FeatureLock featureLock) Release indicated featureID, must have correct authroization. |
lockTables | protected Map lockTables(Code) | | lockTable access by typeName stores Transactions or MemoryLocks
|
allLocks | protected Set allLocks()(Code) | | Set of all locks.
Set of all locks |
assertAccess | public void assertAccess(String typeName, String featureID, Transaction transaction) throws FeatureLockException(Code) | | Checks mutability of featureID for this transaction.
Two behaviors are defined by FeatureLocking:
-
TransactionLock (Blocking): lock held by a Transaction
Authorization is granted to the Transaction holding the Lock. Conflict
will result in a block until the Transaction holding the lock
completes. (This behavior is equivalent to a Database row-lock, or a
java synchronized statement)
-
FeatureLock (Error): lock held by a FeatureLock
Authorization is based on the set of Authorization IDs held by the
provided Transaction. Conflict will result in an error. (This behavior
is equivalent to the WFS locking specification)
Right now we are just going to error out with an exception
Parameters: typeName - Feature type to check against Parameters: featureID - FeatureID to check Parameters: transaction - Provides Authorization throws: FeatureLockException - If transaction does not have sufficientauthroization |
checkedWriter | public FeatureWriter checkedWriter(FeatureWriter writer, Transaction transaction)(Code) | | Provides a wrapper on the provided writer that checks locks.
Parameters: writer - FeatureWriter requiring access control Parameters: transaction - Transaction being used FeatureWriter with lock checking |
createLock | protected synchronized Lock createLock(Transaction transaction, FeatureLock featureLock) throws FeatureLockException(Code) | | Creates the right sort of In-Process Lock.
Parameters: transaction - Parameters: featureLock - In-Process Lock throws: FeatureLockException - When a Transaction lock is requestedagainst Transaction.AUTO_COMMIT |
getLock | protected Lock getLock(String typeName, String featureID)(Code) | | Lock for typeName & featureID if it exists.
This method will not return expired locks.
Parameters: typeName - Parameters: featureID - Lock if exists, or null |
isLocked | public boolean isLocked(String typeName, String featureID)(Code) | | Used by test cases
Parameters: typeName - Parameters: featureID - Return if feature is currently locked |
lockFeatureID | public synchronized void lockFeatureID(String typeName, String featureID, Transaction transaction, FeatureLock featureLock) throws FeatureLockException(Code) | | Aquire lock on featureID.
This method will fail if Lock is already held by another.
Parameters: typeName - TypeName storing feature Parameters: featureID - FeatureID to lock Parameters: transaction - Transaction to lock against Parameters: featureLock - FeatureLock describing lock request throws: FeatureLockException - Indicates a problem with the lock request |
locks | protected Map locks(String typeName)(Code) | | Access to a Map of locks for typeName
Parameters: typeName - typeName Map of Transaction or MemoryLock by featureID |
refresh | public synchronized boolean refresh(String authID, Transaction transaction) throws IOException(Code) | | Refresh locks held by the authorization authID .
(remember that the lock may have expired)
Parameters: authID - Authorization identifing Lock to refresh Parameters: transaction - Transaction with authorization for lockID true if lock was found and refreshed throws: IOException - If transaction not authorized to refresh authID throws: IllegalArgumentException - If authID or transaction not provided |
release | public boolean release(String authID, Transaction transaction) throws IOException(Code) | | Release locks held by the authorization authID .
(remember that the lock may have expired)
Parameters: authID - Authorization identifing Lock to release Parameters: transaction - Transaction with authorization for lockID true if lock was found and released throws: IOException - If transaction not authorized to release authID throws: IllegalArgumentException - If authID or transaction not provided |
unLockFeatureID | public synchronized void unLockFeatureID(String typeName, String featureID, Transaction transaction, FeatureLock featureLock) throws IOException(Code) | | Release indicated featureID, must have correct authroization.
Parameters: typeName - Parameters: featureID - Parameters: transaction - Parameters: featureLock - throws: IOException - If lock could not be released |
|
|