Author: vsiveton
Date: Wed Mar  1 14:32:57 2006
New Revision: 382183

URL: http://svn.apache.org/viewcvs?rev=382183&view=rev
Log:
PR: MJAVADOC-59: Refactoring tag option
Updated documentation and tests. 

Modified:
    
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java
    maven/plugins/trunk/maven-javadoc-plugin/src/main/mdo/javadocOptions.mdo
    maven/plugins/trunk/maven-javadoc-plugin/src/site/apt/configuration.apt
    maven/plugins/trunk/maven-javadoc-plugin/src/site/site.xml
    
maven/plugins/trunk/maven-javadoc-plugin/src/test/projects/javadoc-plugin-test1/pom.xml

Modified: 
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java?rev=382183&r1=382182&r2=382183&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java
 (original)
+++ 
maven/plugins/trunk/maven-javadoc-plugin/src/main/java/org/apache/maven/plugin/javadoc/JavadocReport.java
 Wed Mar  1 14:32:57 2006
@@ -34,6 +34,7 @@
 import org.apache.maven.artifact.handler.ArtifactHandler;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.javadoc.options.Group;
+import org.apache.maven.plugin.javadoc.options.Tag;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.reporting.AbstractMavenReport;
 import org.apache.maven.reporting.MavenReportException;
@@ -322,7 +323,15 @@
     /**
      * Separates packages on the overview page into whatever groups you 
specify, one group per table.
      * See <a 
href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javadoc.html#group";>group</a>.
-     * It is a comma separated String.
+     * Example:
+     * <pre>
+     * &lt;groups&gt;
+     *   &lt;group&gt;
+     *     &lt;title&gt;Core Packages&lt;/title&gt;
+     *     &lt;packages&gt;org.apache.core&lt;/packages&gt;
+     *   &lt;/group&gt;
+     *  &lt;/groups&gt;
+     * </pre>
      *
      * @parameter expression="${groups}"
      */
@@ -468,25 +477,22 @@
     private String stylesheetfile;
 
     /**
-     * Contains a list of tag names, which will result in conversion to 
support the following, from the javadoc
-     * API:
-     * <br/>
      * Enables the Javadoc tool to interpret a simple, one-argument custom 
block tag tagname in doc comments.
      * See <a 
href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javadoc.html#tag";>tag</a>.
-     * It is a comma separated String.
+     * Example:
+     * <pre>
+     * &lt;tags&gt;
+     *   &lt;tag&gt;
+     *     &lt;name&gt;todo&lt;/name&gt;
+     *     &lt;placement&gt;a&lt;/placement&gt;
+     *     &lt;head&gt;To Do:&lt;/head&gt;
+     *   &lt;/tag&gt;
+     *  &lt;/tags&gt;
+     * </pre>
      *
      * @parameter expression="${tags}"
      */
