changeset 120:e5b59e1e2b1e

7003006: add option to list directory in deterministic order Reviewed-by: jjg
author jjh
date Sun, 27 Mar 2011 09:31:59 -0700
parents f9cffe4fc4c6
children 8eb53e0c5dc9
files src/share/classes/com/sun/tools/javac/file/JavacFileManager.java
diffstat 1 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Sun Mar 27 09:31:58 2011 -0700
+++ b/src/share/classes/com/sun/tools/javac/file/JavacFileManager.java	Sun Mar 27 09:31:59 2011 -0700
@@ -25,6 +25,7 @@
 
 package com.sun.tools.javac.file;
 
+import java.util.Comparator;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -110,6 +111,20 @@
     protected boolean mmappedIO;
     protected boolean ignoreSymbolFile;
 
+    protected enum SortFiles implements Comparator<File> {
+        FORWARD {
+            public int compare(File f1, File f2) {
+                return f1.getName().compareTo(f2.getName());
+            }
+        },
+        REVERSE {
+            public int compare(File f1, File f2) {
+                return -f1.getName().compareTo(f2.getName());
+            }
+        };
+    };
+    protected SortFiles sortFiles;
+
     /**
      * Register a Context.Factory to create a JavacFileManager.
      */
@@ -152,6 +167,12 @@
 
         mmappedIO = options.get("mmappedIO") != null;
         ignoreSymbolFile = options.get("ignore.symbol.file") != null;
+
+        String sf = options.get("sortFiles");
+        if (sf != null) {
+            sortFiles = (sf.equals("reverse") ? SortFiles.REVERSE : SortFiles.FORWARD);
+        }
+
     }
 
     public JavaFileObject getFileForInput(String name) {
@@ -293,6 +314,9 @@
             if (files == null)
                 return;
 
+            if (sortFiles != null)
+                Arrays.sort(files, sortFiles);
+
             for (File f: files) {
                 String fname = f.getName();
                 if (f.isDirectory()) {