Example usage for org.apache.commons.collections4 IterableUtils matchesAll

List of usage examples for org.apache.commons.collections4 IterableUtils matchesAll

Introduction

In this page you can find the example usage for org.apache.commons.collections4 IterableUtils matchesAll.

Prototype

public static <E> boolean matchesAll(final Iterable<E> iterable, final Predicate<? super E> predicate) 

Source Link

Document

Answers true if a predicate is true for every element of an iterable.

Usage

From source file:org.apache.syncope.core.persistence.jpa.validation.entity.ExternalResourceValidator.java

@Override
public boolean isValid(final ExternalResource resource, final ConstraintValidatorContext context) {
    context.disableDefaultConstraintViolation();

    if (resource.getKey() == null || !KEY_PATTERN.matcher(resource.getKey()).matches()) {
        context.buildConstraintViolationWithTemplate(
                getTemplate(EntityViolationType.InvalidKey, "Invalid resource key")).addPropertyNode("key")
                .addConstraintViolation();
        return false;
    }/*from  w  ww . jav a2s  .c om*/

    if (!resource.getPropagationActionsClassNames().isEmpty()) {
        for (String className : resource.getPropagationActionsClassNames()) {
            Class<?> actionsClass = null;
            boolean isAssignable = false;
            try {
                actionsClass = Class.forName(className);
                isAssignable = PropagationActions.class.isAssignableFrom(actionsClass);
            } catch (Exception e) {
                LOG.error("Invalid PropagationActions specified: {}", className, e);
            }

            if (actionsClass == null || !isAssignable) {
                context.buildConstraintViolationWithTemplate(
                        getTemplate(EntityViolationType.InvalidResource, "Invalid actions class name"))
                        .addPropertyNode("actionsClassName").addConstraintViolation();
                return false;
            }
        }
    }

    final Set<AnyType> anyTypes = new HashSet<>();
    final Set<String> objectClasses = new HashSet<>();
    boolean validMappings = IterableUtils.matchesAll(resource.getProvisions(), new Predicate<Provision>() {

        @Override
        public boolean evaluate(final Provision provision) {
            anyTypes.add(provision.getAnyType());
            if (provision.getObjectClass() != null) {
                objectClasses.add(provision.getObjectClass().getObjectClassValue());
            }
            return isValid(provision.getMapping(), context);
        }
    });

    if (anyTypes.size() < resource.getProvisions().size()) {
        context.buildConstraintViolationWithTemplate(getTemplate(EntityViolationType.InvalidResource,
                "Each provision requires a different " + AnyType.class.getSimpleName()))
                .addPropertyNode("provisions").addConstraintViolation();
        return false;
    }
    if (objectClasses.size() < resource.getProvisions().size()) {
        context.buildConstraintViolationWithTemplate(getTemplate(EntityViolationType.InvalidResource,
                "Each provision requires a different" + ObjectClass.class.getSimpleName()))
                .addPropertyNode("provisions").addConstraintViolation();
        return false;
    }

    return validMappings;
}