You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by co...@locus.apache.org on 2000/06/29 17:33:02 UTC

cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional RenameExtensions.java

conor       00/06/29 08:32:56

  Modified:    docs     index.html
               src/main/org/apache/tools/ant BuildListener.java
                        DirectoryScanner.java XmlLogger.java
               src/main/org/apache/tools/ant/taskdefs Javadoc.java
               src/main/org/apache/tools/ant/taskdefs/optional
                        RenameExtensions.java
  Added:       src/main/org/apache/tools/ant PathTokenizer.java
  Log:
  Update javadoc task to support multiple link and group options.
  
  Submitted by:	Patrick Chanezon <ch...@netscape.com>
  
  Revision  Changes    Path
  1.34      +107 -11   jakarta-ant/docs/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/docs/index.html,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- index.html	2000/06/29 10:23:27	1.33
  +++ index.html	2000/06/29 15:32:34	1.34
  @@ -13,6 +13,7 @@
   <ul>
     <li>Jacques Bergeron (<a href="mailto:jacques.bergeron@dogico.com">jacques.bergeron@dogico.com</a>)</li>
     <li>Stefan Bodewig (<a href="mailto:stefan.bodewig@megabit.net">stefan.bodewig@megabit.net</a>)</li>
  +  <li>Patrick Chanezon (<a href="mailto:chanezon@netscape.com">chanezon@netscape.com</a>)</li>
     <li>James Duncan Davison (<a href="mailto:duncan@x180.com">duncan@x180.com</a>)</li>
     <li>Tom Dimock (<a href="mailto:tad1@cornell.edu">tad1@cornell.edu</a>)</li>
     <li>Bill Kelly (<a href="mailto:bill.kelly@softwired-inc.com">bill.kelly@softwired-inc.com</a>)</li>
  @@ -1660,23 +1661,34 @@
   Only files under <code>mypackage/p1</code> and <code>mypackage/p2</code> are
   used. Files in the <code>mypackage/p1/testpackage</code> directory are excluded
   form compilation and copy.</p>
  +
   <hr>
   <h2><a name="javadoc">Javadoc/Javadoc2</a></h2>
   <h3>Description</h3>
   <p>Generates code documentation using the javadoc tool.</p>
  -<p>The source directory will be recursively scanned for Java source files to but
  -only those matching the inclusion rules will be passed to the javadoc tool. This
  +<p>The source directory will be recursively scanned for Java source files to process
  +but only those matching the inclusion rules will be passed to the javadoc tool. This
   allows wildcards to be used to choose between package names, reducing verbosity
   and management costs over time. This task, however, has no notion of
  -&quot;changed&quot; files, unlike the <a href="#javac">javac</a> task, but it's
  -not used so frequently.</p>
  +&quot;changed&quot; files, unlike the <a href="#javac">javac</a> task. This means
  +all packages will be processed each time this task is run. In general, however,
  +this task is used much less frequently.</p>
   <p>This task works seamlessly between different javadoc versions (1.1 and 1.2),
   with the obvious restriction that the 1.2 attributes will be ignored if run in a
   1.1 VM.</p>
  -<p>NOTE: since javadoc calls System.exit(), we cannot run javadoc inside the
  -same VM without breaking functionality. For this reason, this task always forks
  -the VM. But this is not a performance penalty since javadoc is normally a heavy
  -application and must be called just once.</p>
  +<p>NOTE: since javadoc calls System.exit(), javadoc cannot be run inside the
  +same VM as ant without breaking functionality. For this reason, this task 
  +always forks the VM. This overhead is not significant since javadoc is normally a heavy
  +application and will be called infrequently.</p>
  +<p>NOTE: the packagelist attribute allows you to specify the list of packages to 
  +document outside of the Ant file. It's a much better practice to include everything 
  +inside the build.xml file. This option was added in order to make it easier to 
  +migrate from regular makefiles, where you would use this option of javadoc. 
  +The packages listed in packagelist are not checked, so the task performs even 
  +if some packages are missing or broken. Use this option if you wish to convert from 
  +an existing makefile. Once things are running you should then switch to the regular 
  +notation. 
  +
   <p>DEPRECATION: the javadoc2 task simply points to the javadoc task and it's
   there for back compatibility reasons. Since this task will be removed in future
   versions, you are strongly encouraged to use <a href="#javadoc">javadoc</a>
  @@ -1702,6 +1714,12 @@
       <td align="center" valign="top">Yes</td>
     </tr>
     <tr>
  +    <td valign="top">maxmemory</td>
  +    <td valign="top">Max amount of memory to allocate to the javadoc VM</td>
  +    <td align="center" valign="top">all</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +  <tr>
       <td valign="top">sourcefiles</td>
       <td valign="top">Space separated list of source files</td>
       <td align="center" valign="top">all</td>
  @@ -1714,7 +1732,13 @@
       <td align="center" valign="top">all</td>
     </tr>
     <tr>
  -    <td valign="top">Classpath</td>
  +    <td valign="top">packageList</td>
  +    <td valign="top">The name of a file containing the packages to process</td>
  +    <td align="center" valign="top">all</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">classpath</td>
       <td valign="top">Specify where to find user class files</td>
       <td align="center" valign="top">all</td>
       <td align="center" valign="top">No</td>
  @@ -1929,14 +1953,81 @@
     <tr>
       <td valign="top">doclet</td>
       <td valign="top">Specifies the class file that starts the doclet used in generating the documentation.</td>
  +    <td align="center" valign="top">1.2</td>
       <td align="center" valign="top">No</td>
     </tr>
     <tr>
       <td valign="top">docletpath</td>
       <td valign="top">Specifies the path to the doclet class file that is specified with the -doclet option.</td>
  +    <td align="center" valign="top">1.2</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">additionalparam</td>
  +    <td valign="top">Lets you add additional parameters to the javadoc command line. Useful for doclets</td>
  +    <td align="center" valign="top">1.2</td>
  +    <td align="center" valign="top">No</td>
  +  </tr>
  +</table>
  +
  +<h3>Parameters specified as subelements</h3>
  +Two parameters of the Javadoc task may be specified as nested elements of the
  +Javadoc task element: link and group.
  +When present, there can be any number of each of these elements.
  +They perform the same role as the link, linkoffline and
  +group attributes. You can use either syntax (or both at once), but with the  nested 
  +elements you can easily specify multiple occurrences of the arguments.
  +<h4>link</h4>
  +Create link to javadoc output at the given URL
  +<h4>Parameters</h4>
  +
  +<table width="60%" border="1" cellpadding="2" cellspacing="0">
  +  <tr>
  +    <td valign="top"><b>Attribute</b></td>
  +    <td valign="top"><b>Description</b></td>
  +    <td align="center" valign="top"><b>Required</b></td>
  +  </tr>
  +  <tr>
  +    <td valign="top">href</td>
  +    <td valign="top">The URL for the external documentation you wish to link to</td>
  +    <td align="center" valign="top">Yes</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">offline</td>
  +    <td valign="top">True if this link is not available online at the time of 
  +                     generating the documentation</td>
       <td align="center" valign="top">No</td>
     </tr>
  +  <tr>
  +    <td valign="top">packagelistLoc</td>
  +    <td valign="top">The location to the directory containing the package-list file for
  +                     the external documentation</td>
  +    <td align="center" valign="top">Only if the offline attribute is true</td>
  +  </tr>
  +</table>
  +  
  +<h4>groups</h4>
  +Separates packages on the overview page into whatever groups you specify,
  +one group per table.
  +
  +<table width="60%" border="1" cellpadding="2" cellspacing="0">
  +  <tr>
  +    <td valign="top"><b>Attribute</b></td>
  +    <td valign="top"><b>Description</b></td>
  +    <td align="center" valign="top"><b>Required</b></td>
  +  </tr>
  +  <tr>
  +    <td valign="top">title</td>
  +    <td valign="top">Title of the group</td>
  +    <td align="center" valign="top">Yes</td>
  +  </tr>
  +  <tr>
  +    <td valign="top">packages</td>
  +    <td valign="top">List of packages to include in that group</td>
  +    <td align="center" valign="top">Yes</td>
  +  </tr>
   </table>
  +
   <h3>Example</h3>
   <pre>  &lt;javadoc packagenames=&quot;com.dummy.test.*&quot;
              sourcepath=&quot;src&quot;
  @@ -1946,8 +2037,13 @@
              use=&quot;true&quot;
              windowtitle=&quot;Test API&quot;
              doctitle=&quot;&lt;h1&gt;Test&lt;/h1&gt;&quot;
  -           bottom=&quot;&lt;i&gt;Copyright &amp;#169; 2000 Dummy Corp. All Rights Reserved.&lt;/i&gt;&quot;
  -  /&gt;</pre>
  +           bottom=&quot;&lt;i&gt;Copyright &amp;#169; 2000 Dummy Corp. All Rights Reserved.&lt;/i&gt;&quot;&gt;
  +    &lt;group title=&quot;Group 1 Packages&quot; packages=&quot;com.dummy.test.a*&quot;/&gt;
  +    &lt;group title=&quot;Group 2 Packages&quot; packages=&quot;com.dummy.test.b*&quot;/&gt;
  +    &lt;link offline=&quot;true&quot; href=&quot;http://java.sun.com/products/jdk/1.2/docs/api/&quot; packagelistLoc=&quot;C:\tmp&quot;/&gt;
  +    &lt;link href=&quot;http://developer.java.sun.com/developer/products/xml/docs/api/&quot;/&gt;
  +  &lt/javadoc&gt;</pre>
  +  
   <hr>
   <h2><a name="keysubst">KeySubst</a></h2>
   <h3>Description</h3>
  
  
  
  1.2       +2 -2      jakarta-ant/src/main/org/apache/tools/ant/BuildListener.java
  
  Index: BuildListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/BuildListener.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BuildListener.java	2000/06/24 10:55:38	1.1
  +++ BuildListener.java	2000/06/29 15:32:37	1.2
  @@ -74,7 +74,7 @@
        *  Fired after the last target has finished. This event
        *  will still be thrown if an error occured during the build.
        *
  -     *  @see BuildEvent.getException()
  +     *  @see BuildEvent#getException()
        */
       public void buildFinished(BuildEvent event);
   
  @@ -89,7 +89,7 @@
        *  Fired when a target has finished. This event will
        *  still be thrown if an error occured during the build.
        *
  -     *  @see BuildEvent.getException()
  +     *  @see BuildEvent#getException()
        */
       public void targetFinished(BuildEvent event);
   
  
  
  
  1.3       +0 -1      jakarta-ant/src/main/org/apache/tools/ant/DirectoryScanner.java
  
  Index: DirectoryScanner.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/DirectoryScanner.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DirectoryScanner.java	2000/02/09 20:51:45	1.2
  +++ DirectoryScanner.java	2000/06/29 15:32:37	1.3
  @@ -808,7 +808,6 @@
       /**
        * Adds the array with default exclusions to the current exclusions set.
        *
  -     * @see #DEFAULTEXCLUDES
        */
       public void addDefaultExcludes() {
           int excludesLength = excludes == null ? 0 : excludes.length;
  
  
  
  1.2       +1 -1      jakarta-ant/src/main/org/apache/tools/ant/XmlLogger.java
  
  Index: XmlLogger.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/XmlLogger.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XmlLogger.java	2000/06/24 10:55:41	1.1
  +++ XmlLogger.java	2000/06/29 15:32:37	1.2
  @@ -62,7 +62,7 @@
    *  Generates a "log.xml" file in the current directory with
    *  an XML description of what happened during a build.
    *
  - *  @see Project#addBuildListener()
  + *  @see Project#addBuildListener(BuildListener)
    */
   public class XmlLogger implements BuildListener {
   
  
  
  
  1.1                  jakarta-ant/src/main/org/apache/tools/ant/PathTokenizer.java
  
  Index: PathTokenizer.java
  ===================================================================
  /*
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 1999 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution, if
   *    any, must include the following acknowlegement:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowlegement may appear in the software itself,
   *    if and wherever such third-party acknowlegements normally appear.
   *
   * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
   *    Foundation" must not be used to endorse or promote products derived
   *    from this software without prior written permission. For written
   *    permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache"
   *    nor may "Apache" appear in their names without prior written
   *    permission of the Apache Group.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  package org.apache.tools.ant;
  
  import java.util.*;
  import java.io.*;
  
  /**
   * A Path tokenizer takes a path and returns the components that make up
   * that path.
   *
   * The path can use path separators of either ':' or ';' and file separators
   * of either '/' or '\'
   *
   * @author Conor MacNeill (conor@ieee.org)
   *
   */ 
  public class PathTokenizer {
      /**
       * A tokenizer to break the string up based on the ':' or ';' separators.
       */
      StringTokenizer tokenizer;
      
      /**
       * A String which stores any path components which have been read ahead.
       */
      String lookahead = null;
  
      public PathTokenizer(String path) {
         tokenizer = new StringTokenizer(path, ":;", false);
      }
  
      public boolean hasMoreTokens() {
          if (lookahead != null) {
              return true;
          }
          
          return tokenizer.hasMoreTokens();
      }
      
      public String nextToken() throws NoSuchElementException {
          if (lookahead != null) {
              String token = lookahead;
              lookahead = null;
              
              return token;
          }
          else {
              String token = tokenizer.nextToken().trim();
              
              
              if (token.length() == 1 && Character.isLetter(token.charAt(0))
                                      && File.pathSeparator.equals(";") 
                                      && tokenizer.hasMoreTokens()) {
                  // we are on a dos style system so this path could be a drive
                  // spec. We look at the next token
                  String nextToken = tokenizer.nextToken().trim();
                  if (nextToken.startsWith("\\") || nextToken.startsWith("/")) {
                      // we know we are on a DOS style platform and the next path starts with a
                      // slash or backslash, so we know this is a drive spec
                      token += ":" + nextToken;
                  }
                  else {
                      // store the token just read for next time
                      lookahead = nextToken;
                  }
              }
              
              return token;
          }
      }
  }
            
  
  
  1.9       +179 -16   jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
  
  Index: Javadoc.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Javadoc.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- Javadoc.java	2000/06/14 12:42:14	1.8
  +++ Javadoc.java	2000/06/29 15:32:39	1.9
  @@ -75,11 +75,14 @@
    *
    * @author Jon S. Stevens <a href="mailto:jon@clearink.com">jon@clearink.com</a>
    * @author Stefano Mazzocchi <a href="mailto:stefano@apache.org">stefano@apache.org</a>
  + * @author Patrick Chanezon <a href="mailto:chanezon@netscape.com">chanezon@netscape.com</a>
    */
   
   public class Javadoc extends Exec {
   
  +    private String maxmemory = null;
       private String sourcePath = null;
  +    private String additionalParam = null;
       private File destDir = null;
       private File overviewFile = null;
       private String sourceFiles = null;
  @@ -106,8 +109,8 @@
       private String header = null;
       private String footer = null;
       private String bottom = null;
  -    private String link = null;
       private String linkoffline = null;
  +    private String link = null;
       private String group = null;
       private boolean nodeprecated = false;
       private boolean nodeprecatedlist = false;
  @@ -119,7 +122,18 @@
       private File helpfile = null;
       private String docencoding = null;
       private Vector compileList = new Vector(10);
  +    private String packageList = null;
  +    private Vector links = new Vector(2);
  +    private Vector groups = new Vector(2);
  +
  +    public void setMaxmemory(String src){
  +        maxmemory = src;
  +    }
   
  +    public void setadditionalParam(String src){
  +        additionalParam = src;
  +    }
  +    
       public void setSourcepath(String src) {
           sourcePath = project.translatePath(src);
       }
  @@ -201,15 +215,15 @@
       public void setBottom(String src) {
           bottom = src;
       }
  -    public void setLink(String src) {
  -        link = src;
  -    }
       public void setLinkoffline(String src) {
           linkoffline = src;
       }
       public void setGroup(String src) {
           group = src;
       }
  +    public void setLink(String src) {
  +        link = src;
  +    }
       public void setNodeprecated(String src) {
           nodeprecated = Project.toBoolean(src);
       }
  @@ -234,7 +248,79 @@
       public void setDocencoding(String src) {
           docencoding = src;
       }
  +    public void setPackageList(String src) {
  +        packageList = src;
  +    }
  +    
  +    public LinkArgument createLink() {
  +        LinkArgument la = new LinkArgument();
  +        links.addElement(la);
  +        return la;
  +    }
  +    
  +    public class LinkArgument {
  +        private String href;
  +        private boolean offline = false;
  +        private String packagelistLoc;
  +        
  +        public LinkArgument() {
  +        }
  +
  +        public void setHref(String hr) {
  +            href = hr;
  +        }
  +        
  +        public String getHref() {
  +            return href;
  +        }
  +        
  +        public void setPackagelistLoc(String src) {
  +            packagelistLoc = src;
  +        }
  +        
  +        public String getPackagelistLoc() {
  +            return packagelistLoc;
  +        }
  +        
  +        public void setOffline(String offline) {
  +            this.offline = Project.toBoolean(offline);
  +        }
  +        
  +        public boolean isLinkOffline() {
  +            return offline;
  +        }
  +    }
  +    
  +    public GroupArgument createGroup() {
  +        GroupArgument ga = new GroupArgument();
  +        groups.addElement(ga);
  +        return ga;
  +    }
  +
  +    public class GroupArgument {
  +        private String title;
  +        private String packages;
   
  +        public GroupArgument() {
  +        }
  +
  +        public void setTitle(String src) {
  +            title = src;
  +        }
  +
  +        public String getTitle() {
  +            return title;
  +        }
  +
  +        public void setPackages(String src) {
  +            packages = src;
  +        }
  +
  +        public String getPackages() {
  +            return packages;
  +        }
  +    }
  +
       public void execute() throws BuildException {
           if (sourcePath == null && destDir == null ) {
               String msg = "sourcePath and destDir attributes must be set!";
  @@ -251,6 +337,16 @@
           if (classpath == null)
               classpath = System.getProperty("java.class.path");
   
  +
  +        if(maxmemory != null){
  +            if(javadoc1){
  +                argList.addElement("-J-mx" + maxmemory);
  +            }
  +            else{
  +                argList.addElement("-J-Xmx" + maxmemory);
  +            }
  +        }
  +
           if ( (!javadoc1) || (sourcePath == null) ) {
               argList.addElement("-classpath");
               argList.addElement(classpath);
  @@ -358,15 +454,46 @@
                   argList.addElement("-bottom");
                   argList.addElement(bottom);
               }
  +            
  +            // add the single link arguments
               if (link != null) {
                   argList.addElement("-link");
                   argList.addElement(link);
               }
  +            
  +            // add the links arguments
  +            if (links.size() != 0) {
  +                for (Enumeration e = links.elements(); e.hasMoreElements(); ) {
  +                    LinkArgument la = (LinkArgument)e.nextElement();
  +                
  +                    if (la.getHref() == null) {
  +                        throw new BuildException("Links must provide the RUL to the external class documentation.");
  +                    }
  +                
  +                    if (la.isLinkOffline()) {
  +                        String packageListLocation = la.getPackagelistLoc();
  +                        if (packageListLocation == null) {
  +                            throw new BuildException("The package list location for link " + la.getHref() +
  +                                                     " must be provided because the link is offline");
  +                        }
  +                        argList.addElement("-linkoffline");
  +                        argList.addElement(la.getHref());
  +                        argList.addElement(packageListLocation);
  +                    }
  +                    else {
  +                        argList.addElement("-link");
  +                        argList.addElement(la.getHref());
  +                    }
  +                }
  +            }                                   
  +                                                
  +            // add the single linkoffline arguments
               if (linkoffline != null) {
                   argList.addElement("-linkoffline");
                   argList.addElement(linkoffline);
               }
  -
  +            
  +            // add the single group arguments
               // Javadoc 1.2 rules:
               //   Multiple -group args allowed.
               //   Each arg includes 3 strings: -group [name] [packagelist].
  @@ -391,6 +518,27 @@
                     }
                   }
               }
  +            
  +            // add the group arguments
  +            if (groups.size() != 0) {
  +                String title = null;
  +                String packages = null;
  +                GroupArgument ga = null;
  +                for (int i = 0; i < groups.size(); i++) {
  +                    ga = (GroupArgument)groups.get(i);
  +                    if (ga != null) {
  +                        title = ga.getTitle();
  +                        packages = ga.getPackages();
  +                    }
  +                    if (title != null) {
  +                        argList.addElement("-group");
  +                        argList.addElement(title);
  +                        if (packages != null) {
  +                            argList.addElement(packages);
  +                        }
  +                    }
  +                }
  +            }
   
               if (stylesheetfile != null) {
                   argList.addElement("-stylesheetfile");
  @@ -400,6 +548,9 @@
                   argList.addElement("-helpfile");
                   argList.addElement(helpfile.getAbsolutePath());
               }
  +            if (additionalParam != null) {
  +                argList.addElement(additionalParam);
  +            }
           }
   
           if ((packageNames != null) && (packageNames.length() > 0)) {
  @@ -425,6 +576,9 @@
               }
           }
   
  +         if (packageList != null) {
  +            argList.addElement("@" + packageList);
  +        }
           project.log("Javadoc args: " + argList.toString(), "javadoc", project.MSG_VERBOSE);
   
           project.log("Javadoc execution", project.MSG_INFO);
  @@ -453,20 +607,29 @@
        * with the packages found in that path subdirs matching one of the given
        * patterns.
        */
  -    private void evaluatePackages(String source, Vector packages, Vector argList) {
  +    private void evaluatePackages(String sourcePath, Vector packages, Vector argList) {
           project.log("Parsing source files for packages", project.MSG_INFO);
  -        project.log("Source dir = " + source, project.MSG_VERBOSE);
  +        project.log("Source path = " + sourcePath, project.MSG_VERBOSE);
           project.log("Packages = " + packages, project.MSG_VERBOSE);
   
  -        Hashtable map = mapClasses(new File(source));
  -
  -        Enumeration e = map.keys();
  -        while (e.hasMoreElements()) {
  -            String pack = (String) e.nextElement();
  -            for (int i = 0; i < packages.size(); i++) {
  -                if (matches(pack, (String) packages.elementAt(i))) {
  -                    argList.addElement(pack);
  -                    break;
  +        Vector addedPackages = new Vector();
  +        PathTokenizer tokenizer = new PathTokenizer(sourcePath);
  +        while (tokenizer.hasMoreTokens()) {
  +            File source = new File(project.translatePath(tokenizer.nextToken()));
  +            
  +            Hashtable map = mapClasses(source);
  +
  +            Enumeration e = map.keys();
  +            while (e.hasMoreElements()) {
  +                String pack = (String) e.nextElement();
  +                for (int i = 0; i < packages.size(); i++) {
  +                    if (matches(pack, (String) packages.elementAt(i))) {
  +                        if (!addedPackages.contains(pack)) {
  +                            argList.addElement(pack);
  +                            addedPackages.addElement(pack);
  +                        }
  +                        break;
  +                    }
                   }
               }
           }
  
  
  
  1.3       +0 -1      jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java
  
  Index: RenameExtensions.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/optional/RenameExtensions.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- RenameExtensions.java	2000/03/20 15:45:34	1.2
  +++ RenameExtensions.java	2000/06/29 15:32:43	1.3
  @@ -73,7 +73,6 @@
   /**
    *
    * @author  dion
  - * @version
    */
   public class RenameExtensions extends MatchingTask {