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

net.digitalid.utility.conversion.collectors.CollectionCollector Maven / Gradle / Ivy

The newest version!
package net.digitalid.utility.conversion.collectors;

import java.util.Collection;

import javax.annotation.Nonnull;

import net.digitalid.utility.annotations.generics.Specifiable;
import net.digitalid.utility.annotations.generics.Unspecifiable;
import net.digitalid.utility.annotations.method.Impure;
import net.digitalid.utility.annotations.method.Pure;
import net.digitalid.utility.annotations.ownership.Capturable;
import net.digitalid.utility.annotations.ownership.Captured;
import net.digitalid.utility.conversion.exceptions.RecoveryException;
import net.digitalid.utility.functional.failable.FailableCollector;
import net.digitalid.utility.validation.annotations.type.Mutable;

@Mutable
public class CollectionCollector<@Specifiable TYPE, @Unspecifiable COLLECTION extends Collection> implements FailableCollector {
    
    /* -------------------------------------------------- Collection -------------------------------------------------- */
    
    private final @Nonnull COLLECTION collection;
    
    /* -------------------------------------------------- Constructor -------------------------------------------------- */
    
    protected CollectionCollector(@Nonnull COLLECTION collection) {
        this.collection = collection;
    }
    
    @Pure
    public static <@Specifiable TYPE, @Unspecifiable COLLECTION extends Collection> @Nonnull CollectionCollector with(@Nonnull COLLECTION collection) {
        return new CollectionCollector<>(collection);
    }
    
    /* -------------------------------------------------- Collector -------------------------------------------------- */
    
    @Impure
    @Override
    public void consume(@Captured TYPE element) {
        collection.add(element);
    }
    
    @Pure
    @Override
    public @Capturable COLLECTION getResult() {
        return collection;
    }
    
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy