Class DefaultDynamicBackingStore<I,T>

java.lang.Object
net.shibboleth.oidc.metadata.impl.AbstractBackingStore<I,T>
net.shibboleth.oidc.metadata.impl.DefaultDynamicBackingStore<I,T>
Type Parameters:
I - the metadata identifier type.
T - the metadata type.
All Implemented Interfaces:
BackingStore<I,T>, DynamicBackingStore<I,T>

@ThreadSafe public class DefaultDynamicBackingStore<I,T> extends AbstractBackingStore<I,T> implements DynamicBackingStore<I,T>
Default implementation of a DynamicBackingStore.
  • Field Details

  • Constructor Details

    • DefaultDynamicBackingStore

      public DefaultDynamicBackingStore()
      Constructor.
  • Method Details

    • computeManagementDataIfAbsent

      @Nonnull public MetadataManagementData<I> computeManagementDataIfAbsent(@Nonnull I identifier, @Nonnull Function<I,MetadataManagementData<I>> mappingFunction)
      Get the management data for the specified identifier. If the management data does not exist it should be created using the supplied mapping function.

      Management data facilitates per-entity metadata locking and cache primitives e.g. next refresh time.

      Should do so in a thread-safe way e.g. if two threads enter this method, only one should be allowed to create management data for the same identifier.

      Specified by:
      computeManagementDataIfAbsent in interface DynamicBackingStore<I,T>
      Parameters:
      identifier - the identifier of the entity to find management data about
      mappingFunction - the function used to create a new MetadataManagementData instance if none exist.
      Returns:
      a new or previously cache metadata management data.
    • getManagementData

      @Nullable public MetadataManagementData<I> getManagementData(@Nonnull I identifier)
      Get the management data for the specified identifier. If the management data does not exist, null is returned.
      Specified by:
      getManagementData in interface DynamicBackingStore<I,T>
      Parameters:
      identifier - the identifier of the entity to find management data about
      Returns:
      the corresponding management data, or null if not found.
    • removeManagementData

      public void removeManagementData(@Nonnull I identifier)
      Remove the management data for the specified entityID.
      Specified by:
      removeManagementData in interface DynamicBackingStore<I,T>
      Parameters:
      identifier - the input identifier
    • getManagementDataIdentifiers

      @Nonnull @NonnullElements @Unmodifiable @NotLive public Set<I> getManagementDataIdentifiers()
      Get the set of entityIDs which currently have management data.
      Specified by:
      getManagementDataIdentifiers in interface DynamicBackingStore<I,T>
      Returns:
      set of entityIDs, may be empty