Skip to content

Commit 02a485d

Browse files
committed
Breaking change - adds a name to a DataLoader and deprecates a bunch of factory methods
1 parent 6537795 commit 02a485d

File tree

7 files changed

+432
-337
lines changed

7 files changed

+432
-337
lines changed

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

+13-308
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
* <p>
5959
* A call to the batch loader might result in individual exception failures for item with the returned list. if
6060
* you want to capture these specific item failures then use {@link org.dataloader.Try} as a return value and
61-
* create the data loader with {@link #newDataLoaderWithTry(BatchLoader)} form. The Try values will be interpreted
61+
* create the data loader with {@link DataLoaderFactory#newDataLoaderWithTry(BatchLoader)} form. The Try values will be interpreted
6262
* as either success values or cause the {@link #load(Object)} promise to complete exceptionally.
6363
*
6464
* @param <K> type parameter indicating the type of the data load keys
@@ -70,331 +70,29 @@
7070
@NullMarked
7171
public class DataLoader<K, V> {
7272

73+
private final @Nullable String name;
7374
private final DataLoaderHelper<K, V> helper;
7475
private final StatisticsCollector stats;
7576
private final CacheMap<Object, V> futureCache;
7677
private final ValueCache<K, V> valueCache;
7778
private final DataLoaderOptions options;
7879
private final Object batchLoadFunction;
7980

80-
/**
81-
* Creates new DataLoader with the specified batch loader function and default options
82-
* (batching, caching and unlimited batch size).
83-
*
84-
* @param batchLoadFunction the batch load function to use
85-
* @param <K> the key type
86-
* @param <V> the value type
87-
* @return a new DataLoader
88-
* @deprecated use {@link DataLoaderFactory} instead
89-
*/
90-
@Deprecated
91-
public static <K, V> DataLoader<K, V> newDataLoader(BatchLoader<K, V> batchLoadFunction) {
92-
return newDataLoader(batchLoadFunction, null);
93-
}
94-
95-
/**
96-
* Creates new DataLoader with the specified batch loader function with the provided options
97-
*
98-
* @param batchLoadFunction the batch load function to use
99-
* @param options the options to use
100-
* @param <K> the key type
101-
* @param <V> the value type
102-
* @return a new DataLoader
103-
* @deprecated use {@link DataLoaderFactory} instead
104-
*/
105-
@Deprecated
106-
public static <K, V> DataLoader<K, V> newDataLoader(BatchLoader<K, V> batchLoadFunction, @Nullable DataLoaderOptions options) {
107-
return DataLoaderFactory.mkDataLoader(batchLoadFunction, options);
108-
}
109-
110-
/**
111-
* Creates new DataLoader with the specified batch loader function and default options
112-
* (batching, caching and unlimited batch size) where the batch loader function returns a list of
113-
* {@link org.dataloader.Try} objects.
114-
* <p>
115-
* If it's important you to know the exact status of each item in a batch call and whether it threw exceptions then
116-
* you can use this form to create the data loader.
117-
* <p>
118-
* Using Try objects allows you to capture a value returned or an exception that might
119-
* have occurred trying to get a value. .
120-
*
121-
* @param batchLoadFunction the batch load function to use that uses {@link org.dataloader.Try} objects
122-
* @param <K> the key type
123-
* @param <V> the value type
124-
* @return a new DataLoader
125-
* @deprecated use {@link DataLoaderFactory} instead
126-
*/
127-
@Deprecated
128-
public static <K, V> DataLoader<K, V> newDataLoaderWithTry(BatchLoader<K, Try<V>> batchLoadFunction) {
129-
return newDataLoaderWithTry(batchLoadFunction, null);
130-
}
131-
132-
/**
133-
* Creates new DataLoader with the specified batch loader function and with the provided options
134-
* where the batch loader function returns a list of
135-
* {@link org.dataloader.Try} objects.
136-
*
137-
* @param batchLoadFunction the batch load function to use that uses {@link org.dataloader.Try} objects
138-
* @param options the options to use
139-
* @param <K> the key type
140-
* @param <V> the value type
141-
* @return a new DataLoader
142-
* @see DataLoaderFactory#newDataLoaderWithTry(BatchLoader)
143-
* @deprecated use {@link DataLoaderFactory} instead
144-
*/
145-
@Deprecated
146-
public static <K, V> DataLoader<K, V> newDataLoaderWithTry(BatchLoader<K, Try<V>> batchLoadFunction, @Nullable DataLoaderOptions options) {
147-
return DataLoaderFactory.mkDataLoader(batchLoadFunction, options);
148-
}
149-
150-
/**
151-
* Creates new DataLoader with the specified batch loader function and default options
152-
* (batching, caching and unlimited batch size).
153-
*
154-
* @param batchLoadFunction the batch load function to use
155-
* @param <K> the key type
156-
* @param <V> the value type
157-
* @return a new DataLoader
158-
* @deprecated use {@link DataLoaderFactory} instead
159-
*/
160-
@Deprecated
161-
public static <K, V> DataLoader<K, V> newDataLoader(BatchLoaderWithContext<K, V> batchLoadFunction) {
162-
return newDataLoader(batchLoadFunction, null);
163-
}
164-
165-
/**
166-
* Creates new DataLoader with the specified batch loader function with the provided options
167-
*
168-
* @param batchLoadFunction the batch load function to use
169-
* @param options the options to use
170-
* @param <K> the key type
171-
* @param <V> the value type
172-
* @return a new DataLoader
173-
* @deprecated use {@link DataLoaderFactory} instead
174-
*/
175-
@Deprecated
176-
public static <K, V> DataLoader<K, V> newDataLoader(BatchLoaderWithContext<K, V> batchLoadFunction, @Nullable DataLoaderOptions options) {
177-
return DataLoaderFactory.mkDataLoader(batchLoadFunction, options);
178-
}
179-
180-
/**
181-
* Creates new DataLoader with the specified batch loader function and default options
182-
* (batching, caching and unlimited batch size) where the batch loader function returns a list of
183-
* {@link org.dataloader.Try} objects.
184-
* <p>
185-
* If it's important you to know the exact status of each item in a batch call and whether it threw exceptions then
186-
* you can use this form to create the data loader.
187-
* <p>
188-
* Using Try objects allows you to capture a value returned or an exception that might
189-
* have occurred trying to get a value. .
190-
*
191-
* @param batchLoadFunction the batch load function to use that uses {@link org.dataloader.Try} objects
192-
* @param <K> the key type
193-
* @param <V> the value type
194-
* @return a new DataLoader
195-
* @deprecated use {@link DataLoaderFactory} instead
196-
*/
197-
@Deprecated
198-
public static <K, V> DataLoader<K, V> newDataLoaderWithTry(BatchLoaderWithContext<K, Try<V>> batchLoadFunction) {
199-
return newDataLoaderWithTry(batchLoadFunction, null);
200-
}
201-
202-
/**
203-
* Creates new DataLoader with the specified batch loader function and with the provided options
204-
* where the batch loader function returns a list of
205-
* {@link org.dataloader.Try} objects.
206-
*
207-
* @param batchLoadFunction the batch load function to use that uses {@link org.dataloader.Try} objects
208-
* @param options the options to use
209-
* @param <K> the key type
210-
* @param <V> the value type
211-
* @return a new DataLoader
212-
* @see DataLoaderFactory#newDataLoaderWithTry(BatchLoader)
213-
* @deprecated use {@link DataLoaderFactory} instead
214-
*/
215-
@Deprecated
216-
public static <K, V> DataLoader<K, V> newDataLoaderWithTry(BatchLoaderWithContext<K, Try<V>> batchLoadFunction, @Nullable DataLoaderOptions options) {
217-
return DataLoaderFactory.mkDataLoader(batchLoadFunction, options);
218-
}
219-
220-
/**
221-
* Creates new DataLoader with the specified batch loader function and default options
222-
* (batching, caching and unlimited batch size).
223-
*
224-
* @param batchLoadFunction the batch load function to use
225-
* @param <K> the key type
226-
* @param <V> the value type
227-
* @return a new DataLoader
228-
* @deprecated use {@link DataLoaderFactory} instead
229-
*/
230-
@Deprecated
231-
public static <K, V> DataLoader<K, V> newMappedDataLoader(MappedBatchLoader<K, V> batchLoadFunction) {
232-
return newMappedDataLoader(batchLoadFunction, null);
233-
}
234-
235-
/**
236-
* Creates new DataLoader with the specified batch loader function with the provided options
237-
*
238-
* @param batchLoadFunction the batch load function to use
239-
* @param options the options to use
240-
* @param <K> the key type
241-
* @param <V> the value type
242-
* @return a new DataLoader
243-
* @deprecated use {@link DataLoaderFactory} instead
244-
*/
245-
@Deprecated
246-
public static <K, V> DataLoader<K, V> newMappedDataLoader(MappedBatchLoader<K, V> batchLoadFunction, @Nullable DataLoaderOptions options) {
247-
return DataLoaderFactory.mkDataLoader(batchLoadFunction, options);
248-
}
249-
250-
/**
251-
* Creates new DataLoader with the specified batch loader function and default options
252-
* (batching, caching and unlimited batch size) where the batch loader function returns a list of
253-
* {@link org.dataloader.Try} objects.
254-
* <p>
255-
* If it's important you to know the exact status of each item in a batch call and whether it threw exceptions then
256-
* you can use this form to create the data loader.
257-
* <p>
258-
* Using Try objects allows you to capture a value returned or an exception that might
259-
* have occurred trying to get a value. .
260-
* <p>
261-
*
262-
* @param batchLoadFunction the batch load function to use that uses {@link org.dataloader.Try} objects
263-
* @param <K> the key type
264-
* @param <V> the value type
265-
* @return a new DataLoader
266-
* @deprecated use {@link DataLoaderFactory} instead
267-
*/
268-
@Deprecated
269-
public static <K, V> DataLoader<K, V> newMappedDataLoaderWithTry(MappedBatchLoader<K, Try<V>> batchLoadFunction) {
270-
return newMappedDataLoaderWithTry(batchLoadFunction, null);
271-
}
272-
273-
/**
274-
* Creates new DataLoader with the specified batch loader function and with the provided options
275-
* where the batch loader function returns a list of
276-
* {@link org.dataloader.Try} objects.
277-
*
278-
* @param batchLoadFunction the batch load function to use that uses {@link org.dataloader.Try} objects
279-
* @param options the options to use
280-
* @param <K> the key type
281-
* @param <V> the value type
282-
* @return a new DataLoader
283-
* @see DataLoaderFactory#newDataLoaderWithTry(BatchLoader)
284-
* @deprecated use {@link DataLoaderFactory} instead
285-
*/
286-
@Deprecated
287-
public static <K, V> DataLoader<K, V> newMappedDataLoaderWithTry(MappedBatchLoader<K, Try<V>> batchLoadFunction, @Nullable DataLoaderOptions options) {
288-
return DataLoaderFactory.mkDataLoader(batchLoadFunction, options);
289-
}
290-
291-
/**
292-
* Creates new DataLoader with the specified mapped batch loader function and default options
293-
* (batching, caching and unlimited batch size).
294-
*
295-
* @param batchLoadFunction the batch load function to use
296-
* @param <K> the key type
297-
* @param <V> the value type
298-
* @return a new DataLoader
299-
* @deprecated use {@link DataLoaderFactory} instead
300-
*/
301-
@Deprecated
302-
public static <K, V> DataLoader<K, V> newMappedDataLoader(MappedBatchLoaderWithContext<K, V> batchLoadFunction) {
303-
return newMappedDataLoader(batchLoadFunction, null);
304-
}
305-
306-
/**
307-
* Creates new DataLoader with the specified batch loader function with the provided options
308-
*
309-
* @param batchLoadFunction the batch load function to use
310-
* @param options the options to use
311-
* @param <K> the key type
312-
* @param <V> the value type
313-
* @return a new DataLoader
314-
* @deprecated use {@link DataLoaderFactory} instead
315-
*/
316-
@Deprecated
317-
public static <K, V> DataLoader<K, V> newMappedDataLoader(MappedBatchLoaderWithContext<K, V> batchLoadFunction, @Nullable DataLoaderOptions options) {
318-
return DataLoaderFactory.mkDataLoader(batchLoadFunction, options);
319-
}
320-
321-
/**
322-
* Creates new DataLoader with the specified batch loader function and default options
323-
* (batching, caching and unlimited batch size) where the batch loader function returns a list of
324-
* {@link org.dataloader.Try} objects.
325-
* <p>
326-
* If it's important you to know the exact status of each item in a batch call and whether it threw exceptions then
327-
* you can use this form to create the data loader.
328-
* <p>
329-
* Using Try objects allows you to capture a value returned or an exception that might
330-
* have occurred trying to get a value. .
331-
*
332-
* @param batchLoadFunction the batch load function to use that uses {@link org.dataloader.Try} objects
333-
* @param <K> the key type
334-
* @param <V> the value type
335-
* @return a new DataLoader
336-
* @deprecated use {@link DataLoaderFactory} instead
337-
*/
338-
@Deprecated
339-
public static <K, V> DataLoader<K, V> newMappedDataLoaderWithTry(MappedBatchLoaderWithContext<K, Try<V>> batchLoadFunction) {
340-
return newMappedDataLoaderWithTry(batchLoadFunction, null);
341-
}
342-
343-
/**
344-
* Creates new DataLoader with the specified batch loader function and with the provided options
345-
* where the batch loader function returns a list of
346-
* {@link org.dataloader.Try} objects.
347-
*
348-
* @param batchLoadFunction the batch load function to use that uses {@link org.dataloader.Try} objects
349-
* @param options the options to use
350-
* @param <K> the key type
351-
* @param <V> the value type
352-
* @return a new DataLoader
353-
* @see DataLoaderFactory#newDataLoaderWithTry(BatchLoader)
354-
* @deprecated use {@link DataLoaderFactory} instead
355-
*/
356-
@Deprecated
357-
public static <K, V> DataLoader<K, V> newMappedDataLoaderWithTry(MappedBatchLoaderWithContext<K, Try<V>> batchLoadFunction, @Nullable DataLoaderOptions options) {
358-
return DataLoaderFactory.mkDataLoader(batchLoadFunction, options);
359-
}
360-
361-
/**
362-
* Creates a new data loader with the provided batch load function, and default options.
363-
*
364-
* @param batchLoadFunction the batch load function to use
365-
* @deprecated use {@link DataLoaderFactory} instead
366-
*/
367-
@Deprecated
368-
public DataLoader(BatchLoader<K, V> batchLoadFunction) {
369-
this((Object) batchLoadFunction, null);
370-
}
371-
372-
/**
373-
* Creates a new data loader with the provided batch load function and options.
374-
*
375-
* @param batchLoadFunction the batch load function to use
376-
* @param options the batch load options
377-
* @deprecated use {@link DataLoaderFactory} instead
378-
*/
379-
@Deprecated
380-
public DataLoader(BatchLoader<K, V> batchLoadFunction, @Nullable DataLoaderOptions options) {
381-
this((Object) batchLoadFunction, options);
382-
}
383-
38481
@VisibleForTesting
385-
DataLoader(Object batchLoadFunction, @Nullable DataLoaderOptions options) {
386-
this(batchLoadFunction, options, Clock.systemUTC());
82+
DataLoader(@Nullable String name, Object batchLoadFunction, @Nullable DataLoaderOptions options) {
83+
this(name, batchLoadFunction, options, Clock.systemUTC());
38784
}
38885

38986
@VisibleForTesting
390-
DataLoader(Object batchLoadFunction, @Nullable DataLoaderOptions options, Clock clock) {
87+
DataLoader(@Nullable String name, Object batchLoadFunction, @Nullable DataLoaderOptions options, Clock clock) {
39188
DataLoaderOptions loaderOptions = options == null ? new DataLoaderOptions() : options;
39289
this.futureCache = determineFutureCache(loaderOptions);
39390
this.valueCache = determineValueCache(loaderOptions);
39491
// order of keys matter in data loader
39592
this.stats = nonNull(loaderOptions.getStatisticsCollector());
39693
this.batchLoadFunction = nonNull(batchLoadFunction);
39794
this.options = loaderOptions;
95+
this.name = name;
39896

39997
this.helper = new DataLoaderHelper<>(this, batchLoadFunction, loaderOptions, this.futureCache, this.valueCache, this.stats, clock);
40098
}
@@ -410,6 +108,13 @@ private ValueCache<K, V> determineValueCache(DataLoaderOptions loaderOptions) {
410108
return (ValueCache<K, V>) loaderOptions.valueCache().orElseGet(ValueCache::defaultValueCache);
411109
}
412110

111+
/**
112+
* @return the name of the DataLoader which can be null
113+
*/
114+
public @Nullable String getName() {
115+
return name;
116+
}
117+
413118
/**
414119
* @return the options used to build this {@link DataLoader}
415120
*/

0 commit comments

Comments
 (0)