Skip to content

Commit 157678f

Browse files
committed
cache key with context
1 parent 1ab3210 commit 157678f

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

src/main/java/org/dataloader/CacheKey.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,8 @@ public interface CacheKey<K> {
3535
* @return the cache key
3636
*/
3737
Object getKey(K input);
38+
39+
default Object getKeyWithContext(K input, Object context) {
40+
return getKey(input);
41+
}
3842
}

src/main/java/org/dataloader/DataLoaderHelper.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,14 @@ CompletableFuture<V> load(K key, Object loadContext) {
104104
boolean batchingEnabled = loaderOptions.batchingEnabled();
105105
boolean cachingEnabled = loaderOptions.cachingEnabled();
106106

107-
Object cacheKey = cachingEnabled ? getCacheKey(nonNull(key)) : null;
107+
Object cacheKey = null;
108+
if (cachingEnabled) {
109+
if (loadContext == null) {
110+
cacheKey = getCacheKey(key);
111+
} else {
112+
cacheKey = getCacheKeyWithContext(key, loadContext);
113+
}
114+
}
108115
stats.incrementLoadCount();
109116

110117
if (cachingEnabled) {
@@ -135,6 +142,12 @@ Object getCacheKey(K key) {
135142
loaderOptions.cacheKeyFunction().get().getKey(key) : key;
136143
}
137144

145+
@SuppressWarnings("unchecked")
146+
Object getCacheKeyWithContext(K key, Object context) {
147+
return loaderOptions.cacheKeyFunction().isPresent() ?
148+
loaderOptions.cacheKeyFunction().get().getKeyWithContext(key, context): key;
149+
}
150+
138151
DispatchResult<V> dispatch() {
139152
boolean batchingEnabled = loaderOptions.batchingEnabled();
140153
//

0 commit comments

Comments
 (0)