use of org.apache.xbean.finder.filter.FilterList in project geronimo-xbean by apache.
the class FiltersTest method testOptimize.
public void testOptimize() throws Exception {
ClassFilter foo = new ClassFilter("foo");
ClassFilter foo2 = new ClassFilter("foo");
ClassFilter foo3 = new ClassFilter("foo");
FilterList filter = new FilterList(new FilterList(new FilterList(new FilterList(foo, new FilterList(foo, new FilterList(new FilterList(foo, foo2, foo3)))))));
assertSame(foo, Filters.optimize(filter));
}
use of org.apache.xbean.finder.filter.FilterList in project component-runtime by Talend.
the class FilterFactory method and.
public static Filter and(final Filter first, final Filter second) {
if (Stream.of(first, second).anyMatch(f -> !FilterList.class.isInstance(f) || !FilterList.class.cast(f).getFilters().stream().allMatch(PrefixFilter.class::isInstance))) {
// for optims
throw new IllegalArgumentException("And only works with filter list of prefix filters");
}
final FilterList list1 = FilterList.class.cast(first);
final FilterList list2 = FilterList.class.cast(second);
return Filters.prefixes(Stream.of(list1.getFilters(), list2.getFilters()).flatMap(Collection::stream).map(PrefixFilter.class::cast).map(PrefixFilter::getPrefix).distinct().toArray(String[]::new));
}
Aggregations