JarEntryValidator.java

package org.ferris.riviera.console.jar;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import org.apache.log4j.Logger;
import static org.ferris.riviera.console.jar.JarEntryValidationEvent.VALIDATE;
import javax.annotation.Priority;

/**
 *
 * @author Michael Remijan mjremijan@yahoo.com @mjremijan
 */
@Singleton
public class JarEntryValidator {

    @Inject
    protected Logger log;

    protected Validator validator;

    public JarEntryValidator() {
        validator = Validation.buildDefaultValidatorFactory().getValidator();
    }

    protected void filterJarEntries(
        @Observes @Priority(VALIDATE) JarEntryValidationEvent event
    ) {
        log.info("ENTER");
        List<JarEntry> entries
            = event.getJarEntries();

        Map<JarEntry, Set<ConstraintViolation<JarEntry>>>
            problems = entries.stream()
                .collect(Collectors.toMap(j -> j, j -> validator.validate(j)))
                .entrySet().stream()
                .filter(es -> !es.getValue().isEmpty())
                .collect(Collectors.toMap(es -> es.getKey(), es -> es.getValue()))
        ;

        event.setJarEntryConstraintViolations(problems);
    }
}