You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2006/04/06 20:27:34 UTC

svn commit: r392027 - in /ant/core/trunk: docs/manual/CoreTasks/javadoc.html src/etc/testcases/taskdefs/javadoc/javadoc.xml src/main/org/apache/tools/ant/taskdefs/Javadoc.java src/testcases/org/apache/tools/ant/taskdefs/JavadocTest.java

Author: bodewig
Date: Thu Apr  6 11:27:32 2006
New Revision: 392027

URL: http://svn.apache.org/viewcvs?rev=392027&view=rev
Log:
allow ressource collections for source files in <javadoc>

Modified:
    ant/core/trunk/docs/manual/CoreTasks/javadoc.html
    ant/core/trunk/src/etc/testcases/taskdefs/javadoc/javadoc.xml
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
    ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavadocTest.java

Modified: ant/core/trunk/docs/manual/CoreTasks/javadoc.html
URL: http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/CoreTasks/javadoc.html?rev=392027&r1=392026&r2=392027&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/javadoc.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/javadoc.html Thu Apr  6 11:27:32 2006
@@ -484,7 +484,7 @@
 <p>A <a href="../CoreTypes/fileset.html">FileSet</a>.  All matched
 files will be passed to javadoc as source files.  Ant will
 automatically add the include pattern <code>**/*.java</code> (and
-<code>**/package.html</code> if inncludenosourcepackages is true) to
+<code>**/package.html</code> if includenosourcepackages is true) to
 these filesets.</p>
 
 <p>Nested filesets can be used to document sources that are in the
@@ -496,6 +496,14 @@
 <p>The <code>packagenames</code>, <code>excludepackagenames</code> and
 <code>defaultexcludes</code> attributes of the task have no effect on
 the nested <code>&lt;fileset&gt;</code> elements.</p>
+
+<h4>sourcefiles</h4>
+
+<p>A container for arbitrary file system based <a
+href="../CoreTypes/resources.html#collection">resource
+collections</a>.  All files contained in any of the nested collections
+(this includes nested filesets, filelists or paths) will be passed to
+javadoc as source files.</p>
 
 <h4>package</h4>
 <p>Same as one entry in the list given by <code>packagenames</code>.</p>

Modified: ant/core/trunk/src/etc/testcases/taskdefs/javadoc/javadoc.xml
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/etc/testcases/taskdefs/javadoc/javadoc.xml?rev=392027&r1=392026&r2=392027&view=diff
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/javadoc/javadoc.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/javadoc/javadoc.xml Thu Apr  6 11:27:32 2006
@@ -56,6 +56,28 @@
     </javadoc>
   </target>
 
+  <target name="nestedFilesetNoPatterns">
+    <javadoc packagenames="*" destdir="javadoc">
+      <fileset dir="java/"/>
+    </javadoc>
+  </target>
+
+  <target name="doublyNestedFileset">
+    <javadoc packagenames="*" destdir="javadoc">
+      <sourcefiles>
+        <fileset dir="java/" includes="**/*.java"/>
+      </sourcefiles>
+    </javadoc>
+  </target>
+
+  <target name="doublyNestedFilesetNoPatterns">
+    <javadoc packagenames="*" destdir="javadoc">
+      <sourcefiles>
+        <fileset dir="java/"/>
+      </sourcefiles>
+    </javadoc>
+  </target>
+
   <path id="path.filelist">
     <pathelement location="."/>
     <filelist dir="java/">

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java?rev=392027&r1=392026&r2=392027&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javadoc.java Thu Apr  6 11:27:32 2006
@@ -25,7 +25,9 @@
 import java.io.FileReader;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.Iterator;
 import java.util.Locale;
 import java.util.StringTokenizer;
 import java.util.Vector;
@@ -41,6 +43,8 @@
 import org.apache.tools.ant.types.Path;
 import org.apache.tools.ant.types.PatternSet;
 import org.apache.tools.ant.types.Reference;
+import org.apache.tools.ant.types.ResourceCollection;
+import org.apache.tools.ant.types.resources.FileResource;
 import org.apache.tools.ant.util.FileUtils;
 import org.apache.tools.ant.util.JavaEnvUtils;
 
@@ -344,6 +348,23 @@
         }
     }
 
