ehatcher 2003/03/04 19:03:11
Modified: . WHATSNEW docs/manual/CoreTasks javadoc.html src/main/org/apache/tools/ant/taskdefs Javadoc.java Log: #17142 - enhance Javadoc tag element to allow a fileset Revision Changes Path 1.359 +3 -0 ant/WHATSNEW Index: WHATSNEW =================================================================== RCS file: /home/cvs/ant/WHATSNEW,v retrieving revision 1.358 retrieving revision 1.359 diff -u -r1.358 -r1.359 --- WHATSNEW 24 Feb 2003 08:25:18 -0000 1.358 +++ WHATSNEW 5 Mar 2003 03:03:11 -0000 1.359 @@ -234,6 +234,9 @@ possible to save the output into a property for use within the build file as was possible with <exec> in Ant 1.5 +* The <javadoc> task <tag> subelement has been enhanced to allow files + with tag mappings to be used. + Changes from Ant 1.5.1Beta1 to 1.5.1 ==================================== 1.23 +46 -29 ant/docs/manual/CoreTasks/javadoc.html Index: javadoc.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTasks/javadoc.html,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- javadoc.html 8 Nov 2002 16:10:12 -0000 1.22 +++ javadoc.html 5 Mar 2003 03:03:11 -0000 1.23 @@ -22,16 +22,16 @@ 1.2 and 1.4), 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(), javadoc cannot be run inside the -same VM as ant without breaking functionality. For this reason, this task +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 +<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> <p><i><b>DEPRECATION:</b> the javadoc2 task simply points to the javadoc task and it's @@ -462,7 +462,7 @@ <td align="center" valign="top">Yes</td> </tr> </table> - + <h4>excludepackage</h4> <p>Same as one entry in the list given by <code>excludepackagenames</code>.</p> @@ -523,7 +523,7 @@ </tr> <tr> <td valign="top">offline</td> - <td valign="top">True if this link is not available online at the time of + <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> @@ -534,8 +534,8 @@ <td align="center" valign="top">Only if the offline attribute is true</td> </tr> </table> - -<h4><a name="groupelement">group</a></h4> + +<h4><a name="groupelement">group</a></h4> <p>Separates packages on the overview page into whatever groups you specify, one group per table. This performs the same role as the group attribute. You can use either syntax (or both at once), but with the @@ -566,15 +566,15 @@ <code><package></code> elements as for the main task.</p> <h4>doclet</h4> -<p>The doclet nested element is used to specify the doclet that javadoc will +<p>The doclet nested element is used to specify the doclet that javadoc will use to process the input source files. A number of the standard javadoc arguments are actually arguments of the standard doclet. If these are specified in the javadoc -task's attributes, they will be passed to the doclet specified in the -<code><doclet></code> nested element. Such attributes should only be specified, +task's attributes, they will be passed to the doclet specified in the +<code><doclet></code> nested element. Such attributes should only be specified, therefore, if they can be interpreted by the doclet in use.</p> <p>If the doclet requires additional parameters, these can be specified with -<code><param></code> elements within the <code><doclet></code> +<code><param></code> elements within the <code><doclet></code> element. These paramaters are restricted to simple strings. An example usage of the doclet element is shown below:</p> @@ -587,7 +587,7 @@ </javadoc> </pre> -<h4><a name="tagelement">tag</a></h4> +<h4><a name="tagelement">tag</a></h4> <p>The tag nested element is used to specify custom tags. This option is only available with Java 1.4.</p> @@ -602,12 +602,12 @@ <tr> <td valign="top">name</td> <td valign="top">Name of the tag (e.g. <code>todo</code>)</td> - <td align="center" valign="top">Yes</td> + <td align="center" valign="top">Yes, unless the <code>dir</code> attribute is specified.</td> </tr> <tr> <td valign="top">description</td> <td valign="top">Description for tag (e.g. <code>To do:</code>)</td> - <td align="center" valign="top">Yes</td> + <td align="center" valign="top">Yes, unless the <code>dir</code> attribute is specified.</td> </tr> <tr> <td valign="top">enabled</td> @@ -617,15 +617,32 @@ <tr> <td valign="top">scope</td> <td valign="top">Scope for the tag - the elements in which it can be used. This - is a comma separated list of some of the elements: <code>overview</code>, - <code>packages</code>, <code>types</code>, <code>constructors</code>, + is a comma separated list of some of the elements: <code>overview</code>, + <code>packages</code>, <code>types</code>, <code>constructors</code>, <code>methods</code>, <code>fields</code> or the default, <code>all</code>.</td> <td align="center" valign="top">No</td> </tr> + <tr> + <td valign="top">dir</td> + <td valign="top">If this attribute is specified, this element will behave as an implicit + <a href="../CoreTypes/fileset.html">fileset</a>. The files included by this fileset should + contain each tag definition on a separate line, as described in the + <a href="http://java.sun.com/j2se/1.4.1/docs/tooldocs/windows/javadoc.html#tag">javadoc reference guide</a>: + <p/> + <code> + ejb.bean:t:"XDoclet EJB Tag"<br/> + todo:a:"To Do"<br/> + </code> + <p/> + Note: If this attribute is specified, all the other attributes in this + element will be ignored. + </td> + <td align="center" valign="top">No</td> + </tr> </table> -<h4><a name="tagletelement">taglet</a></h4> -<p>The taglet nested element is used to specify custom taglets. This option is +<h4><a name="tagletelement">taglet</a></h4> +<p>The taglet nested element is used to specify custom taglets. This option is only available with Java 1.4.</p> <h5>Parameters</h5> @@ -637,7 +654,7 @@ </tr> <tr> <td valign="top">name</td> - <td valign="top">The name of the taglet class + <td valign="top">The name of the taglet class (e.g. <code>com.sun.tools.doclets.ToDoTaglet</code>)</td> <td align="center" valign="top">Yes</td> </tr> @@ -675,10 +692,10 @@ <link offline="true" href="http://java.sun.com/products/jdk/1.2/docs/api/" packagelistLoc="C:\tmp"/> <link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/> </javadoc></pre> - + <p>is the same as</p> -<pre> <javadoc +<pre> <javadoc destdir="docs/api" author="true" version="true" @@ -700,8 +717,8 @@ </javadoc></pre> <p>or</p> - -<pre> <javadoc + +<pre> <javadoc destdir="docs/api" author="true" version="true" @@ -723,7 +740,7 @@ </javadoc></pre> <hr> -<p align="center">Copyright © 2000-2002 Apache Software Foundation. All rights +<p align="center">Copyright © 2000-2003 Apache Software Foundation. All rights Reserved.</p> </body> 1.109 +30 -4 ant/src/main/org/apache/tools/ant/taskdefs/Javadoc.java Index: Javadoc.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Javadoc.java,v retrieving revision 1.108 retrieving revision 1.109 diff -u -r1.108 -r1.109 --- Javadoc.java 19 Feb 2003 12:30:55 -0000 1.108 +++ Javadoc.java 5 Mar 2003 03:03:11 -0000 1.109 @@ -58,6 +58,8 @@ import java.io.FilenameFilter; import java.io.IOException; import java.io.PrintWriter; +import java.io.BufferedReader; +import java.io.FileReader; import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; @@ -1244,7 +1246,7 @@ /** * Class representing a -tag argument. */ - public class TagArgument { + public class TagArgument extends FileSet { /** Name of the tag. */ private String name = null; /** Description of the tag to place in the JavaDocs. */ @@ -1468,7 +1470,7 @@ */ public void setSource(String source) { if (!javadoc4) { - log ("-source option not supported on JavaDoc < 1.4", + log ("-source option not supported on JavaDoc < 1.4", Project.MSG_VERBOSE); } this.source = source; @@ -1744,8 +1746,32 @@ Object element = e.nextElement(); if (element instanceof TagArgument) { TagArgument ta = (TagArgument) element; - toExecute.createArgument().setValue ("-tag"); - toExecute.createArgument().setValue (ta.getParameter()); + File tagDir = ta.getDir(getProject()); + if (tagDir == null ) { + // The tag element is not used as a fileset, + // but specifies the tag directly. + toExecute.createArgument().setValue ("-tag"); + toExecute.createArgument().setValue (ta.getParameter()); + } else { + // The tag element is used as a fileset. Parse all the files and + // create -tag arguments. + DirectoryScanner tagDefScanner = ta.getDirectoryScanner(getProject()); + String[] files = tagDefScanner.getIncludedFiles(); + for (int i = 0; i < files.length; i++) { + File tagDefFile = new File( tagDir, files[i] ); + try { + BufferedReader in = new BufferedReader( new FileReader(tagDefFile) ); + String line = null; + while( (line = in.readLine()) != null ) { + toExecute.createArgument().setValue ("-tag"); + toExecute.createArgument().setValue (line); + } + in.close(); + } catch( IOException ioe ) { + throw new BuildException( "Couldn't read tag file from " + tagDefFile.getAbsolutePath(), ioe ); + } + } + } } else { ExtensionInfo tagletInfo = (ExtensionInfo) element; toExecute.createArgument().setValue("-taglet");