Interface BatchLoader<K,V extends @Nullable Object>

Type Parameters:
K - type parameter indicating the type of keys to use for data load requests.
V - type parameter indicating the type of values returned
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface @PublicSpi @NullMarked public interface BatchLoader<K,V extends @Nullable Object>
A function that is invoked for batch loading a list of data values indicated by the provided list of keys. The function returns a promise of a list of results of individual load requests.

There are a few constraints that must be upheld:

  • The list of values must be the same size as the list of keys.
  • Each index in the list of values must correspond to the same index in the list of keys.

For example, if your batch function was provided the list of keys:

  [
      2, 9, 6, 1
  ]
 

and loading from a back-end service returned this list of values:

  [
      { id: 9, name: 'Chicago' },
      { id: 1, name: 'New York' },
      { id: 2, name: 'San Francisco' },
  ]
 

then the batch loader function contract has been broken.

The back-end service returned results in a different order than we requested, likely because it was more efficient for it to do so. Also, it omitted a result for key 6, which we may interpret as no value existing for that key.

To uphold the constraints of the batch function, it must return a List of values the same length as the List of keys, and re-order them to ensure each index aligns with the original keys [ 2, 9, 6, 1 ]:

  [
      { id: 2, name: 'San Francisco' },
      { id: 9, name: 'Chicago' },
      null,
      { id: 1, name: 'New York' }
 ]
 
  • Method Summary

    Modifier and Type
    Method
    Description
    load(List<K> keys)
    Called to batch load the provided keys and return a promise to a list of values.
  • Method Details

    • load

      CompletionStage<List<V>> load(List<K> keys)
      Called to batch load the provided keys and return a promise to a list of values.

      If you need calling context then implement BatchLoaderWithContext

      Parameters:
      keys - the collection of keys to load
      Returns:
      a promise of the values for those keys