package org.pitest.mutationtest.filter; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Properties; import org.pitest.classpath.CodeSource; import org.pitest.functional.F; import org.pitest.functional.FCollection; public class CompoundFilterFactory implements MutationFilterFactory { private final List<MutationFilterFactory> children = new ArrayList<MutationFilterFactory>(); public CompoundFilterFactory( Collection<? extends MutationFilterFactory> filters) { this.children.addAll(filters); } @Override public String description() { return null; } @Override public MutationFilter createFilter(Properties props, CodeSource source, int maxMutationsPerClass) { List<MutationFilter> filters = FCollection.map(this.children, toFilter(props, source, maxMutationsPerClass)); return new CompoundMutationFilter(filters); } private static F<MutationFilterFactory, MutationFilter> toFilter( final Properties props, final CodeSource source, final int maxMutationsPerClass) { return new F<MutationFilterFactory, MutationFilter>() { @Override public MutationFilter apply(MutationFilterFactory a) { return a.createFilter(props, source, maxMutationsPerClass); } }; } }