-    private ArrayList tags;
-
-    /**
-     * Enables the Javadoc tool to interpret a simple, one-argument custom 
block tag tagname in doc comments.
-     * See <a 
href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javadoc.html#tag";>tag</a>.
-     * It is a comma separated String.
-     *
-     * @parameter expression="${tag}"
-     */
-    private String tag;
+    private Tag[] tags;
 
     /**
      * Specifies the class file that starts the taglet used in generating the 
documentation for that tag.
@@ -882,20 +888,26 @@
             addArgIf( arguments, splitindex, "-splitindex" );
             addArgIfNotEmpty( arguments, "-stylesheetfile", 
quotedPathArgument( stylesheetfile ) );
 
-            addArgIfNotEmpty( arguments, "-tag", quotedArgument( tag ), 1.4f, 
true );
+            addArgIfNotEmpty( arguments, "-taglet", quotedArgument( taglet ), 
1.4f );
+            addArgIfNotEmpty( arguments, "-tagletpath", quotedPathArgument( 
tagletpath ), 1.4f );
 
-            if ( tags != null && !tags.isEmpty() )
+            for ( int i = 0; i < tags.length; i++ )
             {
-                for ( Iterator it = tags.iterator(); it.hasNext(); )
+                if ( ( tags[i] == null ) || ( StringUtils.isEmpty( 
tags[i].getName() ) )
+                    || ( StringUtils.isEmpty( tags[i].getPlacement() ) ) )
                 {
-                    String tag = (String) it.next();
-
-                    addArgIfNotEmpty( arguments, "-tag", quotedArgument( tag 
), 1.4f, true );
+                    getLog().info( "A tag option is empty. Ignore this 
option." );
+                    continue;
+                }
+                String value = "\"" + tags[i].getName() + ":" + 
tags[i].getPlacement();
+                if ( !StringUtils.isEmpty( tags[i].getHead() ) )
+                {
+                    value += ":" + quotedArgument( tags[i].getHead() );
                 }
+                value+="\"";
+                addArgIfNotEmpty( arguments, "-tag", value, 1.4f, false );
             }
 
-            addArgIfNotEmpty( arguments, "-taglet", quotedArgument( taglet ), 
1.4f );
-            addArgIfNotEmpty( arguments, "-tagletpath", quotedPathArgument( 
tagletpath ), 1.4f );
             addArgIf( arguments, use, "-use" );
             addArgIf( arguments, version, "-version" );
             addArgIfNotEmpty( arguments, "-windowtitle", quotedArgument( 
windowtitle ) );
@@ -918,7 +930,10 @@
                 throw new MavenReportException( "Unable to write temporary 
file for command execution", e );
             }
             cmd.createArgument().setValue( "@options" );
-            optionsFile.deleteOnExit();
+            if ( !getLog().isDebugEnabled() )
+            {
+                optionsFile.deleteOnExit();
+            }
         }
 
         cmd.createArgument().setValue( "@files" );

Modified: 
maven/plugins/trunk/maven-javadoc-plugin/src/main/mdo/javadocOptions.mdo
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-javadoc-plugin/src/main/mdo/javadocOptions.mdo?rev=382183&r1=382182&r2=382183&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/main/mdo/javadocOptions.mdo 
(original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/main/mdo/javadocOptions.mdo 
Wed Mar  1 14:32:57 2006
@@ -32,6 +32,88 @@
         </field>
       </fields>
     </class>
+
+    <class>
+      <name>Tag</name>
+      <description>A Tag parameter.</description>
+      <version>1.0.0</version>
+      <fields>
+        <field>
+          <name>name</name>
+          <description>Name of the tag.</description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+        <field>
+          <name>head</name>
+          <description>Head of the tag.</description>
+          <version>1.0.0</version>
+          <type>String</type>
+          <identifier>true</identifier>
+        </field>
+      </fields>
+      <codeSegments>
+        <codeSegment>
+          <version>1.0.0</version>
+            <code><![CDATA[
+    /**
+     * Field placement
+     */
+    private String placement;
+
+    /**
+     * Get the placement.
+     */
+    public String getPlacement()
+    {
+        return this.placement;
+    }
+
+    /**
+     * Set a Placement. Should be a combinaison of the letters:
+     * <ul>
+     * <li> X (disable tag)</li>
+     * <li> a (all)</li>
+     * <li> o (overview)</li>
+     * <li> p (packages)</li>
+     * <li> t (types, that is classes and interfaces)</li>
+     * <li> c (constructors)</li>
+     * <li> m (methods)</li>
+     * <li> f (fields)</li>
+     * </ul>
+     *
+     * @param placement
+     * @throws IllegalArgumentException  if not a valid combinaison of the 
letters
+     */
+    public void setPlacement(String placement)
+      throws IllegalArgumentException
+    {
+        char[] chars = placement.toCharArray();
+        for ( int i = 0; i < chars.length; i++ )
+        {
+            switch ( chars[i] )
+            {
+                case 'X':
+                case 'a':
+                case 'o':
+                case 'p':
+                case 't':
+                case 'c':
+                case 'm':
+                case 'f':
+                    break;
+                default:
+                    throw new IllegalArgumentException( "Placement should be a 
combinaison of the letters 'Xaoptcmf'." );
+            }
+        }
+        this.placement = placement;
+    }
+
+          ]]></code>
+        </codeSegment>
+      </codeSegments>
+    </class>
   </classes>
 </model>
 

