Class DataLoaderHelper<K,​V>

  • Type Parameters:
    K - the type of keys
    V - the type of values

    class DataLoaderHelper<K,​V>
    extends java.lang.Object
    This helps break up the large DataLoader class functionality and it contains the logic to dispatch the promises on behalf of its peer dataloader
    • Field Detail

      • batchLoadFunction

        private final java.lang.Object batchLoadFunction
      • futureCache

        private final CacheMap<java.lang.Object,​V> futureCache
      • clock

        private final java.time.Clock clock
      • lastDispatchTime

        private final java.util.concurrent.atomic.AtomicReference<java.time.Instant> lastDispatchTime
      • NOT_SUPPORTED_LIST

        private final java.util.List<Try<V>> NOT_SUPPORTED_LIST
      • NOT_SUPPORTED

        private final java.util.concurrent.CompletableFuture<java.util.List<Try<V>>> NOT_SUPPORTED
      • ALWAYS_FAILED

        private final Try<V> ALWAYS_FAILED
    • Method Detail

      • now

        java.time.Instant now()
      • getLastDispatchTime

        public java.time.Instant getLastDispatchTime()
      • getIfPresent

        java.util.Optional<java.util.concurrent.CompletableFuture<V>> getIfPresent​(K key)
      • getIfCompleted

        java.util.Optional<java.util.concurrent.CompletableFuture<V>> getIfCompleted​(K key)
      • load

        java.util.concurrent.CompletableFuture<V> load​(K key,
                                                       java.lang.Object loadContext)
      • getCacheKey

        java.lang.Object getCacheKey​(K key)
      • getCacheKeyWithContext

        java.lang.Object getCacheKeyWithContext​(K key,
                                                java.lang.Object context)
      • sliceIntoBatchesOfBatches

        private java.util.concurrent.CompletableFuture<java.util.List<V>> sliceIntoBatchesOfBatches​(java.util.List<K> keys,
                                                                                                    java.util.List<java.util.concurrent.CompletableFuture<V>> queuedFutures,
                                                                                                    java.util.List<java.lang.Object> callContexts,
                                                                                                    int maxBatchSize)
      • dispatchQueueBatch

        private java.util.concurrent.CompletableFuture<java.util.List<V>> dispatchQueueBatch​(java.util.List<K> keys,
                                                                                             java.util.List<java.lang.Object> callContexts,
                                                                                             java.util.List<java.util.concurrent.CompletableFuture<V>> queuedFutures)
      • assertResultSize

        private void assertResultSize​(java.util.List<K> keys,
                                      java.util.List<V> values)
      • possiblyClearCacheEntriesOnExceptions

        private void possiblyClearCacheEntriesOnExceptions​(java.util.List<K> keys)
      • loadFromCache

        private java.util.concurrent.CompletableFuture<V> loadFromCache​(K key,
                                                                        java.lang.Object loadContext,
                                                                        boolean batchingEnabled)
      • queueOrInvokeLoader

        private java.util.concurrent.CompletableFuture<V> queueOrInvokeLoader​(K key,
                                                                              java.lang.Object loadContext,
                                                                              boolean batchingEnabled,
                                                                              boolean cachingEnabled)
      • invokeLoaderImmediately

        java.util.concurrent.CompletableFuture<V> invokeLoaderImmediately​(K key,
                                                                          java.lang.Object keyContext,
                                                                          boolean cachingEnabled)
      • invokeLoader

        java.util.concurrent.CompletableFuture<java.util.List<V>> invokeLoader​(java.util.List<K> keys,
                                                                               java.util.List<java.lang.Object> keyContexts,
                                                                               boolean cachingEnabled)
      • invokeLoader

        java.util.concurrent.CompletableFuture<java.util.List<V>> invokeLoader​(java.util.List<K> keys,
                                                                               java.util.List<java.lang.Object> keyContexts)
      • invokeListBatchLoader

        private java.util.concurrent.CompletableFuture<java.util.List<V>> invokeListBatchLoader​(java.util.List<K> keys,
                                                                                                BatchLoaderEnvironment environment)
      • invokeMapBatchLoader

        private java.util.concurrent.CompletableFuture<java.util.List<V>> invokeMapBatchLoader​(java.util.List<K> keys,
                                                                                               BatchLoaderEnvironment environment)
      • isMapLoader

        private boolean isMapLoader()
      • dispatchDepth

        int dispatchDepth()
      • getFromValueCache

        private java.util.concurrent.CompletableFuture<java.util.List<Try<V>>> getFromValueCache​(java.util.List<K> keys)
      • setToValueCache

        private java.util.concurrent.CompletableFuture<java.util.List<V>> setToValueCache​(java.util.List<V> assembledValues,
                                                                                          java.util.List<K> missedKeys,
                                                                                          java.util.List<V> missedValues)