OrSpecification.java

package es.um.atica.shared.domain.specification;

import java.util.Arrays;
import java.util.List;

public class OrSpecification<T> implements Specification<T> {

    private List<Specification<T>> specifications;

    public OrSpecification(Specification<T>... specifications) {
        this.specifications = Arrays.asList(specifications);
    }

    public boolean isSatisfied(T object) {
        return specifications.stream().filter(s->s!=null).anyMatch(s -> s.isSatisfied(object));
    }
}