Class SubjectDataCacheImpl<I>
- java.lang.Object
-
- ca.stellardrift.permissionsex.impl.subject.SubjectDataCacheImpl<I>
-
- All Implemented Interfaces:
ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
public final class SubjectDataCacheImpl<I> extends Object implements ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
Cache for subject data objects from a single data store.
-
-
Constructor Summary
Constructors Constructor Description SubjectDataCacheImpl(ca.stellardrift.permissionsex.subject.SubjectType<I> type, ca.stellardrift.permissionsex.datastore.DataStore dataStore)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddListener(I identifier, Consumer<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> listener)voidcacheAll()CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData>data(I identifier, @Nullable Consumer<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> listener)Stream<I>getAllIdentifiers()ca.stellardrift.permissionsex.subject.SubjectRef<String>getDefaultIdentifier()voidinvalidate(I identifier)CompletableFuture<Boolean>isRegistered(I identifier)voidload(I identifier)CompletableFuture<ToDataSubjectRefImpl<I>>referenceTo(I identifier)CompletableFuture<ToDataSubjectRefImpl<I>>referenceTo(I identifier, boolean strongListeners)CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData>remove(I identifier)CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData>set(I identifier, @Nullable ca.stellardrift.permissionsex.subject.ImmutableSubjectData newData)ca.stellardrift.permissionsex.subject.SubjectType<I>type()voidupdate(ca.stellardrift.permissionsex.datastore.DataStore newDataStore)For internal use only.CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData>update(I identifier, UnaryOperator<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> action)
-
-
-
Constructor Detail
-
SubjectDataCacheImpl
public SubjectDataCacheImpl(ca.stellardrift.permissionsex.subject.SubjectType<I> type, ca.stellardrift.permissionsex.datastore.DataStore dataStore)
-
-
Method Detail
-
update
@EnsuresNonNull("this.dataStore") public void update(ca.stellardrift.permissionsex.datastore.DataStore newDataStore)For internal use only. Replace the backing data store while maintaining cache entries, ex. when the engine is reloaded.- Parameters:
newDataStore- The new data store to use
-
data
public CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> data(I identifier, @Nullable Consumer<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> listener)
- Specified by:
datain interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
referenceTo
public CompletableFuture<ToDataSubjectRefImpl<I>> referenceTo(I identifier)
- Specified by:
referenceToin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
referenceTo
public CompletableFuture<ToDataSubjectRefImpl<I>> referenceTo(I identifier, boolean strongListeners)
- Specified by:
referenceToin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
update
public CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> update(I identifier, UnaryOperator<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> action)
- Specified by:
updatein interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
load
public void load(I identifier)
- Specified by:
loadin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
invalidate
public void invalidate(I identifier)
- Specified by:
invalidatein interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
cacheAll
public void cacheAll()
- Specified by:
cacheAllin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
isRegistered
public CompletableFuture<Boolean> isRegistered(I identifier)
- Specified by:
isRegisteredin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
remove
public CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> remove(I identifier)
- Specified by:
removein interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
set
public CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> set(I identifier, @Nullable ca.stellardrift.permissionsex.subject.ImmutableSubjectData newData)
- Specified by:
setin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
addListener
public void addListener(I identifier, Consumer<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> listener)
- Specified by:
addListenerin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
type
public ca.stellardrift.permissionsex.subject.SubjectType<I> type()
- Specified by:
typein interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
getAllIdentifiers
public Stream<I> getAllIdentifiers()
- Specified by:
getAllIdentifiersin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
getDefaultIdentifier
public ca.stellardrift.permissionsex.subject.SubjectRef<String> getDefaultIdentifier()
- Specified by:
getDefaultIdentifierin interfaceca.stellardrift.permissionsex.subject.SubjectDataCache<I>
-
-