@ParametersAreNonnullByDefault public abstract class AbstractCacheManager extends Object implements CacheManager
CacheManager.| Modifier and Type | Field and Description |
|---|---|
protected Function<String,io.atlassian.util.concurrent.ManagedLock> |
cacheCreationLocks
Used to synchronize the creation of caches.
|
protected ConcurrentMap<String,Supplier<ManagedCache>> |
caches
Map of all the caches.
|
protected CacheSettingsDefaultsProvider |
cacheSettingsDefaultsProvider |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractCacheManager(CacheSettingsDefaultsProvider cacheSettingsDefaultsProvider) |
| Modifier and Type | Method and Description |
|---|---|
protected abstract <K,V> ManagedCache |
createComputingCache(String name,
CacheSettings settings,
CacheLoader<K,V> loader)
Creates a cache that upon a miss is able to populate itself using the loader.
|
protected abstract ManagedCache |
createSimpleCache(String name,
CacheSettings settings)
Creates a cache with no loader, i.e.
|
void |
flushCaches()
Flush the contents of all flushable caches registered with the cache manager.
|
<K,V> Cache<K,V> |
getCache(Class<?> owningClass,
String name)
Returns the cache with the given name, creates it if necessary.
|
<K,V> Cache<K,V> |
getCache(String name)
Returns the cache with the given name, creates it if necessary.
|
<K,V> Cache<K,V> |
getCache(String name,
CacheLoader<K,V> loader)
Returns the cache with the given name and loader, creates it if necessary.
|
<K,V> Cache<K,V> |
getCache(String name,
CacheLoader<K,V> loader,
CacheSettings settings)
Returns the cache with the given name, loader and required cache settings, creates it if necessary.
|
<K,V> Cache<K,V> |
getCache(String name,
Class<K> keyType,
Class<V> valueType)
Returns a cache with the given name, and the types specified.
|
<V> CachedReference<V> |
getCachedReference(Class<?> owningClass,
String name,
Supplier<V> supplier)
Returns a Cached Reference, creating it if necessary.
|
<V> CachedReference<V> |
getCachedReference(Class<?> owningClass,
String name,
Supplier<V> supplier,
CacheSettings settings)
Returns a Cached Reference, creating it if necessary.
|
<V> CachedReference<V> |
getCachedReference(String name,
Supplier<V> supplier)
Returns a Cached Reference, creating it if necessary.
|
Collection<Cache<?,?>> |
getCaches()
Gets the collection of caches managed.
|
ManagedCache |
getManagedCache(String name)
Returns the managed cache for the specified name.
|
Collection<ManagedCache> |
getManagedCaches()
Gets the collection of caches managed.
|
protected CacheSettings |
mergeSettings(String name,
CacheSettings settings) |
void |
shutdown()
Shuts down and clean all data of the current instance and its all caches.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetCachedReferenceprotected final ConcurrentMap<String,Supplier<ManagedCache>> caches
cacheCreationLocks
to ensure that a cache is created only once.protected final Function<String,io.atlassian.util.concurrent.ManagedLock> cacheCreationLocks
@Nullable protected final CacheSettingsDefaultsProvider cacheSettingsDefaultsProvider
protected AbstractCacheManager(@Nullable CacheSettingsDefaultsProvider cacheSettingsDefaultsProvider)
@Nonnull public Collection<Cache<?,?>> getCaches()
CacheManagergetCaches in interface CacheManagerCaches. The returned collection will only include caches created via
the getCache(...) methods. Caches created via the getCachedReference(...)
methods are not included.@Nonnull public Collection<ManagedCache> getManagedCaches()
CacheManagergetCache(...) and
getCachedReference(...) methods.getManagedCaches in interface CacheManagerManagedCaches.@Nullable public ManagedCache getManagedCache(@Nonnull String name)
CacheManagergetManagedCache in interface CacheManagername - the name of the managed cache to retrieveManagedCache specified by name
or null if no cache exists.public void flushCaches()
CacheManagerflushCaches in interface CacheManagerCacheSettings.getFlushable()@Nonnull public <K,V> Cache<K,V> getCache(@Nonnull String name)
CacheFactoryCacheFactory.getCache(String, CacheLoader)
with name and null.getCache in interface CacheFactoryname - the name of the cache@Nonnull public <K,V> Cache<K,V> getCache(@Nonnull Class<?> owningClass, @Nonnull String name)
CacheFactory
It is equivalent to calling CacheFactory.getCache(String) with the computed name.
getCache in interface CacheFactoryowningClass - the owning classname - the name of the cache spaced within the owningClass@Nonnull public <K,V> Cache<K,V> getCache(@Nonnull String name, @Nonnull Class<K> keyType, @Nonnull Class<V> valueType)
CacheFactory
Cache<String,String> firstCache = cacheManager.getCache("myCache", String.class, String.class);
Cache<String,Long> secondCache = cacheManager.getCache("myCache", String.class, Long.class);
the second call to getCache will result in a ClassCastException.
getCache in interface CacheFactoryname - the name of the cachekeyType - the type of keys in the cache. Must extend SerializablevalueType - the type of values in the cache. Must extend Serializable@Nonnull public <K,V> Cache<K,V> getCache(@Nonnull String name, @Nullable CacheLoader<K,V> loader)
CacheFactoryCacheFactory.getCache(String, CacheLoader, CacheSettings)
with name, null and new CacheSettingsBuilder().build().getCache in interface CacheFactoryname - the name of the cacheloader - the loader that will be used to provide values for keys that will be added to the cache. null indicates no loader@Nonnull public <V> CachedReference<V> getCachedReference(@Nonnull String name, @Nonnull Supplier<V> supplier)
CacheFactorygetCachedReference in interface CacheFactoryname - the name of the Cached Referencesupplier - the supplier for value to be cached, called if the value needs to be generated@Nonnull public <V> CachedReference<V> getCachedReference(@Nonnull Class<?> owningClass, @Nonnull String name, @Nonnull Supplier<V> supplier)
CacheFactory
It is equivalent to calling CacheFactory.getCachedReference(String, Supplier, CacheSettings)
getCachedReference in interface CacheFactoryowningClass - the owning classname - the name of the cache spaced within the owningClasssupplier - the supplier for value to be cached, called if the value needs to be generated@Nonnull public <V> CachedReference<V> getCachedReference(@Nonnull Class<?> owningClass, @Nonnull String name, @Nonnull Supplier<V> supplier, @Nonnull CacheSettings settings)
CacheFactory
It is equivalent to calling CacheFactory.getCachedReference(String, Supplier, CacheSettings)
getCachedReference in interface CacheFactoryowningClass - the owning classname - the name of the cache spaced within the owningClasssupplier - the supplier for value to be cached, called if the value needs to be generatedsettings - specifies the required cache settings@Nonnull public <K,V> Cache<K,V> getCache(@Nonnull String name, @Nullable CacheLoader<K,V> loader, @Nonnull CacheSettings settings)
CacheFactorygetCache in interface CacheFactoryname - the name of the cacheloader - the loader that will be used to provide values for keys that will be added to the cache. null indicates no loadersettings - the cache settings that are required to be set if the cache is created.protected abstract <K,V> ManagedCache createComputingCache(@Nonnull String name, @Nonnull CacheSettings settings, @Nullable CacheLoader<K,V> loader)
protected abstract ManagedCache createSimpleCache(@Nonnull String name, @Nonnull CacheSettings settings)
name - the name to give the cache (required)protected CacheSettings mergeSettings(String name, CacheSettings settings)
public void shutdown()
CacheManagershutdown in interface CacheManagerCopyright © 2018 Atlassian. All rights reserved.