Modified: 
maven/plugins/trunk/maven-javadoc-plugin/src/site/apt/configuration.apt
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-javadoc-plugin/src/site/apt/configuration.apt?rev=382183&r1=382182&r2=382183&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/site/apt/configuration.apt 
(original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/site/apt/configuration.apt Wed 
Mar  1 14:32:57 2006
@@ -72,6 +72,7 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
         <configuration>
+          ...
           <groups>
             <group>
               <title>Core Packages</title>
@@ -92,3 +93,32 @@
 </project>
 -------------------
 
+*tag
+
+-------------------
+<project>
+  ...
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          ...
+          <tags>
+            <tag>
+              <name>todo</name>
+              <!-- Should be a combinaison of the letters Xaoptcmf -->
+              <placement>a</placement>
+              <head>To do something:</head>
+            </tag>
+          </tags>
+          ...
+        </configuration>
+      </plugin>
+    </plugins>
+  ...
+  </build>
+  ...
+</project>
+-------------------

Modified: maven/plugins/trunk/maven-javadoc-plugin/src/site/site.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-javadoc-plugin/src/site/site.xml?rev=382183&r1=382182&r2=382183&view=diff
==============================================================================
--- maven/plugins/trunk/maven-javadoc-plugin/src/site/site.xml (original)
+++ maven/plugins/trunk/maven-javadoc-plugin/src/site/site.xml Wed Mar  1 
14:32:57 2006
@@ -30,6 +30,7 @@
   <body>
     <links>
       <item name="Maven 2" href="http://maven.apache.org/maven2/"/>
+      <item name="Javadoc Tool" href="http://java.sun.com/j2se/javadoc/"/>
     </links>
 
     <menu name="Overview">

Modified: 
maven/plugins/trunk/maven-javadoc-plugin/src/test/projects/javadoc-plugin-test1/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-javadoc-plugin/src/test/projects/javadoc-plugin-test1/pom.xml?rev=382183&r1=382182&r2=382183&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-javadoc-plugin/src/test/projects/javadoc-plugin-test1/pom.xml
 (original)
+++ 
maven/plugins/trunk/maven-javadoc-plugin/src/test/projects/javadoc-plugin-test1/pom.xml
 Wed Mar  1 14:32:57 2006
@@ -58,16 +58,32 @@
           <source>true</source>
           <link>http://java.sun.com/j2se/1.4.2/docs/api, 
http://maven.apache.org/apidocs/</link>
           <groups>
-               <group>
-                 <title>Core Packages</title>
-                 <packages>org.apache.maven.plugin.javadoc.test1</packages>
-               </group>
-               <group>
-                 <title>Extension Packages</title>
-                 <packages>org.apache.maven.plugin.javadoc.test2</packages>
-               </group>
+            <group>
+              <title>Core Packages</title>
+              <packages>org.apache.maven.plugin.javadoc.test1</packages>
+            </group>
+            <group>
+              <title>Extension Packages</title>
+              <packages>org.apache.maven.plugin.javadoc.test2</packages>
+            </group>
           </groups>
-          <tag>.usage:a:Usage:, .todo:a:To do something:, .fixme:a:Fixme:</tag>
+          <tags>
+            <tag>
+              <name>.usage</name>
+              <placement>a</placement>
+              <head>Usage</head>
+            </tag>
+            <tag>
+              <name>.todo</name>
+              <placement>a</placement>
+              <head>To do something:</head>
+            </tag>
+            <tag>
+              <name>.fixme</name>
+              <placement>a</placement>
+              <head>Fixme</head>
+            </tag>
+          </tags>
         </configuration>
       </plugin>
     </plugins>


Reply via email to