Package org.dataloader
Class DataLoaderHelper<K,V>
- java.lang.Object
-
- org.dataloader.DataLoaderHelper<K,V>
-
- Type Parameters:
K
- the type of keysV
- 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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
DataLoaderHelper.LoaderQueueEntry<K,V>
-
Field Summary
Fields Modifier and Type Field Description private Try<V>
ALWAYS_FAILED
private java.lang.Object
batchLoadFunction
private java.time.Clock
clock
private DataLoader<K,V>
dataLoader
private CacheMap<java.lang.Object,V>
futureCache
private java.util.concurrent.atomic.AtomicReference<java.time.Instant>
lastDispatchTime
private DataLoaderOptions
loaderOptions
private java.util.List<DataLoaderHelper.LoaderQueueEntry<K,java.util.concurrent.CompletableFuture<V>>>
loaderQueue
private java.util.concurrent.CompletableFuture<java.util.List<Try<V>>>
NOT_SUPPORTED
private java.util.List<Try<V>>
NOT_SUPPORTED_LIST
private StatisticsCollector
stats
private ValueCache<K,V>
valueCache
-
Constructor Summary
Constructors Constructor Description DataLoaderHelper(DataLoader<K,V> dataLoader, java.lang.Object batchLoadFunction, DataLoaderOptions loaderOptions, CacheMap<java.lang.Object,V> futureCache, ValueCache<K,V> valueCache, StatisticsCollector stats, java.time.Clock clock)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
assertResultSize(java.util.List<K> keys, java.util.List<V> values)
(package private) DispatchResult<V>
dispatch()
(package private) int
dispatchDepth()
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)
(package private) java.lang.Object
getCacheKey(K key)
(package private) java.lang.Object
getCacheKeyWithContext(K key, java.lang.Object context)
private java.util.concurrent.CompletableFuture<java.util.List<Try<V>>>
getFromValueCache(java.util.List<K> keys)
(package private) java.util.Optional<java.util.concurrent.CompletableFuture<V>>
getIfCompleted(K key)
(package private) java.util.Optional<java.util.concurrent.CompletableFuture<V>>
getIfPresent(K key)
java.time.Instant
getLastDispatchTime()
private java.util.concurrent.CompletableFuture<java.util.List<V>>
invokeListBatchLoader(java.util.List<K> keys, BatchLoaderEnvironment environment)
(package private) java.util.concurrent.CompletableFuture<java.util.List<V>>
invokeLoader(java.util.List<K> keys, java.util.List<java.lang.Object> keyContexts)
(package private) java.util.concurrent.CompletableFuture<java.util.List<V>>
invokeLoader(java.util.List<K> keys, java.util.List<java.lang.Object> keyContexts, boolean cachingEnabled)
(package private) java.util.concurrent.CompletableFuture<V>
invokeLoaderImmediately(K key, java.lang.Object keyContext, boolean cachingEnabled)
private java.util.concurrent.CompletableFuture<java.util.List<V>>
invokeMapBatchLoader(java.util.List<K> keys, BatchLoaderEnvironment environment)
private boolean
isMapLoader()
(package private) java.util.concurrent.CompletableFuture<V>
load(K key, java.lang.Object loadContext)
private java.util.concurrent.CompletableFuture<V>
loadFromCache(K key, java.lang.Object loadContext, boolean batchingEnabled)
(package private) java.time.Instant
now()
private void
possiblyClearCacheEntriesOnExceptions(java.util.List<K> keys)
private java.util.concurrent.CompletableFuture<V>
queueOrInvokeLoader(K key, java.lang.Object loadContext, boolean batchingEnabled, boolean cachingEnabled)
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)
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)
-
-
-
Field Detail
-
dataLoader
private final DataLoader<K,V> dataLoader
-
batchLoadFunction
private final java.lang.Object batchLoadFunction
-
loaderOptions
private final DataLoaderOptions loaderOptions
-
valueCache
private final ValueCache<K,V> valueCache
-
loaderQueue
private final java.util.List<DataLoaderHelper.LoaderQueueEntry<K,java.util.concurrent.CompletableFuture<V>>> loaderQueue
-
stats
private final StatisticsCollector stats
-
clock
private final java.time.Clock clock
-
lastDispatchTime
private final java.util.concurrent.atomic.AtomicReference<java.time.Instant> lastDispatchTime
-
NOT_SUPPORTED
private final java.util.concurrent.CompletableFuture<java.util.List<Try<V>>> NOT_SUPPORTED
-
-
Constructor Detail
-
DataLoaderHelper
DataLoaderHelper(DataLoader<K,V> dataLoader, java.lang.Object batchLoadFunction, DataLoaderOptions loaderOptions, CacheMap<java.lang.Object,V> futureCache, ValueCache<K,V> valueCache, StatisticsCollector stats, java.time.Clock clock)
-
-
Method Detail
-
now
java.time.Instant now()
-
getLastDispatchTime
public java.time.Instant getLastDispatchTime()
-
getCacheKey
java.lang.Object getCacheKey(K key)
-
getCacheKeyWithContext
java.lang.Object getCacheKeyWithContext(K key, java.lang.Object context)
-
dispatch
DispatchResult<V> dispatch()
-
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)
-
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)
-
-