Class DataLoaderRegistry
- java.lang.Object
-
- org.dataloader.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.Notes on
DataLoaderInstrumentation
: ADataLoaderRegistry
can have an instrumentation associated with it. As eachDataLoader
is added to the registry, theDataLoaderInstrumentation
of the registry is applied to thatDataLoader
.The
DataLoader
is changed and hence the object in the registry is not the same one as was originally registered. So you MUST get access to theDataLoader
viagetDataLoader(String)
methods and not use the originalDataLoader
object.If the
DataLoader
has noDataLoaderInstrumentation
then the registry one is added to it. If it does have one already then aChainedDataLoaderInstrumentation
is created with the registryDataLoaderInstrumentation
in it first and then any otherDataLoaderInstrumentation
s added after that. If the registryDataLoaderInstrumentation
instance andDataLoader
DataLoaderInstrumentation
instance are the same object, then nothing is changed, since the same instrumentation code is being run.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
DataLoaderRegistry.Builder
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<java.lang.String,DataLoader<?,?>>
dataLoaders
protected DataLoaderInstrumentation
instrumentation
-
Constructor Summary
Constructors Modifier Constructor Description DataLoaderRegistry()
protected
DataLoaderRegistry(java.util.Map<java.lang.String,DataLoader<?,?>> dataLoaders, DataLoaderInstrumentation instrumentation)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description 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<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.void
dispatchAll()
This will be calledDataLoader.dispatch()
on each of the registeredDataLoader
sint
dispatchAllWithCount()
Similar todispatchAll()
, this callsDataLoader.dispatch()
on each of the registeredDataLoader
s, but returns the number of dispatches.int
dispatchDepth()
<K,V>
DataLoader<K,V>getDataLoader(java.lang.String key)
Returns the dataloader that was registered under the specified keyjava.util.List<DataLoader<?,?>>
getDataLoaders()
java.util.Map<java.lang.String,DataLoader<?,?>>
getDataLoadersMap()
DataLoaderInstrumentation
getInstrumentation()
java.util.Set<java.lang.String>
getKeys()
Statistics
getStatistics()
static DataLoaderRegistry.Builder
newRegistry()
DataLoaderRegistry
register(java.lang.String key, DataLoader<?,?> dataLoader)
This will register a new dataloaderDataLoaderRegistry
unregister(java.lang.String key)
This will unregister a new dataloader
-
-
-
Field Detail
-
dataLoaders
protected final java.util.Map<java.lang.String,DataLoader<?,?>> dataLoaders
-
instrumentation
protected final DataLoaderInstrumentation instrumentation
-
-
Constructor Detail
-
DataLoaderRegistry
public DataLoaderRegistry()
-
DataLoaderRegistry
protected DataLoaderRegistry(java.util.Map<java.lang.String,DataLoader<?,?>> dataLoaders, DataLoaderInstrumentation instrumentation)
-
-
Method Detail
-
getInstrumentation
public DataLoaderInstrumentation getInstrumentation()
- Returns:
- the
DataLoaderInstrumentation
associated with this registry which can be null
-
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 underdataLoader
- 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 keysV
- the type of values- Parameters:
key
- the key of the data loadermappingFunction
- 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 keysV
- 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
-
dispatchAll
public void dispatchAll()
This will be calledDataLoader.dispatch()
on each of the registeredDataLoader
s
-
dispatchAllWithCount
public int dispatchAllWithCount()
Similar todispatchAll()
, this callsDataLoader.dispatch()
on each of the registeredDataLoader
s, but returns the number of dispatches.- Returns:
- total number of entries that were dispatched from registered
DataLoader
s.
-
dispatchDepth
public int dispatchDepth()
- Returns:
- The sum of all batched key loads that need to be dispatched from all registered
DataLoader
s
-
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
-
newRegistry
public static DataLoaderRegistry.Builder newRegistry()
- Returns:
- A builder of
DataLoaderRegistry
s
-
-