Filters { public static Filter and( org.opengis.filter.FilterFactory ff, Filter filter1, Filter filter2 ){ ArrayList<Filter> list = new ArrayList<Filter>(2); if( filter1 == null ){ } else if( filter1 instanceof And){ And some = (And) filter1; list.addAll( some.getChildren() ); } else { list.add( filter1 ); } if( filter2 == null ){ } else if( filter2 instanceof And){ And more = (And) filter2; list.addAll( more.getChildren() ); } else { list.add( filter2 ); } if( list.size() == 0 ){ return Filter.EXCLUDE; } else if( list.size() == 1 ){ return list.get(0); } else { return ff.and( list ); } } Filters();  Filters(org.opengis.filter.FilterFactory2 factory); void setFilterFactory(org.opengis.filter.FilterFactory2 factory); static Filter and( org.opengis.filter.FilterFactory ff, Filter filter1, Filter filter2 ); static Filter or( org.opengis.filter.FilterFactory ff, Filter filter1, Filter filter2 ); Filter duplicate( Filter filter ); static short getExpressionType( org.opengis.filter.expression.Expression experssion ); static short getFilterType( org.opengis.filter.Filter filter ); static int asInt( Expression expr ); static String asString(Expression expr); static double asDouble(Expression expr); static T asType(Expression expr, Class<T> TYPE); static double number(Object value); static T gets(String text, Class<T> TYPE); static String puts(double number); static String puts(Object obj); static String puts(Color color); Filter remove(Filter baseFilter, Filter targetFilter); static Filter removeFilter( Filter baseFilter, Filter targetFilter ); Filter remove(Filter baseFilter, final Filter targetFilter, boolean recurse); static Filter removeFilter(Filter baseFilter, Filter targetFilter, boolean recurse); Set<String> attributeNames( Filter filter ); static String[] attributeNames(Filter filter, final SimpleFeatureType featureType); static Set<PropertyName> propertyNames(Filter filter, final SimpleFeatureType featureType); static Set<PropertyName> propertyNames(Filter filter); static Set<PropertyName> propertyNames(Expression expression,
            final SimpleFeatureType featureType); static Set<PropertyName> propertyNames(Expression expression); static boolean hasChildren( Filter filter ); static ArrayList<Filter> children( Filter filter ); static ArrayList<Filter> children( Filter filter, boolean all ); static T search(Filter filter, Class<T> filterType, String propertyName ); static String findPropertyName(Filter filter); static final int NOTFOUND; }
@Test public void testAnd() { Filter result = filters.and(ff, a, b); assertEquals(ff.and(a, b), result); }