Search in sources :

Example 1 with NoSuchCollectorException

use of org.jdbi.v3.core.collector.NoSuchCollectorException in project jdbi by jdbi.

the class ResultBearing method collectInto.

/**
 * Collect the results into a container of the given type. A collector
 * must be registered for the container type, which knows the element type
 * for the container. A mapper must be registered for the element type.
 * <p>
 * This method is equivalent to {@code ResultBearing.mapTo(elementType).collect(containerCollector)}.
 * </p>
 *
 * @param containerType the container type into which results will be collected
 * @return a container into which result rows have been collected
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
default Object collectInto(Type containerType) {
    return scanResultSet((rs, ctx) -> {
        Collector collector = ctx.findCollectorFor(containerType).orElseThrow(() -> new NoSuchCollectorException("No collector registered for container type " + containerType));
        Type elementType = ctx.findElementTypeFor(containerType).orElseThrow(() -> new ElementTypeNotFoundException("Unknown element type for container type " + containerType));
        RowMapper<?> mapper = ctx.findMapperFor(elementType).orElseThrow(() -> new NoSuchMapperException("No mapper registered for element type " + elementType));
        return ResultIterable.of(rs, mapper, ctx).collect(collector);
    });
}
Also used : GenericType(org.jdbi.v3.core.generic.GenericType) Type(java.lang.reflect.Type) ElementTypeNotFoundException(org.jdbi.v3.core.collector.ElementTypeNotFoundException) Collector(java.util.stream.Collector) NoSuchCollectorException(org.jdbi.v3.core.collector.NoSuchCollectorException) NoSuchMapperException(org.jdbi.v3.core.mapper.NoSuchMapperException)

Aggregations

Type (java.lang.reflect.Type)1 Collector (java.util.stream.Collector)1 ElementTypeNotFoundException (org.jdbi.v3.core.collector.ElementTypeNotFoundException)1 NoSuchCollectorException (org.jdbi.v3.core.collector.NoSuchCollectorException)1 GenericType (org.jdbi.v3.core.generic.GenericType)1 NoSuchMapperException (org.jdbi.v3.core.mapper.NoSuchMapperException)1