-
Notifications
You must be signed in to change notification settings - Fork 42
/
Copy pathObjectUtils.java
73 lines (65 loc) · 2 KB
/
ObjectUtils.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package dev.openfeature.sdk.internal;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import lombok.experimental.UtilityClass;
@SuppressWarnings("checkstyle:MissingJavadocType")
@UtilityClass
public class ObjectUtils {
/**
* If the source param is null, return the default value.
* @param source maybe null object
* @param defaultValue thing to use if source is null
* @param <T> list type
* @return resulting object
*/
public static <T> List<T> defaultIfNull(List<T> source, Supplier<List<T>> defaultValue) {
if (source == null) {
return defaultValue.get();
}
return source;
}
/**
* If the source param is null, return the default value.
* @param source maybe null object
* @param defaultValue thing to use if source is null
* @param <K> map key type
* @param <V> map value type
* @return resulting map
*/
public static <K, V> Map<K, V> defaultIfNull(Map<K, V> source, Supplier<Map<K, V>> defaultValue) {
if (source == null) {
return defaultValue.get();
}
return source;
}
/**
* If the source param is null, return the default value.
* @param source maybe null object
* @param defaultValue thing to use if source is null
* @param <T> type
* @return resulting object
*/
public static <T> T defaultIfNull(T source, Supplier<T> defaultValue) {
if (source == null) {
return defaultValue.get();
}
return source;
}
/**
* Concatenate a bunch of lists.
* @param sources bunch of lists.
* @param <T> list type
* @return resulting object
*/
@SafeVarargs
public static <T> List<T> merge(List<T>... sources) {
return Arrays
.stream(sources)
.flatMap(Collection::stream)
.collect(Collectors.toList());
}
}