Skip to content

Commit 3060a30

Browse files
committed
Added support for a delegating data loader - jspecify annotations
1 parent 17ad976 commit 3060a30

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

src/main/java/org/dataloader/DataLoader.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.dataloader.impl.CompletableFutureKit;
2222
import org.dataloader.stats.Statistics;
2323
import org.dataloader.stats.StatisticsCollector;
24+
import org.jspecify.annotations.NonNull;
2425
import org.jspecify.annotations.NullMarked;
2526
import org.jspecify.annotations.Nullable;
2627

@@ -517,8 +518,8 @@ public Optional<CompletableFuture<V>> getIfCompleted(K key) {
517518
* @param keyContext a context object that is specific to this key
518519
* @return the future of the value
519520
*/
520-
public CompletableFuture<V> load(K key, Object keyContext) {
521-
return helper.load(key, keyContext);
521+
public CompletableFuture<V> load(@NonNull K key, @Nullable Object keyContext) {
522+
return helper.load(nonNull(key), keyContext);
522523
}
523524

524525
/**

src/main/java/org/dataloader/DelegatingDataLoader.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
import org.dataloader.annotations.PublicApi;
44
import org.dataloader.stats.Statistics;
5+
import org.jspecify.annotations.NonNull;
6+
import org.jspecify.annotations.NullMarked;
7+
import org.jspecify.annotations.Nullable;
58

69
import java.time.Duration;
710
import java.time.Instant;
@@ -19,6 +22,7 @@
1922
* @param <V> type parameter indicating the type of the data that is returned
2023
*/
2124
@PublicApi
25+
@NullMarked
2226
public class DelegatingDataLoader<K, V> extends DataLoader<K, V> {
2327

2428
protected final DataLoader<K, V> delegate;
@@ -57,7 +61,7 @@ public DataLoader<K, V> getDelegate() {
5761
* @return the future of the value
5862
*/
5963
@Override
60-
public CompletableFuture<V> load(K key, Object keyContext) {
64+
public CompletableFuture<V> load(@NonNull K key, @Nullable Object keyContext) {
6165
return delegate.load(key, keyContext);
6266
}
6367

src/test/java/org/dataloader/DelegatingDataLoaderTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.dataloader;
22

33
import org.dataloader.fixtures.TestKit;
4+
import org.jspecify.annotations.NonNull;
5+
import org.jspecify.annotations.Nullable;
46
import org.junit.jupiter.api.Test;
57

68
import java.util.List;
@@ -31,7 +33,7 @@ void canCreateAClassOk() {
3133
DataLoader<String, String> rawLoader = TestKit.idLoader();
3234
DelegatingDataLoader<String, String> delegatingDataLoader = new DelegatingDataLoader<>(rawLoader) {
3335
@Override
34-
public CompletableFuture<String> load(String key, Object keyContext) {
36+
public CompletableFuture<String> load(@NonNull String key, @Nullable Object keyContext) {
3537
CompletableFuture<String> cf = super.load(key, keyContext);
3638
return cf.thenApply(v -> "|" + v + "|");
3739
}

0 commit comments

Comments
 (0)