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><fileset></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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]