diff --git a/pom.xml b/pom.xml
index 3b71de75..da66eeb5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@ limitations under the License.
plexus-utils
- 3.2.2-SNAPSHOT
+ 3.3.0-SNAPSHOT
Plexus Common Utilities
A collection of various utility classes to ease working with strings, files, command lines, XML and
diff --git a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
index 02486288..e3b2ba6e 100644
--- a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
+++ b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
@@ -18,6 +18,7 @@
import java.io.File;
import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
/**
@@ -119,6 +120,11 @@ public abstract class AbstractScanner
*/
protected boolean isCaseSensitive = true;
+ /**
+ * @since 3.3.0
+ */
+ protected Comparator filenameComparator;
+
/**
* Sets whether or not the file system should be regarded as case sensitive.
*
@@ -390,4 +396,10 @@ protected void setupMatchPatterns()
includesPatterns = MatchPatterns.from( includes );
excludesPatterns = MatchPatterns.from( excludes );
}
+
+ @Override
+ public void setFilenameComparator( Comparator filenameComparator )
+ {
+ this.filenameComparator = filenameComparator;
+ }
}
diff --git a/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java b/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java
index ea3e4b65..af118472 100644
--- a/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java
+++ b/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java
@@ -57,6 +57,7 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Vector;
/**
@@ -436,6 +437,11 @@ protected void scandir( File dir, String vpath, boolean fast )
newfiles = noLinks.toArray( new String[noLinks.size()] );
}
+ if ( filenameComparator != null )
+ {
+ Arrays.sort( newfiles, filenameComparator );
+ }
+
for ( String newfile : newfiles )
{
String name = vpath + newfile;
diff --git a/src/main/java/org/codehaus/plexus/util/Scanner.java b/src/main/java/org/codehaus/plexus/util/Scanner.java
index 4c693e0f..14af3a9d 100644
--- a/src/main/java/org/codehaus/plexus/util/Scanner.java
+++ b/src/main/java/org/codehaus/plexus/util/Scanner.java
@@ -17,6 +17,7 @@
*/
import java.io.File;
+import java.util.Comparator;
/**
* Scan a directory tree for files, with specified inclusions and exclusions.
@@ -83,4 +84,12 @@ public interface Scanner
* @return the base directory to be scanned
*/
File getBasedir();
+
+ /**
+ * Use a filename comparator in each directory when scanning.
+ *
+ * @param filenameComparator
+ * @since 3.3.0
+ */
+ void setFilenameComparator( Comparator filenameComparator );
}