I had done a big mistake in my attempt to improve DirectoryScanner by not scanning directories matching exclude patterns. I realized this when I ran the ant test suite which took 1 minute instead of the usual 5. This is fixed now. This routine to decide when exclude patterns are enough to stop scanning a part of the directory tree can still be improved. Right now, it will halt the scan of foo/bar if there is an exclude pattern foo/bar/** but not if there is an exclude pattern **/bar/** or FOO/BAR/** on case insensitive systems. Cheers, Antoine ----- Original Message ----- From: <[EMAIL PROTECTED]> Sent: Tuesday, July 29, 2003 9:47 PM
> antoine 2003/07/29 12:47:16 > > Modified: src/main/org/apache/tools/ant DirectoryScanner.java > Log: > the method isMorePowerfulThanExcludes was returning false on org/apache/tools/ant/taskdefs > in the run-tests target of our buildfile because of the exclude pattern : > <exclude name="${ant.package}/taskdefs/TaskdefTest*Task.java"/> > :-( > > Revision Changes Path > 1.61 +3 -12 ant/src/main/org/apache/tools/ant/DirectoryScanner.java > > Index: DirectoryScanner.java > =================================================================== > RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/DirectoryScanner.java,v > retrieving revision 1.60 > retrieving revision 1.61 > diff -u -r1.60 -r1.61 > --- DirectoryScanner.java 29 Jul 2003 10:49:11 -0000 1.60 > +++ DirectoryScanner.java 29 Jul 2003 19:47:16 -0000 1.61 > @@ -1004,19 +1004,10 @@ > * @since ant1.6 > */ > private boolean isMorePowerfulThanExcludes(String name, String includepattern) { > - String shortpattern = SelectorUtils.rtrimWildcardTokens(includepattern); > + String soughtexclude = name + File.separator + "**"; > for (int counter=0; counter <excludes.length; counter++) { > - String shortexclude = SelectorUtils.rtrimWildcardTokens(excludes[counter]); > - // here we are checking that the trimmed exclude pattern is not a plain directory > - // <exclude name="foo"/> means exclude only the directory foo, but not its subdirs > - if (shortexclude.length() < excludes[counter].length()) { > - if (excludes[counter].charAt(shortexclude.length()) == File.separatorChar) { > - if (matchPath(shortexclude, name, isCaseSensitive)) { > - if (shortexclude.length() > shortpattern.length()) { > - return false; > - } > - } > - } > + if (excludes[counter].equals(soughtexclude)) { > + return false; > } > } > return true; > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]