Class DataLoaderRegistry

  • Direct Known Subclasses:
    ScheduledDataLoaderRegistry

    @PublicApi
    public class DataLoaderRegistry
    extends java.lang.Object
    This allows data loaders to be registered together into a single place, so they can be dispatched as one. It also allows you to retrieve data loaders by name from a central place
    • Field Detail

      • dataLoaders

        protected final java.util.Map<java.lang.String,​DataLoader<?,​?>> dataLoaders
    • Constructor Detail

      • DataLoaderRegistry

        public DataLoaderRegistry()
    • Method Detail

      • register

        public DataLoaderRegistry register​(java.lang.String key,
                                           DataLoader<?,​?> dataLoader)
        This will register a new dataloader
        Parameters:
        key - the key to put the data loader under
        dataLoader - the data loader to register
        Returns:
        this registry
      • computeIfAbsent

        public <K,​V> DataLoader<K,​V> computeIfAbsent​(java.lang.String key,
                                                                 java.util.function.Function<java.lang.String,​DataLoader<?,​?>> mappingFunction)
        Computes a data loader if absent or return it if it was already registered at that key.

        Note: The entire method invocation is performed atomically, so the function is applied at most once per key.

        Type Parameters:
        K - the type of keys
        V - the type of values
        Parameters:
        key - the key of the data loader
        mappingFunction - the function to compute a data loader
        Returns:
        a data loader
      • combine

        public DataLoaderRegistry combine​(DataLoaderRegistry registry)
        This will combine all the current data loaders in this registry and all the data loaders from the specified registry and return a new combined registry
        Parameters:
        registry - the registry to combine into this registry
        Returns:
        a new combined registry
      • getDataLoaders

        public java.util.List<DataLoader<?,​?>> getDataLoaders()
        Returns:
        the currently registered data loaders
      • getDataLoadersMap

        public java.util.Map<java.lang.String,​DataLoader<?,​?>> getDataLoadersMap()
        Returns:
        the currently registered data loaders as a map
      • unregister

        public DataLoaderRegistry unregister​(java.lang.String key)
        This will unregister a new dataloader
        Parameters:
        key - the key of the data loader to unregister
        Returns:
        this registry
      • getDataLoader

        public <K,​V> DataLoader<K,​V> getDataLoader​(java.lang.String key)
        Returns the dataloader that was registered under the specified key
        Type Parameters:
        K - the type of keys
        V - the type of values
        Parameters:
        key - the key of the data loader
        Returns:
        a data loader or null if its not present
      • getKeys

        public java.util.Set<java.lang.String> getKeys()
        Returns:
        the keys of the data loaders in this registry
      • dispatchAllWithCount

        public int dispatchAllWithCount()
        Similar to dispatchAll(), this calls DataLoader.dispatch() on each of the registered DataLoaders, but returns the number of dispatches.
        Returns:
        total number of entries that were dispatched from registered DataLoaders.
      • dispatchDepth

        public int dispatchDepth()
        Returns:
        The sum of all batched key loads that need to be dispatched from all registered DataLoaders
      • getStatistics

        public Statistics getStatistics()
        Returns:
        a combined set of statistics for all data loaders in this registry presented as the sum of all their statistics