
com.nhl.link.rest.parser.converter.CollectionConverter Maven / Gradle / Ivy
package com.nhl.link.rest.parser.converter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import java.util.Collection;
import java.util.function.Supplier;
public class CollectionConverter, E> extends AbstractConverter {
private final Supplier containerSupplier;
private final JsonValueConverter elementConverter;
public CollectionConverter(Supplier containerSupplier,
JsonValueConverter elementConverter) {
this.containerSupplier = containerSupplier;
this.elementConverter = elementConverter;
}
@Override
public T valueNonNull(JsonNode node) {
if (!node.isArray()) {
throw new IllegalArgumentException("Node is not an array: " + node.getNodeType().name());
}
T container = containerSupplier.get();
ArrayNode array = (ArrayNode) node;
array.forEach(child -> container.add(elementConverter.value(child)));
return container;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy