You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2010/09/29 00:52:54 UTC
svn commit: r1002394 - in /commons/proper/io/trunk/src:
java/org/apache/commons/io/filefilter/FileFilterUtils.java
test/org/apache/commons/io/filefilter/FileFilterTestCase.java
Author: niallp
Date: Tue Sep 28 22:52:54 2010
New Revision: 1002394
URL: http://svn.apache.org/viewvc?rev=1002394&view=rev
Log:
IO-229 FileFilterUtils - add varargs methods for AndFileFilter and OrFileFilter - thanks to Michael Wooten
Modified:
commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/FileFilterUtils.java
commons/proper/io/trunk/src/test/org/apache/commons/io/filefilter/FileFilterTestCase.java
Modified: commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/FileFilterUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/FileFilterUtils.java?rev=1002394&r1=1002393&r2=1002394&view=diff
==============================================================================
--- commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/FileFilterUtils.java (original)
+++ commons/proper/io/trunk/src/java/org/apache/commons/io/filefilter/FileFilterUtils.java Tue Sep 28 22:52:54 2010
@@ -19,7 +19,9 @@ package org.apache.commons.io.filefilter
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
import org.apache.commons.io.IOCase;
@@ -136,6 +138,7 @@ public class FileFilterUtils {
* @param filter1 the first filter
* @param filter2 the second filter
* @return a filter that ANDs the two specified filters
+ * @deprecated use {@link #and(IOFileFilter...)}
*/
public static IOFileFilter andFileFilter(IOFileFilter filter1, IOFileFilter filter2) {
return new AndFileFilter(filter1, filter2);
@@ -147,12 +150,64 @@ public class FileFilterUtils {
* @param filter1 the first filter
* @param filter2 the second filter
* @return a filter that ORs the two specified filters
+ * @deprecated use {@link #or(IOFileFilter...)}
*/
public static IOFileFilter orFileFilter(IOFileFilter filter1, IOFileFilter filter2) {
return new OrFileFilter(filter1, filter2);
}
/**
+ * Returns a filter that ANDs the specified filters.
+ *
+ * @param filters the IOFileFilters that will be ANDed together.
+ * @return a filter that ANDs the specified filters
+ *
+ * @throws IllegalArgumentException if the filters are null or contain a
+ * null value.
+ * @since Commons IO 2.0
+ */
+ public static IOFileFilter and(IOFileFilter... filters) {
+ return new AndFileFilter(toList(filters));
+ }
+
+ /**
+ * Returns a filter that ORs the specified filters.
+ *
+ * @param filters the IOFileFilters that will be ORed together.
+ * @return a filter that ORs the specified filters
+ *
+ * @throws IllegalArgumentException if the filters are null or contain a
+ * null value.
+ * @since Commons IO 2.0
+ */
+ public static IOFileFilter or(IOFileFilter... filters) {
+ return new OrFileFilter(toList(filters));
+ }
+
+ /**
+ * Create a List of file filters.
+ *
+ * @param filters The file filters
+ * @return The list of file filters
+ * @throws IllegalArgumentException if the filters are null or contain a
+ * null value.
+ * @since Commons IO 2.0
+ */
+ public static List<IOFileFilter> toList(IOFileFilter... filters) {
+ if (filters == null) {
+ throw new IllegalArgumentException("The filters must not be null");
+ }
+ List<IOFileFilter> list = new ArrayList<IOFileFilter>(filters.length);
+ for (int i = 0; i < filters.length; i++) {
+ if (filters[i] == null) {
+ throw new IllegalArgumentException("The filter[" + i + "] is null");
+ }
+ list.add(filters[i]);
+ }
+ return list;
+ }
+
+ /**
* Returns a filter that NOTs the specified filter.
*
* @param filter the filter to invert
Modified: commons/proper/io/trunk/src/test/org/apache/commons/io/filefilter/FileFilterTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/org/apache/commons/io/filefilter/FileFilterTestCase.java?rev=1002394&r1=1002393&r2=1002394&view=diff
==============================================================================
--- commons/proper/io/trunk/src/test/org/apache/commons/io/filefilter/FileFilterTestCase.java (original)
+++ commons/proper/io/trunk/src/test/org/apache/commons/io/filefilter/FileFilterTestCase.java Tue Sep 28 22:52:54 2010
@@ -482,6 +482,24 @@ public class FileFilterTestCase extends
OrFileFilter f = new OrFileFilter((List<IOFileFilter>) null);
assertEquals(true, f.getFileFilters().isEmpty());
}
+ public void testFileFilterUtils_and() throws Exception {
+ IOFileFilter trueFilter = TrueFileFilter.INSTANCE;
+ IOFileFilter falseFilter = FalseFileFilter.INSTANCE;
+ assertFiltering(FileFilterUtils.and(trueFilter, trueFilter, trueFilter), new File("foo.test"), true);
+ assertFiltering(FileFilterUtils.and(trueFilter, falseFilter, trueFilter), new File("foo.test"), false);
+ assertFiltering(FileFilterUtils.and(falseFilter, trueFilter), new File("foo.test"), false);
+ assertFiltering(FileFilterUtils.and(falseFilter, falseFilter), new File("foo.test"), false);
+ }
+
+ public void testFileFilterUtils_or() throws Exception {
+ IOFileFilter trueFilter = TrueFileFilter.INSTANCE;
+ IOFileFilter falseFilter = FalseFileFilter.INSTANCE;
+ File testFile = new File( "foo.test" );
+ assertFiltering(FileFilterUtils.or(trueFilter, trueFilter), testFile, true);
+ assertFiltering(FileFilterUtils.or(trueFilter, trueFilter, falseFilter), testFile, true);
+ assertFiltering(FileFilterUtils.or(falseFilter, trueFilter), testFile, true);
+ assertFiltering(FileFilterUtils.or(falseFilter, falseFilter, falseFilter), testFile, false);
+ }
@SuppressWarnings("deprecation")
public void testDeprecatedWildcard() throws Exception {