Skip to content

Commit 893bb0d

Browse files
committed
Fixed a bug that the Spring team found
1 parent 4ec5fe8 commit 893bb0d

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

src/main/java/org/dataloader/DataLoaderOptions.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ public static DataLoaderOptions.Builder newDataLoaderOptions(DataLoaderOptions o
139139
* @return a new {@link DataLoaderOptions} object
140140
*/
141141
public DataLoaderOptions transform(Consumer<Builder> builderConsumer) {
142-
Builder builder = newOptionsBuilder();
142+
Builder builder = newDataLoaderOptions(this);
143143
builderConsumer.accept(builder);
144144
return builder.build();
145145
}

src/test/java/org/dataloader/DataLoaderOptionsTest.java

+37
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import org.dataloader.impl.DefaultCacheMap;
44
import org.dataloader.impl.NoOpValueCache;
5+
import org.dataloader.instrumentation.DataLoaderInstrumentation;
56
import org.dataloader.scheduler.BatchLoaderScheduler;
67
import org.dataloader.stats.NoOpStatisticsCollector;
78
import org.dataloader.stats.StatisticsCollector;
9+
import org.hamcrest.CoreMatchers;
810
import org.junit.jupiter.api.Test;
911

1012
import java.util.List;
@@ -184,4 +186,39 @@ void canBuildViaBuilderOk() {
184186
assertThat(builtOptions.getStatisticsCollector(),
185187
equalTo(testStatisticsCollectorSupplier.get()));
186188
}
189+
190+
@Test
191+
void canCopyExistingOptionValuesOnTransform() {
192+
193+
DataLoaderInstrumentation instrumentation1 = new DataLoaderInstrumentation() {
194+
};
195+
BatchLoaderContextProvider contextProvider1 = () -> null;
196+
197+
DataLoaderOptions startingOptions = DataLoaderOptions.newOptionsBuilder().setBatchingEnabled(false)
198+
.setCachingEnabled(false)
199+
.setInstrumentation(instrumentation1)
200+
.setBatchLoaderContextProvider(contextProvider1)
201+
.build();
202+
203+
assertThat(startingOptions.batchingEnabled(), equalTo(false));
204+
assertThat(startingOptions.cachingEnabled(), equalTo(false));
205+
assertThat(startingOptions.getInstrumentation(), equalTo(instrumentation1));
206+
assertThat(startingOptions.getBatchLoaderContextProvider(), equalTo(contextProvider1));
207+
208+
DataLoaderOptions newOptions = startingOptions.transform(builder -> builder.setBatchingEnabled(true));
209+
210+
211+
// immutable
212+
assertThat(newOptions, CoreMatchers.not(startingOptions));
213+
assertThat(startingOptions.batchingEnabled(), equalTo(false));
214+
assertThat(startingOptions.cachingEnabled(), equalTo(false));
215+
assertThat(startingOptions.getInstrumentation(), equalTo(instrumentation1));
216+
assertThat(startingOptions.getBatchLoaderContextProvider(), equalTo(contextProvider1));
217+
218+
// copied values
219+
assertThat(newOptions.batchingEnabled(), equalTo(true));
220+
assertThat(newOptions.cachingEnabled(), equalTo(false));
221+
assertThat(newOptions.getInstrumentation(), equalTo(instrumentation1));
222+
assertThat(newOptions.getBatchLoaderContextProvider(), equalTo(contextProvider1));
223+
}
187224
}

0 commit comments

Comments
 (0)