|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.atlassian.confluence.cache.TransactionalCacheFactory
public class TransactionalCacheFactory
A cache factory that produces transactional caches. These caches perform their updates only when the current transaction is successfully committed. Caches obtained outside of a transaction will pass updates immediately to the target cache while posting a warning to the cache factory log.
Transactional caches returned by this factory make a best effort at committing changes to the underlying cache, but they don't recover well from failure (caches with failures will be flushed), and there is no way that the associated database transaction can be rolled back if the cache updates fail. Cache updates that are to be performed outside of a transaction that are not transactionally significant can be performed via a cache obtained fromgetReadThroughCacheForUpdate(String). One example of such a use would be
cache read through.
Transaction synchronization is performed via the provided SynchronizationManager.
All updates to underlying caches are performed inside a lock on the cache to prevent other writes occurring at the
same time. This applies for updates done post-commit for transaction-based caches, as well as those done via the
read-through update method.
| Constructor Summary | |
|---|---|
TransactionalCacheFactory(com.atlassian.cache.CacheFactory cacheFactory,
LockFactory lockFactory,
SynchronizationManager synchronizationManager,
ConfluenceMonitoring confluenceMonitoring)
|
|
| Method Summary | ||
|---|---|---|
|
getCache(Class<?> owningClass,
String name)
|
|
|
getCache(String name)
|
|
|
getCache(String name,
com.atlassian.cache.CacheLoader<K,V> loader)
|
|
|
getCache(String cacheName,
com.atlassian.cache.CacheLoader<K,V> loader,
com.atlassian.cache.CacheSettings required)
|
|
|
getCache(String name,
Class<K> keyType,
Class<V> valueType)
|
|
|
getCachedReference(Class<?> owningClass,
String name,
com.atlassian.cache.Supplier<V> supplier)
|
|
|
getCachedReference(Class<?> owningClass,
String name,
com.atlassian.cache.Supplier<V> supplier,
com.atlassian.cache.CacheSettings required)
|
|
|
getCachedReference(String name,
com.atlassian.cache.Supplier<V> supplier)
|
|
|
getCachedReference(String name,
com.atlassian.cache.Supplier<V> supplier,
com.atlassian.cache.CacheSettings required)
|
|
Lock |
getLock(String cacheName)
Get a lock -- getting the lock does *not* imply that it has been acquired. |
|
|
getReadThroughCacheForUpdate(com.atlassian.cache.Cache<K,V> cache)
Returns the requested cache with no transactional wrapper for updates read from the database. |
|
|
getReadThroughCacheForUpdate(String cacheName)
Returns the requested cache with no transactional wrapper for updates read from the database. |
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public TransactionalCacheFactory(com.atlassian.cache.CacheFactory cacheFactory,
LockFactory lockFactory,
SynchronizationManager synchronizationManager,
ConfluenceMonitoring confluenceMonitoring)
| Method Detail |
|---|
@Nonnull
public <K,V> com.atlassian.cache.Cache<K,V> getCache(@Nonnull
String cacheName,
com.atlassian.cache.CacheLoader<K,V> loader,
@Nonnull
com.atlassian.cache.CacheSettings required)
getCache in interface com.atlassian.cache.CacheFactorypublic <K,V> com.atlassian.cache.Cache<K,V> getReadThroughCacheForUpdate(String cacheName)
Cache.put(Object, Object) are performed under the appropriate cache lock to prevent concurrent writes.
getReadThroughCacheForUpdate in interface ReadThroughCacheFactorypublic <K,V> com.atlassian.cache.Cache<K,V> getReadThroughCacheForUpdate(com.atlassian.cache.Cache<K,V> cache)
Cache.put(Object, Object) are performed under the appropriate cache lock to prevent concurrent writes.
getReadThroughCacheForUpdate in interface ReadThroughCacheFactorypublic Lock getLock(String cacheName)
LockFactoryLock.tryLock() or Lock.lock() on the returned object to
acquire the lock.
getLock in interface LockFactory
@Nonnull
public <K,V> com.atlassian.cache.Cache<K,V> getCache(@Nonnull
String name,
@Nonnull
Class<K> keyType,
@Nonnull
Class<V> valueType)
getCache in interface com.atlassian.cache.CacheFactory
@Nonnull
public <K,V> com.atlassian.cache.Cache<K,V> getCache(@Nonnull
Class<?> owningClass,
@Nonnull
String name)
getCache in interface com.atlassian.cache.CacheFactory
@Nonnull
public <K,V> com.atlassian.cache.Cache<K,V> getCache(@Nonnull
String name,
com.atlassian.cache.CacheLoader<K,V> loader)
getCache in interface com.atlassian.cache.CacheFactory
@Nonnull
public <K,V> com.atlassian.cache.Cache<K,V> getCache(@Nonnull
String name)
getCache in interface com.atlassian.cache.CacheFactory
@Nonnull
public <V> com.atlassian.cache.CachedReference<V> getCachedReference(@Nonnull
String name,
@Nonnull
com.atlassian.cache.Supplier<V> supplier,
@Nonnull
com.atlassian.cache.CacheSettings required)
getCachedReference in interface com.atlassian.cache.CacheFactory
@Nonnull
public <V> com.atlassian.cache.CachedReference<V> getCachedReference(@Nonnull
String name,
@Nonnull
com.atlassian.cache.Supplier<V> supplier)
getCachedReference in interface com.atlassian.cache.CacheFactory
@Nonnull
public <V> com.atlassian.cache.CachedReference<V> getCachedReference(@Nonnull
Class<?> owningClass,
@Nonnull
String name,
@Nonnull
com.atlassian.cache.Supplier<V> supplier)
getCachedReference in interface com.atlassian.cache.CacheFactory
@Nonnull
public <V> com.atlassian.cache.CachedReference<V> getCachedReference(@Nonnull
Class<?> owningClass,
@Nonnull
String name,
@Nonnull
com.atlassian.cache.Supplier<V> supplier,
@Nonnull
com.atlassian.cache.CacheSettings required)
getCachedReference in interface com.atlassian.cache.CacheFactory
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||