Package org.opensaml.storage
Class ReplayCache
-
- All Implemented Interfaces:
Component,DestructableComponent,IdentifiableComponent,IdentifiedComponent,InitializableComponent
@ThreadSafeAfterInit public class ReplayCache extends AbstractIdentifiableInitializableComponent
Tracks non-replayable values in order to detect replays of the values, commonly used to track message identifiers.This class is thread-safe and uses a synchronized method to prevent race conditions within the underlying store (lacking an atomic "check and insert" operation).
-
-
Field Summary
Fields Modifier and Type Field Description private StringDigesterdigesterDigester if key is too long.private org.slf4j.LoggerlogLogger.private StorageServicestorageBacking storage for the replay cache.private booleanstrictFlag controlling behavior on storage failure.
-
Constructor Summary
Constructors Constructor Description ReplayCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancheck(String context, String s, Instant expires)Returns true iff the check value is not found in the cache, and stores it.voiddoInitialize()StorageServicegetStorage()Get the backing store for the cache.booleanisStrict()Get the strictness flag.voidsetStorage(StorageService storageService)Set the backing store for the cache.voidsetStrict(boolean flag)Set the strictness flag.-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiableInitializableComponent
setId
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractIdentifiedInitializableComponent
getId
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, initialize, isDestroyed, isInitialized
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.shibboleth.utilities.java.support.component.IdentifiedComponent
getId
-
-
-
-
Field Detail
-
log
private final org.slf4j.Logger log
Logger.
-
storage
@NonnullAfterInit private StorageService storage
Backing storage for the replay cache.
-
digester
@NonnullAfterInit private StringDigester digester
Digester if key is too long.
-
strict
private boolean strict
Flag controlling behavior on storage failure.
-
-
Method Detail
-
getStorage
@NonnullAfterInit public StorageService getStorage()
Get the backing store for the cache.- Returns:
- the backing store.
-
setStorage
public void setStorage(@Nonnull StorageService storageService)Set the backing store for the cache.- Parameters:
storageService- backing store to use
-
isStrict
public boolean isStrict()
Get the strictness flag.- Returns:
- true iff we should treat storage failures as a replay
-
setStrict
public void setStrict(boolean flag)
Set the strictness flag.- Parameters:
flag- true iff we should treat storage failures as a replay
-
doInitialize
public void doInitialize() throws ComponentInitializationException- Overrides:
doInitializein classAbstractIdentifiedInitializableComponent- Throws:
ComponentInitializationException
-
check
public boolean check(@Nonnull @NotEmpty String context, @Nonnull @NotEmpty String s, @Nonnull Instant expires)
Returns true iff the check value is not found in the cache, and stores it.- Parameters:
context- a context label to subdivide the caches- value to checkexpires- time for disposal of value from cache- Returns:
- true iff the check value is not found in the cache
-
-