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]

Reply via email to