+    /**
+     * Holds a collection of ResourceCollections.
+     *
+     * <p>A separate kind of container is needed since this task
+     * contains special handling for FileSets that has to occur at
+     * task runtime.</p>
+     */
+    public class ResourceCollectionContainer {
+        private ArrayList rcs = new ArrayList();
+        public void add(ResourceCollection rc) {
+            rcs.add(rc);
+        }
+        private Iterator iterator() {
+            return rcs.iterator();
+        }
+    }
+
     private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
 
     /** The command line built to execute Javadoc. */
@@ -412,7 +433,8 @@
     private boolean old = false;
     private String executable = null;
 
-    private Vector fileSets = new Vector();
+    private ResourceCollectionContainer nestedSourceFiles
+        = new ResourceCollectionContainer();
     private Vector packageSets = new Vector();
 
     /**
@@ -1514,7 +1536,17 @@
      * @since 1.5
      */
     public void addFileset(FileSet fs) {
-        fileSets.addElement(fs);
+        createSourceFiles().add(fs);
+    }
+
+    /**
+     * Adds a container for resource collections.
+     *
+     * <p>All included files will be added as sourcefiles.</p>
+     * @since 1.7
+     */
+    public ResourceCollectionContainer createSourceFiles() {
+        return nestedSourceFiles;
     }
 
     /**
@@ -1594,7 +1626,7 @@
         }
 
         Vector sourceFilesToDoc = (Vector) sourceFiles.clone();
-        addFileSets(sourceFilesToDoc);
+        addSourceFiles(sourceFilesToDoc);
 
         if (packageList == null && packagesToDoc.size() == 0
             && sourceFilesToDoc.size() == 0) {
@@ -2036,15 +2068,21 @@
     }
 
     /**
-     * Add the files matched by the nested filesets to the Vector as
-     * SourceFile instances.
+     * Add the files matched by the nested source files to the Vector
+     * as SourceFile instances.
      *
-     * @since 1.5
+     * @since 1.7
      */
-    private void addFileSets(Vector sf) {
-        Enumeration e = fileSets.elements();
-        while (e.hasMoreElements()) {
-            FileSet fs = (FileSet) e.nextElement();
+    private void addSourceFiles(Vector sf) {
+        Iterator e = nestedSourceFiles.iterator();
+        while (e.hasNext()) {
+            ResourceCollection rc = (ResourceCollection) e.next();
+            if (!rc.isFilesystemOnly()) {
+                throw new BuildException("only file system based resources are"
+                                         + " supported by javadoc");
+            }
+            if (rc instanceof FileSet) {
+                FileSet fs = (FileSet) rc;
             if (!fs.hasPatterns() && !fs.hasSelectors()) {
                 fs = (FileSet) fs.clone();
                 fs.createInclude().setName("**/*.java");
@@ -2052,11 +2090,11 @@
                     fs.createInclude().setName("**/package.html");
                 }
             }
-            File baseDir = fs.getDir(getProject());
-            DirectoryScanner ds = fs.getDirectoryScanner(getProject());
-            String[] files = ds.getIncludedFiles();
-            for (int i = 0; i < files.length; i++) {
-                sf.addElement(new SourceFile(new File(baseDir, files[i])));
+            }
+            Iterator iter = rc.iterator();
+            while (iter.hasNext()) {
+                sf.addElement(new SourceFile(((FileResource) iter.next())
+                                             .getFile()));
             }
         }
     }

Modified: ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavadocTest.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavadocTest.java?rev=392027&r1=392026&r2=392027&view=diff
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavadocTest.java (original)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/JavadocTest.java Thu Apr  6 11:27:32 2006
@@ -118,4 +118,16 @@
     public void testNestedFilesetRefInPath() throws Exception {
         executeTarget("nestedFilesetRefInPath");
     }
+
+    public void testNestedFilesetNoPatterns() throws Exception {
+        executeTarget("nestedFilesetNoPatterns");
+    }
+
+    public void testDoublyNestedFileset() throws Exception {
+        executeTarget("doublyNestedFileset");
+    }
+
+    public void testDoublyNestedFilesetNoPatterns() throws Exception {
+        executeTarget("doublyNestedFilesetNoPatterns");
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org