Class 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 Detail

      • SubjectDataCacheImpl

        public SubjectDataCacheImpl​(ca.stellardrift.permissionsex.subject.SubjectType<I> type,
                                    ca.stellardrift.permissionsex.subject.SubjectRef<ca.stellardrift.permissionsex.subject.SubjectType<?>> defaultIdentifier,
                                    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:
        data in interface ca.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:
        update in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
      • load

        public void load​(I identifier)
        Specified by:
        load in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
      • invalidate

        public void invalidate​(I identifier)
        Specified by:
        invalidate in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
      • cacheAll

        public void cacheAll()
        Specified by:
        cacheAll in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
      • remove

        public CompletableFuture<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> remove​(I identifier)
        Specified by:
        remove in interface ca.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:
        set in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
      • addListener

        public void addListener​(I identifier,
                                Consumer<ca.stellardrift.permissionsex.subject.ImmutableSubjectData> listener)
        Specified by:
        addListener in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
      • type

        public ca.stellardrift.permissionsex.subject.SubjectType<Itype()
        Specified by:
        type in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
      • getAllIdentifiers

        public Stream<IgetAllIdentifiers()
        Specified by:
        getAllIdentifiers in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>
      • getDefaultIdentifier

        public ca.stellardrift.permissionsex.subject.SubjectRef<ca.stellardrift.permissionsex.subject.SubjectType<?>> getDefaultIdentifier()
        Specified by:
        getDefaultIdentifier in interface ca.stellardrift.permissionsex.subject.SubjectDataCache<I>