private static void unwrap(List<Filter> filters, Set<Filter> unwrapped) { for (Filter filter : filters) { if (filter instanceof FilterList) { FilterList filterList = (FilterList) filter; unwrap(filterList.getFilters(), unwrapped); } else { unwrapped.add(filter); } } }
private static void unwrap(List<Filter> filters, Set<Filter> unwrapped) { for (Filter filter : filters) { if (filter instanceof FilterList) { FilterList filterList = (FilterList) filter; unwrap(filterList.getFilters(), unwrapped); } else { unwrapped.add(filter); } } }
private static void unwrap(List<Filter> filters, Set<Filter> unwrapped) { for (Filter filter : filters) { if (filter instanceof FilterList) { FilterList filterList = (FilterList) filter; unwrap(filterList.getFilters(), unwrapped); } else { unwrapped.add(filter); } } }
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))) { throw new IllegalArgumentException("And only works with filter list of prefix filters"); // for optims } 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)); } }