package com.airhacks.ping.control;
import java.util.Map;
import java.util.stream.Collector;
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
/**
*
* @author airhacks.com
*/
public interface JsonCollectors {
public static <T> Collector<Map.Entry<T, T>, ?, JsonObjectBuilder> toJsonBuilder() {
return Collector.of(Json::createObjectBuilder, (t, u) -> {
t.add(String.valueOf(String.valueOf(u.getKey())), String.valueOf(u.getValue()));
}, JsonCollectors::merge);
}
static JsonObjectBuilder merge(JsonObjectBuilder left, JsonObjectBuilder right) {
JsonObjectBuilder retVal = Json.createObjectBuilder();
JsonObject leftObject = left.build();
JsonObject rightObject = right.build();
leftObject.keySet().stream().forEach((key) -> retVal.add(key, leftObject.get(key)));
rightObject.keySet().stream().forEach((key) -> retVal.add(key, rightObject.get(key)));
return retVal;
}
}