Browse Source

Reuse boolean[] instances for case-sensitivity iterations when scanning;

reverse logic for better clarity of intent with these arrays.


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277815 13f79535-47bb-0310-9956-ffa450edef68
master
Matthew Jason Benson 20 years ago
parent
commit
a62c18b465
1 changed files with 10 additions and 6 deletions
  1. +10
    -6
      src/main/org/apache/tools/ant/DirectoryScanner.java

+ 10
- 6
src/main/org/apache/tools/ant/DirectoryScanner.java View File

@@ -168,6 +168,12 @@ public class DirectoryScanner
/** Helper. */
private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();

/** iterations for case-sensitive scanning. */
private static final boolean[] csScanOnly = new boolean[] {true};

/** iterations for non-case-sensitive scanning. */
private static final boolean[] csThenNonCs = new boolean[] {true, false};

/**
* Patterns which should be excluded by default.
*
@@ -1522,13 +1528,11 @@ public class DirectoryScanner
}
String current = (String) pathElements.remove(0);

//always scan first NOT ignoring case; if cs, do a 2nd scan ignoring case:
boolean[] ignoreCase = cs ? new boolean[] {false}
: new boolean[] {false, true};
for (int i = 0; i < ignoreCase.length; i++) {
boolean[] matchCase = cs ? csScanOnly : csThenNonCs;
for (int i = 0; i < matchCase.length; i++) {
for (int j = 0; j < files.length; j++) {
if (ignoreCase[i] ? files[j].equalsIgnoreCase(current)
: files[j].equals(current)) {
if (matchCase[i] ? files[j].equals(current)
: files[j].equalsIgnoreCase(current)) {
return findFile(new File(base, files[j]), pathElements, cs);
}
}


Loading…
Cancel
Save