77import java .util .List ;
88import java .util .Map ;
99import java .util .concurrent .CompletableFuture ;
10+ import java .util .concurrent .atomic .AtomicInteger ;
1011import java .util .stream .Collectors ;
1112
1213import static java .util .Arrays .asList ;
@@ -21,10 +22,13 @@ public class DataLoaderBatchLoaderEnvironmentTest {
2122
2223 private BatchLoaderWithContext <String , String > contextBatchLoader () {
2324 return (keys , environment ) -> {
25+ AtomicInteger index = new AtomicInteger (0 );
2426 List <String > list = keys .stream ().map (k -> {
27+ int i = index .getAndIncrement ();
2528 Object context = environment .getContext ();
26- Object keyContext = environment .getKeyContexts ().get (k );
27- return k + "-" + context + "-" + keyContext ;
29+ Object keyContextM = environment .getKeyContexts ().get (k );
30+ Object keyContextL = environment .getKeyContextsList ().get (i );
31+ return k + "-" + context + "-m:" + keyContextM + "-l:" + keyContextL ;
2832 }).collect (Collectors .toList ());
2933 return CompletableFuture .completedFuture (list );
3034 };
@@ -63,7 +67,7 @@ public void key_contexts_are_passed_to_batch_loader_function() throws Exception
6367
6468 List <String > results = loader .dispatchAndJoin ();
6569
66- assertThat (results , equalTo (asList ("A-ctx-aCtx" , "B-ctx-bCtx" , "C-ctx-cCtx" , "D-ctx-dCtx" )));
70+ assertThat (results , equalTo (asList ("A-ctx-m: aCtx-l:aCtx " , "B-ctx-m: bCtx-l:bCtx " , "C-ctx-m: cCtx-l:cCtx " , "D-ctx-m:dCtx-l: dCtx" )));
6771 }
6872
6973 @ Test
@@ -81,7 +85,7 @@ public void key_contexts_are_passed_to_batch_loader_function_when_batching_disab
8185 List <String > results = new ArrayList <>(asList (aLoad .join (), bLoad .join ()));
8286 results .addAll (canDLoad .join ());
8387
84- assertThat (results , equalTo (asList ("A-ctx-aCtx" , "B-ctx-bCtx" , "C-ctx-cCtx" , "D-ctx-dCtx" )));
88+ assertThat (results , equalTo (asList ("A-ctx-m: aCtx-l:aCtx " , "B-ctx-m: bCtx-l:bCtx " , "C-ctx-m: cCtx-l:cCtx " , "D-ctx-m:dCtx-l: dCtx" )));
8589 }
8690
8791 @ Test
@@ -97,7 +101,7 @@ public void missing_key_contexts_are_passed_to_batch_loader_function() throws Ex
97101
98102 List <String > results = loader .dispatchAndJoin ();
99103
100- assertThat (results , equalTo (asList ("A-ctx-aCtx" , "B-ctx-null" , "C-ctx-cCtx" , "D-ctx-null" )));
104+ assertThat (results , equalTo (asList ("A-ctx-m: aCtx-l:aCtx " , "B-ctx-m: null-l:null " , "C-ctx-m: cCtx-l:cCtx " , "D-ctx-m:null-l: null" )));
101105 }
102106
103107 @ Test
@@ -158,4 +162,22 @@ public void null_is_passed_as_context_to_map_loader_if_you_do_nothing() throws E
158162
159163 assertThat (results , equalTo (asList ("A-null" , "B-null" , "C-null" , "D-null" )));
160164 }
165+
166+ @ Test
167+ public void mmap_semantics_apply_to_batch_loader_context () throws Exception {
168+ BatchLoaderWithContext <String , String > batchLoader = contextBatchLoader ();
169+ DataLoaderOptions options = DataLoaderOptions .newOptions ()
170+ .setBatchLoaderContextProvider (() -> "ctx" )
171+ .setCachingEnabled (false );
172+ DataLoader <String , String > loader = DataLoader .newDataLoader (batchLoader , options );
173+
174+ loader .load ("A" , "aCtx" );
175+ loader .load ("B" , "bCtx" );
176+ loader .load ("A" , "overridesCtx" );
177+
178+ List <String > results = loader .dispatchAndJoin ();
179+
180+ assertThat (results , equalTo (asList ("A-ctx-m:overridesCtx-l:aCtx" , "B-ctx-m:bCtx-l:bCtx" , "A-ctx-m:overridesCtx-l:overridesCtx" )));
181+ }
182+
161183}
0 commit comments