Skip to content

Releases: graphql-java/java-dataloader

3.0.0

06 Jul 11:37
f2457ec
Compare
Choose a tag to compare

Breaking Changes

  • the CacheMap signature has been changed to correctly reflect that it is a cache of CompletableFuture<V> and not just <V>

Other changes

  • a new ValueCache layer has been added to that allows values to be stored in external cache systems such as REDIS or long lived cross request systems like Caffeine

  • A new last dispatched time is present on DataLoaders

  • An experimental ScheduledDataLoaderRegistry that allows new ways to dispatch dataloaders.

2.2.3

25 Aug 07:18
Compare
Choose a tag to compare

This adds getIfPresent and getIfCompleted methods as well as a computeIfAbsent on DataLoaderRegistry for lazy loaders

2.2.0

23 Oct 08:19
Compare
Choose a tag to compare

This adds the ability to be passed a list of context load objects per batch key as well as a map of them

2.1.1

28 Aug 07:31
Compare
Choose a tag to compare

This adds new features into data loader to allow you to write more powerful batch loading functions

The first is returning a Map from batch loader function instead of an ordered list. This suits some use cases much more naturally

        MappedBatchLoaderWithContext<Long, User> mapBatchLoader = new MappedBatchLoaderWithContext<Long, User>() {
            @Override
            public CompletionStage<Map<Long, User>> load(Set<Long> userIds, BatchLoaderEnvironment environment) {
                SecurityCtx callCtx = environment.getContext();
                return CompletableFuture.supplyAsync(() -> userManager.loadMapOfUsersByIds(callCtx, userIds));
            }
        };

        DataLoader<Long, User> userLoader = DataLoader.newMappedDataLoader(mapBatchLoader);

        // ...

The second major change is that context can now be pushed into batch loading functions allowing you to get user credentials or database details for example

        DataLoaderOptions options = DataLoaderOptions.newOptions()
                .setBatchLoaderContextProvider(() -> SecurityCtx.getCallingUserCtx());

        BatchLoaderWithContext<String, String> batchLoader = new BatchLoaderWithContext<String, String>() {
            @Override
            public CompletionStage<List<String>> load(List<String> keys, BatchLoaderEnvironment environment) {
                SecurityCtx callCtx = environment.getContext();
                return callDatabaseForResults(callCtx, keys);
            }
        };

        DataLoader<String, String> loader = DataLoader.newDataLoader(batchLoader, options);

2.1.0

28 Aug 07:28
Compare
Choose a tag to compare

This release is borked. DO NOT USE. Use 2.1.1 instead

2.0.2

04 Dec 10:56
Compare
Choose a tag to compare
  • This fixes a bug where calling load while caching is disabled means the batch loader should get duplicate batch calls.

  • Also the synchronized code policy was changed

2.0.1

20 Sep 21:09
Compare
Choose a tag to compare
  • Adds new statistics capability so you can track what is happening inside your data loaders

2.0.0

09 Sep 14:44
Compare
Choose a tag to compare
  • #9 - add Try support
  • This changes the DataLoader registry so its a named map of loaders
  • Removed the dependency on graphql-java
  • Removed the graphql dispatching Instrumentation (since it will be moved to graphql-java)

1.0.2

01 Sep 06:22
Compare
Choose a tag to compare

#5

  • There is now graphql Instrumentation support that ensures dataloader is dispatched as a graphql query executes

1.0.1

02 Aug 11:44
Compare
Choose a tag to compare

This is the first release of the pure Java 8 port of Facebook data loader

It has no dependencies on any library to make it as lightweight as possible.

https://github.com/graphql-java/java-dataloader

Enjoy