package org.kie.dmn.feel.util;
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class DynamicTypeUtils {
public static <K, V> Map.Entry<K, V> entry(K key, V value) {
return new AbstractMap.SimpleEntry<>(key, value);
}
public static <K, U> Collector<Map.Entry<K, U>, ?, Map<K, U>> toMap() {
return Collectors.toMap(x -> x.getKey(), x -> x.getValue());
}
@SafeVarargs
public static <K, V> Map<K, V> mapOf(Map.Entry<K, V>... attributes) {
return prototype(attributes);
}
@SafeVarargs
public static <K, V> Map<K, V> prototype(Map.Entry<K, V>... attributes) {
// as Stream.of(attributes).collect(toMap()); might fail due to some value=null, because toMap() uses java.util.HashMap.merge(HashMap.java:1224)
// need avoid Stream API
Map<K, V> result = new HashMap<>();
for ( Entry<K, V> entry : attributes ) {
result.put(entry.getKey(), entry.getValue());
}
return result;
}
}