package ru.semiot.platform.apigateway.utils; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class MapBuilder { private final Map<String, Object> map; private MapBuilder() { this.map = new HashMap<>(); } public static MapBuilder newMap() { return new MapBuilder(); } public MapBuilder put(String key, Object... values) { if (map.containsKey(key)) { Object o = map.get(key); if (o instanceof List) { List<Object> vs = (List<Object>) o; vs.addAll(Arrays.asList(values)); map.put(key, vs); } else { List<Object> vs = new ArrayList<>(); vs.add(o); vs.addAll(Arrays.asList(values)); map.put(key, vs); } } else { if (values.length > 1) { map.put(key, Arrays.asList(values)); } if (values.length == 1) { map.put(key, values[0]); } } return this; } public Map<String, Object> build() { return map; } }