package es.um.atica.shared.domain.specification; import java.util.Arrays; import java.util.List; public class AndSpecification<T> implements Specification<T> { private List<Specification<T>> specifications; public AndSpecification(Specification<T>... specifications) { this.specifications = Arrays.asList(specifications); } public boolean isSatisfied(T object) { return specifications.stream().filter(s-> s!=null).allMatch(s -> s.isSatisfied(object) ); } }