org.hibernate.cache.jbc.collection
Class OptimisticReadOnlyAccess

java.lang.Object
  extended by org.hibernate.cache.jbc.collection.TransactionalAccess
      extended by org.hibernate.cache.jbc.collection.OptimisticTransactionalAccess
          extended by org.hibernate.cache.jbc.collection.OptimisticReadOnlyAccess
All Implemented Interfaces:
CollectionRegionAccessStrategy

public class OptimisticReadOnlyAccess
extends OptimisticTransactionalAccess

This defines the strategy for transactional access to collection data in an optimistic-locking JBossCache using its 2.x APIs.

The read-only access to a JBossCache really is still transactional, just with the extra semantic or guarantee that we will not update data.

Author:
Brian Stansberry

Constructor Summary
OptimisticReadOnlyAccess(CollectionRegionImpl region)
          Create a new OptimisticReadOnlyAccess.
 
Method Summary
 SoftLock lockItem(Object key, Object version)
          We are going to attempt to update/delete the keyed object.
 SoftLock lockRegion()
          Lock the entire region
 void unlockItem(Object key, SoftLock lock)
          Called when we have finished the attempted update/delete (which may or may not have been successful), after transaction completion.
 void unlockRegion(SoftLock lock)
          Called after we have finished the attempted invalidation of the entire region
 
Methods inherited from class org.hibernate.cache.jbc.collection.TransactionalAccess
evict, evictAll, get, getRegion, putFromLoad, putFromLoad, remove, removeAll
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OptimisticReadOnlyAccess

public OptimisticReadOnlyAccess(CollectionRegionImpl region)
Create a new OptimisticReadOnlyAccess.

Parameters:
region - The region to which this is providing access
Method Detail

lockItem

public SoftLock lockItem(Object key,
                         Object version)
                  throws CacheException
Description copied from class: TransactionalAccess
We are going to attempt to update/delete the keyed object. This method is used by "asynchronous" concurrency strategies.

The returned object must be passed back to release(), to release the lock. Concurrency strategies which do not support client-visible locks may silently return null.

Specified by:
lockItem in interface CollectionRegionAccessStrategy
Overrides:
lockItem in class TransactionalAccess
Parameters:
key - The key of the item to lock
version - The item's current version value
Returns:
A representation of our lock on the item; or null.
Throws:
CacheException - Propogated from underlying Region

lockRegion

public SoftLock lockRegion()
                    throws CacheException
Description copied from class: TransactionalAccess
Lock the entire region

Specified by:
lockRegion in interface CollectionRegionAccessStrategy
Overrides:
lockRegion in class TransactionalAccess
Returns:
A representation of our lock on the item; or null.
Throws:
CacheException - Propogated from underlying Region

unlockItem

public void unlockItem(Object key,
                       SoftLock lock)
                throws CacheException
Description copied from class: TransactionalAccess
Called when we have finished the attempted update/delete (which may or may not have been successful), after transaction completion. This method is used by "asynchronous" concurrency strategies.

Specified by:
unlockItem in interface CollectionRegionAccessStrategy
Overrides:
unlockItem in class TransactionalAccess
Parameters:
key - The item key
lock - The lock previously obtained from CollectionRegionAccessStrategy.lockItem(java.lang.Object, java.lang.Object)
Throws:
CacheException - Propogated from underlying Region

unlockRegion

public void unlockRegion(SoftLock lock)
                  throws CacheException
Description copied from class: TransactionalAccess
Called after we have finished the attempted invalidation of the entire region

Specified by:
unlockRegion in interface CollectionRegionAccessStrategy
Overrides:
unlockRegion in class TransactionalAccess
Parameters:
lock - The lock previously obtained from CollectionRegionAccessStrategy.lockRegion()
Throws:
CacheException - Propogated from underlying Region


Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.