All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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