Hi,

After thinking this through this morning on the ride into work, here is
a version of the refactoring (extract method) that doesn't use any
reflection (so should satisfy both Antoine and Matt ;))

Attached patch for testing purposes too.

/**
     * Process included file.
     * @param name  path of the file relative to the directory of the
FileSet.
     * @param file  included File.
     */
    private void accountForIncludedFile(String name, File file) {
        processIncluded(name, file, filesIncluded, filesExcluded,
filesDeselected);
    }

    /**
     * Process included directory.
     * @param name path of the directory relative to the directory of
     *             the FileSet.
     * @param file directory as File.
     * @param fast whether to perform fast scans.
     */
    private void accountForIncludedDir(String name, File file, boolean
fast) {
        processIncluded(name, file, dirsIncluded, dirsExcluded,
dirsDeselected);
        if (fast && couldHoldIncluded(name) && !contentsExcluded(name))
{
            scandir(file, name + File.separator, fast);
        }
    }
    
    private void processIncluded(String name, File file, Vector inc,
Vector exc, Vector des) {
        
        if (inc.contains(name) || exc.contains(name) ||
des.contains(name)) { return; }
        
        boolean included = false;
        if (isExcluded(name)) {
            exc.add(name);
        } else if(isSelected(name, file)) {
            included = true;
            inc.add(name);
        } else {
            des.add(name);
        }
        everythingIncluded &= included;
    }
Index: .
===================================================================
--- .	(revision 434293)
+++ .	(working copy)
@@ -1115,21 +1115,7 @@
      * @param file  included File.
      */
     private void accountForIncludedFile(String name, File file) {
-        if (filesIncluded.contains(name)
-            || filesExcluded.contains(name)
-            || filesDeselected.contains(name)) {
-            return;
-        }
-        boolean included = false;
-        if (isExcluded(name)) {
-            filesExcluded.addElement(name);
-        } else if (isSelected(name, file)) {
-            included = true;
-            filesIncluded.addElement(name);
-        } else {
-            filesDeselected.addElement(name);
-        }
-        everythingIncluded &= included;
+    	processIncluded(name, file, filesIncluded, filesExcluded, filesDeselected);
     }
 
     /**
@@ -1140,24 +1126,26 @@
      * @param fast whether to perform fast scans.
      */
     private void accountForIncludedDir(String name, File file, boolean fast) {
-        if (dirsIncluded.contains(name)
-            || dirsExcluded.contains(name)
-            || dirsDeselected.contains(name)) {
-            return;
+    	processIncluded(name, file, dirsIncluded, dirsExcluded, dirsDeselected);
+        if (fast && couldHoldIncluded(name) && !contentsExcluded(name)) {
+            scandir(file, name + File.separator, fast);
         }
+    }
+    
+    private void processIncluded(String name, File file, Vector inc, Vector exc, Vector des) {
+        
+        if (inc.contains(name) || exc.contains(name) || des.contains(name)) { return; }
+        
         boolean included = false;
         if (isExcluded(name)) {
-            dirsExcluded.addElement(name);
-        } else if (isSelected(name, file)) {
+            exc.add(name);
+        } else if(isSelected(name, file)) {
             included = true;
-            dirsIncluded.addElement(name);
+            inc.add(name);
         } else {
-            dirsDeselected.addElement(name);
+            des.add(name);
         }
         everythingIncluded &= included;
-        if (fast && couldHoldIncluded(name) && !contentsExcluded(name)) {
-            scandir(file, name + File.separator, fast);
-        }
     }
 
     /**

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to