Search in sources :

Example 1 with FilterList

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));
}
Also used : ClassFilter(org.apache.xbean.finder.filter.ClassFilter) FilterList(org.apache.xbean.finder.filter.FilterList)

Example 2 with FilterList

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));
}
Also used : PrefixFilter(org.apache.xbean.finder.filter.PrefixFilter) FilterList(org.apache.xbean.finder.filter.FilterList)

Aggregations

FilterList (org.apache.xbean.finder.filter.FilterList)2 ClassFilter (org.apache.xbean.finder.filter.ClassFilter)1 PrefixFilter (org.apache.xbean.finder.filter.PrefixFilter)1