--- Antoine Levy-Lambert <[EMAIL PROTECTED]> wrote:

> Hello Matt and others,
> 
> I had thought about this issue of optimizing pattern
> scanning.
> DirectoryScanner used to be written so that if an
> exclude pattern looks like
> foo/bar/** scanning stops in foo/bar.
> Actually if an exclude pattern is like **/Test/**,
> every time a directory Test is encountered it should
> not be scanned.

The exception to that rule is if some other directory
Test is more explicitly specified as an include; I
think this is handled as well as can be in
couldHoldIncluded().

> Not sure whether this change does exactly that.
> 
> I am not sure exactly what the semantics of isDeeper
> are ?

This method does as little as it has to.  When this
(private) method is called, other methods have
determined the matching as well as we already have
had.  isDeeper defers to SelectorUtils to return
tokenized path Vectors... if the pattern Vector
contains "**" it is infinitely deep and thus is
deeper, otherwise the pattern Vector must contain more
tokens than the name in order to be considered deeper.
 Thus if we have no patterns that match files at
deeper levels than we have already reached, we do not
scan.

Hope this clears up a bit,
Matt

> 
> Cheers,
> 
> Antoine
> 
> [EMAIL PROTECTED] wrote:
> 
> 
> >mbenson     2005/03/02 14:43:54
> >
> >  Modified:    src/main/org/apache/tools/ant
> DirectoryScanner.java
> >  Log:
> >  Stop scanning directories where we match the
> directory but know based
> >  on the pattern that we will never match any of
> its contents.
> >....   
> >       /**
> >  +     * Verify that a pattern specifies files
> deeper
> >  +     * than the level of the specified file.
> >  +     * @param pattern the pattern to check.
> >  +     * @param name the name to check.
> >  +     * @return whether the pattern is deeper
> than the name.
> >  +     * @since Ant 1.6.3
> >  +     */
> >  +    private boolean isDeeper(String pattern,
> String name) {
> >  +        Vector p =
> SelectorUtils.tokenizePath(pattern);
> >  +        Vector n =
> SelectorUtils.tokenizePath(name);
> >  +        return p.contains("**") || p.size() >
> n.size();
> >  +    }
> >  +
> >  
> >
> 
> 
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> 
> 



        
                
__________________________________ 
Celebrate Yahoo!'s 10th Birthday! 
Yahoo! Netrospective: 100 Moments of the Web 
http://birthday.yahoo.com/netrospective/

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

Reply via email to