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 protectedAuthCache(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 Vget(K k)Retrieve a value from the cache.intgetMaxEntries()protected java.lang.StringgetObjectName()intgetUpdateInterval()intgetValidity()protected voidinit()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.voidinvalidate()Invalidate the entire cache.voidinvalidate(K k)Invalidate a keyvoidsetMaxEntries(int maxEntries)Set maximum number of entries in the cache.voidsetUpdateInterval(int updateInterval)Time in milliseconds after which an entry in the cache should be refreshed (it's load function called again)voidsetValidity(int validityPeriod)Time in milliseconds that a value in the cache will expire after.protected voidunregisterMBean()
-
-
-
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
Kif cached or loaded. SeeLoadingCache.get(Object)for possible exceptions.
-
invalidate
public void invalidate()
Invalidate the entire cache.- Specified by:
invalidatein 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:
setValidityin interfaceAuthCacheMBean- Parameters:
validityPeriod- in milliseconds
-
getValidity
public int getValidity()
- Specified by:
getValidityin 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:
setUpdateIntervalin interfaceAuthCacheMBean- Parameters:
updateInterval- in milliseconds
-
getUpdateInterval
public int getUpdateInterval()
- Specified by:
getUpdateIntervalin interfaceAuthCacheMBean
-
setMaxEntries
public void setMaxEntries(int maxEntries)
Set maximum number of entries in the cache.- Specified by:
setMaxEntriesin interfaceAuthCacheMBean- Parameters:
maxEntries-
-
getMaxEntries
public int getMaxEntries()
- Specified by:
getMaxEntriesin 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 underlyingLoadingCachewill be initiated based on the providedloadFunction. Note: If you need some unhandled cache setting to be set you should extendAuthCacheand override this method.- Parameters:
existing- If not null will only update cache update validity, max entries, and update interval.- Returns:
- New
LoadingCacheif existing was null, otherwise the existingcache
-
-