Package org.apache.cassandra.auth
Class AuthCache<K,V>
- java.lang.Object
-
- org.apache.cassandra.auth.AuthCache<K,V>
-
- All Implemented Interfaces:
AuthCacheMBean
- Direct Known Subclasses:
NetworkAuthCache
,PermissionsCache
,RolesCache
public class AuthCache<K,V> extends java.lang.Object implements AuthCacheMBean
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AuthCache(java.lang.String name, java.util.function.IntConsumer setValidityDelegate, java.util.function.IntSupplier getValidityDelegate, java.util.function.IntConsumer setUpdateIntervalDelegate, java.util.function.IntSupplier getUpdateIntervalDelegate, java.util.function.IntConsumer setMaxEntriesDelegate, java.util.function.IntSupplier getMaxEntriesDelegate, java.util.function.Function<K,V> loadFunction, java.util.function.BooleanSupplier cacheEnabledDelegate)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description V
get(K k)
Retrieve a value from the cache.int
getMaxEntries()
protected java.lang.String
getObjectName()
int
getUpdateInterval()
int
getValidity()
protected void
init()
Do setup for the cache and MBean.protected com.github.benmanes.caffeine.cache.LoadingCache<K,V>
initCache(com.github.benmanes.caffeine.cache.LoadingCache<K,V> existing)
(Re-)initialise the underlying cache.void
invalidate()
Invalidate the entire cache.void
invalidate(K k)
Invalidate a keyvoid
setMaxEntries(int maxEntries)
Set maximum number of entries in the cache.void
setUpdateInterval(int updateInterval)
Time in milliseconds after which an entry in the cache should be refreshed (it's load function called again)void
setValidity(int validityPeriod)
Time in milliseconds that a value in the cache will expire after.protected void
unregisterMBean()
-
-
-
Constructor Detail
-
AuthCache
protected AuthCache(java.lang.String name, java.util.function.IntConsumer setValidityDelegate, java.util.function.IntSupplier getValidityDelegate, java.util.function.IntConsumer setUpdateIntervalDelegate, java.util.function.IntSupplier getUpdateIntervalDelegate, java.util.function.IntConsumer setMaxEntriesDelegate, java.util.function.IntSupplier getMaxEntriesDelegate, java.util.function.Function<K,V> loadFunction, java.util.function.BooleanSupplier cacheEnabledDelegate)
- Parameters:
name
- Used for MBeansetValidityDelegate
- Used to set cache validity period. SeePolicy#expireAfterWrite()
getValidityDelegate
- Getter for validity periodsetUpdateIntervalDelegate
- Used to set cache update interval. SeePolicy#refreshAfterWrite()
getUpdateIntervalDelegate
- Getter for update intervalsetMaxEntriesDelegate
- Used to set max # entries in cache. SeePolicy.Eviction.setMaximum(long)
getMaxEntriesDelegate
- Getter for max entries.loadFunction
- Function to load the cache. Called onget(Object)
cacheEnabledDelegate
- Used to determine if cache is enabled.
-
-
Method Detail
-
init
protected void init()
Do setup for the cache and MBean.
-
unregisterMBean
protected void unregisterMBean()
-
getObjectName
protected java.lang.String getObjectName()
-
get
public V get(K k)
Retrieve a value from the cache. Will callLoadingCache.get(Object)
which will "load" the value if it's not present, thus populating the key.- Parameters:
k
-- Returns:
- The current value of
K
if cached or loaded. SeeLoadingCache.get(Object)
for possible exceptions.
-
invalidate
public void invalidate()
Invalidate the entire cache.- Specified by:
invalidate
in interfaceAuthCacheMBean
-
invalidate
public void invalidate(K k)
Invalidate a key- Parameters:
k
- key to invalidate
-
setValidity
public void setValidity(int validityPeriod)
Time in milliseconds that a value in the cache will expire after.- Specified by:
setValidity
in interfaceAuthCacheMBean
- Parameters:
validityPeriod
- in milliseconds
-
getValidity
public int getValidity()
- Specified by:
getValidity
in interfaceAuthCacheMBean
-
setUpdateInterval
public void setUpdateInterval(int updateInterval)
Time in milliseconds after which an entry in the cache should be refreshed (it's load function called again)- Specified by:
setUpdateInterval
in interfaceAuthCacheMBean
- Parameters:
updateInterval
- in milliseconds
-
getUpdateInterval
public int getUpdateInterval()
- Specified by:
getUpdateInterval
in interfaceAuthCacheMBean
-
setMaxEntries
public void setMaxEntries(int maxEntries)
Set maximum number of entries in the cache.- Specified by:
setMaxEntries
in interfaceAuthCacheMBean
- Parameters:
maxEntries
-
-
getMaxEntries
public int getMaxEntries()
- Specified by:
getMaxEntries
in interfaceAuthCacheMBean
-
initCache
protected com.github.benmanes.caffeine.cache.LoadingCache<K,V> initCache(com.github.benmanes.caffeine.cache.LoadingCache<K,V> existing)
(Re-)initialise the underlying cache. Will update validity, max entries, and update interval if any have changed. The underlyingLoadingCache
will be initiated based on the providedloadFunction
. Note: If you need some unhandled cache setting to be set you should extendAuthCache
and override this method.- Parameters:
existing
- If not null will only update cache update validity, max entries, and update interval.- Returns:
- New
LoadingCache
if existing was null, otherwise the existingcache
-
-