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]