aheritier    2004/08/21 11:42:05

  Modified:    javadoc  plugin.jelly plugin.properties project.xml
               javadoc/src/plugin-test/test01 maven.xml
               javadoc/src/plugin-test/test05 project.xml
               javadoc/xdocs changes.xml
  Added:       javadoc  project.properties
               javadoc/src/main/org/apache/maven/javadoc
                        JavadocWarningsTextToXml.java
               javadoc/src/plugin-resources javadoc-warnings.jsl
               javadoc/src/test report.txt
               javadoc/src/test/org/apache/maven/javadoc
                        JavadocWarningsTextToXmlTest.java
  Log:
  MPJAVADOC-35  : Add javadoc warning report formatted similar to Checkstyle report
  TODO : Add a plugin test case
  
  Revision  Changes    Path
  1.56      +32 -1     maven-plugins/javadoc/plugin.jelly
  
  Index: plugin.jelly
  ===================================================================
  RCS file: /home/cvs/maven-plugins/javadoc/plugin.jelly,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- plugin.jelly      21 Aug 2004 14:37:41 -0000      1.55
  +++ plugin.jelly      21 Aug 2004 18:42:04 -0000      1.56
  @@ -51,12 +51,16 @@
   maven.compile.encoding            = [${maven.compile.encoding}]
   maven.compile.src.set             = 
[${context.getAntProject().getReferences().get('maven.compile.src.set')}]
   ==================================
  +=== docs properties            ===
  +==================================
  +maven.docs.outputencoding         = [${maven.docs.outputencoding}]
  +==================================
   === javadoc plugin properties  ===
   ==================================
   maven.javadoc.additionalparam     = [${maven.javadoc.additionalparam}]
   maven.javadoc.author              = [${maven.javadoc.author}]
   maven.javadoc.customtags          = [${maven.javadoc.customtags}]
  -maven.javadoc.bottom           = [${maven.javadoc.bottom}]
  +maven.javadoc.bottom              = [${maven.javadoc.bottom}]
   maven.javadoc.debug               = [${maven.javadoc.debug}]
   maven.javadoc.destdir             = [${maven.javadoc.destdir}]
   maven.javadoc.doclet              = [${maven.javadoc.doclet}]
  @@ -180,6 +184,11 @@
         </j:if>
         
       </define:tag>
  +    <define:jellybean
  +      name="javadocwarnings"
  +      className="org.apache.maven.javadoc.JavadocWarningsTextToXml"
  +      method="build"
  +    />    
     </define:taglib>
   
   
  @@ -205,6 +214,12 @@
           link="javadoc"
           description="Report on the generation of JavaDoc."
           />
  +      <doc:registerReport
  +        name="JavaDoc Warnings Report"
  +        pluginName=""
  +        link="javadoc-warnings-report"
  +        description="Formatted report of JavaDoc warnings."
  +        />        
       </j:if>
     </goal>
     
  @@ -216,6 +231,7 @@
     
         <doc:deregisterReport name="JavaDocs"/>
         <doc:deregisterReport name="JavaDoc Report"/>
  +      <doc:deregisterReport name="JavaDoc Warnings Report"/>
         
       </j:if>    
     </goal>
  @@ -438,6 +454,21 @@
           section="Javadoc Report"
           inputText="${inputText}"
           output="${genDocs}/javadoc.xml"/>
  +
  +      <javadoc:javadocwarnings
  +        verbose="${maven.javadoc.debug}"
  +        inputFileName="${internal.javadoc.working.dir}/report.txt"
  +        outputFileName="${internal.javadoc.working.dir}/javadoc-warnings.xml"
  +        outputEncoding="${maven.docs.outputencoding}"
  +        />
  +      <doc:jsl
  +        input="${internal.javadoc.working.dir}/javadoc-warnings.xml"
  +        output="javadoc-warnings-report.xml"
  +        stylesheet="${plugin.resources}/javadoc-warnings.jsl"
  +        encoding="${maven.docs.outputencoding}"
  +        outputMode="xml"
  +        prettyPrint="true"
  +      />
         
         <ant:delete dir="${internal.javadoc.src.tmp}"/>
         
  
  
  
  1.18      +1 -1      maven-plugins/javadoc/plugin.properties
  
  Index: plugin.properties
  ===================================================================
  RCS file: /home/cvs/maven-plugins/javadoc/plugin.properties,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- plugin.properties 21 Aug 2004 14:37:41 -0000      1.17
  +++ plugin.properties 21 Aug 2004 18:42:04 -0000      1.18
  @@ -51,4 +51,4 @@
   maven.javadoc.use                   = true
   maven.javadoc.useexternalfile       = yes
   maven.javadoc.version               = true
  -maven.javadoc.windowtitle           = ${pom.name} ${pom.currentVersion} API
  \ No newline at end of file
  +maven.javadoc.windowtitle           = ${pom.name} ${pom.currentVersion} API
  
  
  
  1.45      +32 -0     maven-plugins/javadoc/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/maven-plugins/javadoc/project.xml,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- project.xml       21 Aug 2004 14:27:17 -0000      1.44
  +++ project.xml       21 Aug 2004 18:42:04 -0000      1.45
  @@ -124,4 +124,36 @@
         <version>2.0</version>
       </dependency>
     </dependencies>
  +  <build> 
  +    <sourceDirectory>src/main</sourceDirectory>
  +    <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
  +    <unitTest>
  +      <includes>
  +        <include>**/*Test.java</include>
  +      </includes>
  +      <resources>
  +        <resource>
  +          <directory>src/test</directory>
  +          <includes>
  +            <include>**/*.txt</include>
  +          </includes>
  +        </resource>
  +      </resources>
  +    </unitTest>
  +    <resources> 
  +      <resource> 
  +        <directory>${basedir}/src/plugin-resources</directory> 
  +        <targetPath>plugin-resources</targetPath> 
  +      </resource> 
  +      <resource> 
  +        <directory>${basedir}</directory> 
  +        <includes> 
  +          <include>plugin.jelly</include> 
  +          <include>plugin.properties</include> 
  +          <include>project.properties</include> 
  +          <include>project.xml</include>
  +        </includes> 
  +      </resource> 
  +    </resources> 
  +  </build> 
   </project>
  
  
  
  1.8       +1 -0      maven-plugins/javadoc/project.properties
  
  
  
  
  1.1                  
maven-plugins/javadoc/src/main/org/apache/maven/javadoc/JavadocWarningsTextToXml.java
  
  Index: JavadocWarningsTextToXml.java
  ===================================================================
  package org.apache.maven.javadoc;
  
  /* ====================================================================
   *   Copyright 2001-2004 The Apache Software Foundation.
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *   limitations under the License.
   * ====================================================================
   */
  
  import org.apache.commons.lang.StringEscapeUtils;
  import org.apache.commons.lang.StringUtils;
  
  import java.io.BufferedReader;
  import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.FileOutputStream;
  import java.io.FileReader;
  import java.io.IOException;
  import java.io.OutputStreamWriter;
  import java.io.PrintWriter;
  import java.io.UnsupportedEncodingException;
  
  import java.util.ArrayList;
  import java.util.Iterator;
  import java.util.LinkedHashSet;
  import java.util.List;
  import java.util.Map;
  import java.util.Set;
  import java.util.TreeMap;
  
  
  /**
   * Converts the javadoc warnings into an xml (xdoc format) file.
   *
   * @author Steven Caswell (stevencaswell at apache.org)
   * @version $Id: JavadocWarningsTextToXml.java,v 1.1 2004/08/21 18:42:04 aheritier 
Exp $
   */
  public class JavadocWarningsTextToXml {
    //~ Static fields/initializers ----------------------------------------------
  
    /** Number of args on the command line.*/
    private static final int ARGS_LENGTH = 3;
  
    /** XML padding. */
    private static final int PADDING = 10;
  
    //~ Instance fields ---------------------------------------------------------
  
    /** Full path for the input file (javadoc plain text report). */
    private String inputFileName;
  
    /** XML encoding. */
    private String outputEncoding;
  
    /** Full path for the generated XDoc file. */
    private String outputFileName;
  
    /** Verbose flag. */
    private boolean verbose = false;
  
    //~ Methods -----------------------------------------------------------------
  
    /**
     * Invokes an instance of <code>JavadocWarningsTextToXml</code> from the
     * command line.  The following command line arguments are expected in this
     * order:
     * 
     * <ol>
     * <li>
     * input file name
     * </li>
     * <li>
     * output file name
     * </li>
     * <li>
     * output encoding
     * </li>
     * </ol>
     * 
     *
     * @param args the command line arguments
     *
     * @throws IOException if an exception occurs opening, reading, or writing
     *         files
     * @throws IllegalArgumentException if arguments aren't correctly setted.
     */
    public static void main(final String[] args)
      throws IOException {
      if (args.length != ARGS_LENGTH) {
        throw new IllegalArgumentException("Wrong number of arguments");
      }
  
      JavadocWarningsTextToXml runner = new JavadocWarningsTextToXml();
      int                      i = 0;
      runner.setInputFileName(args[i++]);
      runner.setOutputFileName(args[i++]);
      runner.setOutputEncoding(args[i++]);
      runner.build();
    }
  
    /**
     * Sets the name of the input file. This file is expected to be a report
     * generated by Javadoc.
     *
     * @param inputFileName the input file name
     */
    public void setInputFileName(final String inputFileName) {
      if (this.isVerbose()) {
        System.out.println("Setting input file name: '" + inputFileName + "'");
      }
  
      this.inputFileName = inputFileName;
    }
  
    /**
     * Returns the name of the input file.
     *
     * @return the inptu file name
     */
    public String getInputFileName() {
      return this.inputFileName;
    }
  
    /**
     * Sets the output encoding.
     *
     * @param outputEncoding the output encoding
     */
    public void setOutputEncoding(final String outputEncoding) {
      this.outputEncoding = outputEncoding;
    }
  
    /**
     * Returns the output encoding.
     *
     * @return the output encoding
     */
    public String getOutputEncoding() {
      return this.outputEncoding;
    }
  
    /**
     * Sets the output file name.
     *
     * @param outputFileName the output file name
     */
    public void setOutputFileName(final String outputFileName) {
      if (this.isVerbose()) {
        System.out.println("Setting output file name: '" + outputFileName + "'");
      }
  
      this.outputFileName = outputFileName;
    }
  
    /**
     * Returns the name of the output file.
     *
     * @return the output file name
     */
    public String getOutputFileName() {
      return this.outputFileName;
    }
  
    /**
     * Sets the verbose mode. <br>
     *
     * @param verbose the verbose mode.
     */
    public void setVerbose(final boolean verbose) {
      this.verbose = verbose;
  
      if (this.isVerbose()) {
        System.out.println("verbose is true");
      }
    }
  
    /**
     * Builds the xml file from the javadoc report input.
     *
     * @throws FileNotFoundException if the input file cannot be opened for
     *         reading or the output file cannot be opened for writing
     * @throws IOException if an error occurs reading or writing
     * @throws UnsupportedEncodingException if an unknown encoding was specified
     * @throws IllegalArgumentException If a needed property isn't setted.
     */
    public void build()
      throws FileNotFoundException, 
        IOException, 
        UnsupportedEncodingException {
      if (StringUtils.isBlank(getInputFileName())) {
        throw new IllegalArgumentException("Input file name must be specified");
      }
  
      if (StringUtils.isBlank(getOutputFileName())) {
        throw new IllegalArgumentException("Output file name must be specified");
      }
  
      String[] lines   = this.readInput();
      Map      fileMap = this.buildMap(lines);
      this.buildOutput(fileMap);
    }
  
    /**
     * Returns the verbose.
     *
     * @return Returns the verbose.
     */
    public boolean isVerbose() {
      return verbose;
    }
  
    private Map buildMap(final String[] input) {
      if (this.isVerbose()) {
        System.out.println(
          "Building map from " + input.length + " input line(s)"
        );
      }
  
      Map files = new TreeMap();
  
      for (int i = 0; i < input.length; i++) {
        String line = input[i];
  
        // Break up line into pieces
        int    javaDocStart          = line.indexOf("[javadoc]");
        int    fileNameStart         = javaDocStart += PADDING;
        int    warningStart          = line.indexOf("warning - ");
        int    fileNameEnd           = warningStart - 1;
        String fileNameAndLineNumber =
          line.substring(
            fileNameStart,
            fileNameEnd
          );
        int lastColon       = fileNameAndLineNumber.lastIndexOf(':');
        int nextToLastColon =
          fileNameAndLineNumber.lastIndexOf(
            ':',
            lastColon - 1
          );
        String fileName = fileNameAndLineNumber.substring(
            0,
            nextToLastColon
          );
        String lineNumber =
          fileNameAndLineNumber.substring(
            nextToLastColon + 1,
            lastColon
          );
        int    msgStart = warningStart + PADDING;
        String msg = line.substring(msgStart);
  
        // Get the messages for the file
        Map fileMessages = (Map) files.get(fileName);
  
        if (fileMessages == null) {
          fileMessages = new TreeMap();
          files.put(
            fileName,
            fileMessages
          );
        }
  
        // Get the messages for the line
        Set lineMessages = (Set) fileMessages.get(new Integer(lineNumber));
  
        if (lineMessages == null) {
          lineMessages = new LinkedHashSet();
          fileMessages.put(
            new Integer(lineNumber),
            lineMessages
          );
        }
  
        // Put the message into the line messages set
        lineMessages.add(msg);
      }
  
      return files;
    }
  
    private void buildOutput(final Map fileMap)
      throws FileNotFoundException, 
        UnsupportedEncodingException {
      File output = new File(this.outputFileName);
      File dir = output.getParentFile();
  
      if (dir != null) {
        dir.mkdirs();
      }
  
      PrintWriter out =
        new PrintWriter(
          new OutputStreamWriter(
            new FileOutputStream(output),
            this.getOutputEncoding()
          )
        );
      writeOutput(
        fileMap,
        out
      );
      out.flush();
      out.close();
    }
  
    private String[] readInput()
      throws FileNotFoundException, 
        IOException {
      if (this.isVerbose()) {
        System.out.println("Reading '" + getInputFileName() + "'");
      }
  
      BufferedReader reader =
        new BufferedReader(new FileReader(getInputFileName()));
  
      List           lines = new ArrayList();
      String         line  = null;
  
      while ((line = reader.readLine()) != null) {
        // Look for lines containing the string "warning - "
        if (line.indexOf("warning - ") >= 0) {
          lines.add(line);
        }
      }
  
      reader.close();
  
      if (this.isVerbose()) {
        System.out.println("Read " + lines.size() + " line(s) from input file");
      }
  
      return (String[]) lines.toArray(new String[lines.size()]);
    }
  
    private void writeOutput(
      final Map         fileMap,
      final PrintWriter out
    ) {
      if (this.isVerbose()) {
        System.out.println("Writing to output file '" + this.outputFileName);
      }
  
      out.println(
        "<?xml version=\"1.0\" encoding=\"" + this.getOutputEncoding() + "\"?>"
      );
      out.println("<javadoc>");
  
      for (
        Iterator fileMapIterator = fileMap.keySet()
                                          .iterator();
          fileMapIterator.hasNext();
      ) {
        String fileName = (String) fileMapIterator.next();
        out.println("<file name=\"" + fileName + "\">");
  
        Map fileMessages = (Map) fileMap.get(fileName);
  
        for (
          Iterator fileMessagesIterator = fileMessages.entrySet()
                                                      .iterator();
            fileMessagesIterator.hasNext();
        ) {
          Map.Entry entry        = (Map.Entry) fileMessagesIterator.next();
          Integer   lineNumber   = (Integer) entry.getKey();
          Set       lineMessages = (Set) entry.getValue();
  
          for (
            Iterator lineMessagesIterator = lineMessages.iterator();
              lineMessagesIterator.hasNext();
          ) {
            String msg = (String) lineMessagesIterator.next();
            out.println(
              "<error line=\"" + lineNumber
              + "\" severity=\"warning\" message=\""
              + StringEscapeUtils.escapeXml(msg) + "\"/>"
            );
          }
        }
  
        out.println("</file>");
      }
  
      out.println("</javadoc>");
  
      if (this.isVerbose()) {
        System.out.println("Finished writing output file");
      }
    }
  }
  
  
  
  1.1                  maven-plugins/javadoc/src/plugin-resources/javadoc-warnings.jsl
  
  Index: javadoc-warnings.jsl
  ===================================================================
  <?xml version="1.0"?>
  
  <!--
   * ========================================================================
   * 
   * Copyright 2004 The Apache Software Foundation.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *   http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   * 
   * ========================================================================
  -->
  
  <jsl:stylesheet
    select="$doc"
    xmlns:j="jelly:core"
    xmlns:jsl="jelly:jsl"
    xmlns:util="jelly:util"
    xmlns:x="jelly:xml"
    xmlns:doc="doc"
    xmlns="dummy" trim="false">
  
    <!-- This needs to be instantiated here to be available in the template matches -->
    <j:useBean var="mavenTool" class="org.apache.maven.util.MavenTool"/>
    <j:useBean var="htmlescape" class="org.apache.velocity.anakia.Escape"/>
    <j:useBean var="fileutil" class="org.apache.velocity.texen.util.FileUtil"/>
    <j:useBean var="pathtool" class="org.apache.maven.util.DVSLPathTool"/>
  
    <jsl:template match="javadoc">
      <document>
  
        <properties>
          <title>JavaDoc Audit Results</title>
        </properties>
  
        <body>
          <section name="JavaDoc Warnings">
            <p>
              The following document contains JavaDoc warnings.
            </p>
          </section>
  
          <section name="Summary">
            <j:set var="fileCount"><x:expr select="count(file)"/></j:set>
            <j:set var="errorCount"><x:expr select="count(file/error)"/></j:set>
            <table>
              <tr>
                <th>Files</th>
                <th width="75">Errors</th>
              </tr>
              <tr>
                <td><doc:formatAsNumber string="${fileCount}" pattern="0"/></td>
                <td><doc:formatAsNumber string="${errorCount}" pattern="0"/></td>
              </tr>
            </table>
          </section>
  
          <section name="Files">
            <table>
              <tr>
                <th>Files</th>
                <th width="75">Errors</th>
              </tr>
              <j:set var="fullSrcDir" value="${pom.build.sourceDirectory}"/>
              <j:set var="srcDir" 
value="${fileutil.file(fullSrcDir).getCanonicalPath()}"/>
              <j:set var="srcDirLength" value="${srcDir.length() + 1}"/>
              <x:set var="files" select="file" sort="@name"/>
              <!-- x:forEach is busted -->
              <j:forEach var="file" items="${files}">
                <!-- Type coercion doesn't work very well in jexl. -->
                <j:set var="name" value="${file.attribute('name').getValue()}"/>
                <j:set var="name" 
value="${name.substring(mavenTool.toInteger(srcDirLength.toString()))}"/>
                <util:replace var="name" value="${name}" oldChar="\\" newChar="/"/>
                <!--- +1 is for the trailing slash above -->
                <j:set var="errorCount"><x:expr select="count($file/error)"/></j:set>
                
                <j:if test="${errorCount != 0}">
                  <tr>
                    <td>
                      <a href="#${name}">${name}</a>
                    </td>
                    <td><doc:formatAsNumber string="${errorCount}" pattern="0"/></td>
                  </tr>
                </j:if>
              </j:forEach>
            </table>
  
            <j:forEach var="file" items="${files}">
              <x:set var="errorCount" select="count($file/error)"/>
              <j:if test="${errorCount != 0}">
                <j:set var="name" value="${file.attribute('name').getValue()}"/>
                <j:set var="name" 
value="${name.substring(mavenTool.toInteger(srcDirLength.toString()))}"/>
                <util:replace var="name" value="${name}" oldChar="\\" newChar="/"/>
                
                <subsection name="${name}">
                  <table>
                    <tr>
                      <th>Error</th>
                      <th width="75">Line</th>
                    </tr>
                    <x:set var="errors" select="$file/error"/>
                    <j:forEach var="error" items="${errors}">
                      <tr>
                        <td>
                          <j:set var="errorMessage" 
value="${error.attribute('message').getValue()}"/>
  <!--                        {htmlescape.getText(errorMessage)}-->${errorMessage}
                        </td>
                        <td>
                          <j:set var="line" 
value="${error.attribute('line').getValue()}"/>
                          <j:set var="lastIndex" value="${name.lastIndexOf('.java')}"/>
                          <j:choose>
                            <j:when test="${lastIndex > 0}">
                              <j:set var="index" 
value="${mavenTool.toInteger(lastIndex.toString())}"/>
                              <j:set var="nameWithoutJavaExtension" 
value="${name.substring(0, index)}"/>
                              <util:replace var="nameWithoutJavaExtension" 
value="${nameWithoutJavaExtension}" oldChar="\\" newChar="/"/>
                              <a 
href="xref/${nameWithoutJavaExtension}.html#${line}">${line}</a>
                            </j:when>
                            <j:otherwise>
                              ${line}
                            </j:otherwise>
                          </j:choose>
                        </td>
                      </tr>
                    </j:forEach>
                  </table>
                </subsection>
              </j:if>
            </j:forEach>
          </section>
        </body>
      </document>
    </jsl:template>
  </jsl:stylesheet>
  
  
  
  1.2       +1 -1      maven-plugins/javadoc/src/plugin-test/test01/maven.xml
  
  Index: maven.xml
  ===================================================================
  RCS file: /home/cvs/maven-plugins/javadoc/src/plugin-test/test01/maven.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- maven.xml 9 Jul 2004 20:30:32 -0000       1.1
  +++ maven.xml 21 Aug 2004 18:42:04 -0000      1.2
  @@ -20,7 +20,7 @@
            xmlns:j="jelly:core"
            xmlns:assert="assert"
            xmlns:ant="jelly:ant">
  -         
  +        
     <goal name="testPlugin">
       <delete dir="${maven.build.dir}" failonerror="false"/>
       <delete file="${maven.build.dir}/${maven.final.name}_javadoc.jar" 
failonerror="false"/>
  
  
  
  1.2       +1 -0      maven-plugins/javadoc/src/plugin-test/test05/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/maven-plugins/javadoc/src/plugin-test/test05/project.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- project.xml       29 Jul 2004 22:59:24 -0000      1.1
  +++ project.xml       21 Aug 2004 18:42:05 -0000      1.2
  @@ -62,4 +62,5 @@
     <build>
       <sourceDirectory>src/main</sourceDirectory>
     </build>
  +
   </project>
  
  
  
  1.1                  maven-plugins/javadoc/src/test/report.txt
  
  Index: report.txt
  ===================================================================
    [javadoc] Generating Javadoc
    [javadoc] Javadoc execution
    [javadoc] Loading source files for package org.apache.maven...
    [javadoc] [parsing started 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc1.java]
    [javadoc] [parsing completed 120ms]
    [javadoc] [parsing started 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java]
    [javadoc] [parsing completed 20ms]
    [javadoc] Constructing Javadoc information...
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc1.java:145:
 method3() is already defined in org.apache.maven.Javadoc1
    [javadoc]   public void method3()
    [javadoc]               ^
    [javadoc] Standard Doclet version 1.4.1
    [javadoc] 
    [javadoc] Generating 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\target\docs\apidocs\constant-values.html...
    [javadoc] Copying file 
C:\apache\maven-1.0-rc3\plugins\maven-javadoc-plugin-1.6.1\plugin-resources\stylesheet.css
 to file 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\target\docs\apidocs\stylesheet.css...
    [javadoc] Building tree for all the packages and classes...
    [javadoc] [loading C:\Java\j2sdk1.4.1_02\jre\lib\rt.jar(java/lang/Object.class)]
    [javadoc] Building index for all the packages and classes...
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc1.java:8:
 warning - @inheritDoc used but method1() does not override or implement any method.
    [javadoc] Generating 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\target\docs\apidocs\index-all.html...
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 Tag @link: Malformed: Javadoc1#method1(
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 warning - Tag @link: malformed: "Javadoc1#method1("
    [javadoc] Building index for all classes...
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc1.java:8:
 warning - @inheritDoc used but method1() does not override or implement any method.
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc1.java:8:
 warning - @inheritDoc used but method1() does not override or implement any method.
    [javadoc] Generating 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\target\docs\apidocs\org\apache\maven\Javadoc1.html...
    [javadoc] [loading 
C:\Java\j2sdk1.4.1_02\jre\lib\rt.jar(java/io/Serializable.class)]
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 warning - Tag @link: malformed: "Javadoc1#method1("
    [javadoc] Generating 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\target\docs\apidocs\org\apache\maven\Javadoc2.html...
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 Tag @link: Malformed: Javadoc1#method1(
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 warning - Tag @link: malformed: "Javadoc1#method1("
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:8:
 warning - @todo is an unknown tag.
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 Tag @link: Malformed: Javadoc1#method1(
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 warning - Tag @link: malformed: "Javadoc1#method1("
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 warning - Tag @link: malformed: "Javadoc1#method1("
    [javadoc] 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\src\main\org\apache\maven\Javadoc2.java:15:
 warning - Tag @link: malformed: "Javadoc1#method1("
    [javadoc] Generating 
C:\Steve\Java\dev\maven-plugin-dev\javadoc\cvs-sandbox\maven-plugins\javadoc\src\plugin-test\test05\target\docs\apidocs\help-doc.html...
    [javadoc] [done in 4065 ms]
    [javadoc] 11 warnings
  
  
  
  1.1                  
maven-plugins/javadoc/src/test/org/apache/maven/javadoc/JavadocWarningsTextToXmlTest.java
  
  Index: JavadocWarningsTextToXmlTest.java
  ===================================================================
  package org.apache.maven.javadoc;
  
  /* ====================================================================
   *   Copyright 2001-2004 The Apache Software Foundation.
   *
   *   Licensed under the Apache License, Version 2.0 (the "License");
   *   you may not use this file except in compliance with the License.
   *   You may obtain a copy of the License at
   *
   *       http://www.apache.org/licenses/LICENSE-2.0
   *
   *   Unless required by applicable law or agreed to in writing, software
   *   distributed under the License is distributed on an "AS IS" BASIS,
   *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *   See the License for the specific language governing permissions and
   *   limitations under the License.
   * ====================================================================
   */
  
  import junit.framework.Test;
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  
  import junit.textui.TestRunner;
  
  import java.io.BufferedReader;
  import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.FileReader;
  
  
  /**
   * Test case.
   *
   * @author Steven Caswell
   * @version $Id: JavadocWarningsTextToXmlTest.java,v 1.1 2004/08/21 18:42:05 
aheritier Exp $
   */
  public class JavadocWarningsTextToXmlTest
    extends TestCase {
    //~ Static fields/initializers ----------------------------------------------
  
    private static final String INPUT_FILE_NAME_EXCEPTION =
      "Input file name must be specified";
  
    private static final String OUTPUT_FILE_NAME_EXCEPTION =
      "Output file name must be specified";
  
    //~ Constructors ------------------------------------------------------------
  
    /**
     * Creates a new JavadocWarningsTextToXmlTest object.
     *
     */
    public JavadocWarningsTextToXmlTest(final String name) {
      super(name);
    }
  
    //~ Methods -----------------------------------------------------------------
  
    public static void main(final String[] main) {
      TestRunner.run(suite());
    }
  
  
    public static Test suite() {
      return new TestSuite(JavadocWarningsTextToXmlTest.class);
    }
  
    /**
     * Initialize per test data
     *
     * @throws Exception when there is an unexpected problem
     */
    public void setUp()
      throws Exception {
      String baseDir = System.getProperty("basedir");
      System.out.println("Base dir : " + baseDir);
      assertNotNull(
        "The system property basedir was not defined.",
        baseDir
      );
    }
  
    public void testBuild()
      throws Exception {
      JavadocWarningsTextToXml bean = new JavadocWarningsTextToXml();
      bean.setVerbose(true);
      bean.setInputFileName("target/test-classes/report.txt");
      bean.setOutputFileName("test.xml");
      bean.setOutputEncoding("ISO-8859-1");
      bean.build();
  
      // Read and test the output file contents
      BufferedReader reader = new BufferedReader(new FileReader("test.xml"));
      String         line = reader.readLine();
      assertTrue(
        "line 1 start",
        line.startsWith("<?xml version=\"1.0\" encoding=\"")
      );
      assertTrue(
        "line 1 end",
        line.endsWith("ISO-8859-1\"?>")
      );
      line = reader.readLine();
      assertEquals(
        "line 2",
        "<javadoc>",
        line
      );
      line = reader.readLine();
      assertTrue(
        "line 3 start",
        line.startsWith("<file name")
      );
      assertTrue(
        "line 3 end",
        line.endsWith("Javadoc1.java\">")
      );
      line = reader.readLine();
      assertEquals(
        "line 4",
        "<error line=\"8\" severity=\"warning\" message=\"@inheritDoc used but 
method1() does not override or implement any method.\"/>",
        line
      );
      line = reader.readLine();
      assertEquals(
        "line 5",
        "</file>",
        line
      );
      line = reader.readLine();
      assertTrue(
        "line 6 start",
        line.startsWith("<file name")
      );
      assertTrue(
        "line 6 end",
        line.endsWith("Javadoc2.java\">")
      );
      line = reader.readLine();
      assertEquals(
        "line 7",
        "<error line=\"8\" severity=\"warning\" message=\"@todo is an unknown 
tag.\"/>",
        line
      );
      line = reader.readLine();
      assertEquals(
        "line 8",
        "<error line=\"15\" severity=\"warning\" message=\"Tag @link: malformed: 
&quot;Javadoc1#method1(&quot;\"/>",
        line
      );
      line = reader.readLine();
      assertEquals(
        "line 9",
        "</file>",
        line
      );
      line = reader.readLine();
      assertEquals(
        "line 10",
        "</javadoc>",
        line
      );
  
      reader.close();
  
      // Get rid of the xml file
      File file = new File("test.xml");
      file.delete();
    }
  
    public void testInputFile()
      throws Exception {
      JavadocWarningsTextToXml bean = new JavadocWarningsTextToXml();
      bean.setOutputFileName("test.xml");
      bean.setOutputEncoding("ISO-8859-1]");
  
      try {
        bean.build();
      } catch (IllegalArgumentException e) {
        assertEquals(
          "exception message",
          INPUT_FILE_NAME_EXCEPTION,
          e.getMessage()
        );
      }
    }
  
    public void testInputFileNotFound()
      throws Exception {
      JavadocWarningsTextToXml bean = new JavadocWarningsTextToXml();
      bean.setInputFileName("junk.dat");
      bean.setOutputFileName("test.xml");
      bean.setOutputEncoding("ISO-8859-1]");
  
      try {
        bean.build();
        fail("Expected null pointer exception for input file name");
      } catch (FileNotFoundException e) {
        ; // expected file not found
      }
    }
  
    public void testOutputFile()
      throws Exception {
      JavadocWarningsTextToXml bean = new JavadocWarningsTextToXml();
      bean.setInputFileName("report.txt");
      bean.setOutputEncoding("ISO-8859-1]");
  
      try {
        bean.build();
        fail("Expected null pointer exception for input file name");
      } catch (IllegalArgumentException e) {
        assertEquals(
          "exception message",
          OUTPUT_FILE_NAME_EXCEPTION,
          e.getMessage()
        );
      }
    }
  }
  
  
  
  1.47      +2 -0      maven-plugins/javadoc/xdocs/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/maven-plugins/javadoc/xdocs/changes.xml,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- changes.xml       21 Aug 2004 14:37:41 -0000      1.46
  +++ changes.xml       21 Aug 2004 18:42:05 -0000      1.47
  @@ -23,9 +23,11 @@
       <title>Changes</title>
       <author email="[EMAIL PROTECTED]">dIon Gillard</author>
       <author email="[EMAIL PROTECTED]">Emmanuel Venisse</author>
  +    <author email="[EMAIL PROTECTED]">Arnaud Heritier</author>
     </properties>
     <body>
       <release version="1.7-SNAPSHOT" date="In CVS">
  +      <action dev="aheritier" type="add" issue="MPJAVADOC-35" due-to="Steven 
Caswell">Add javadoc warning report formatted similar to Checkstyle report.</action>   
 
         <action dev="carlos" type="add" issue="MPJAVADOC-39">Added 
maven.javadoc.bottom property</action>
         <action dev="aheritier" type="fix" issue="MPJAVADOC-37">Default javadoc scope 
(package) can't be replaced by private or public.</action>
         <action dev="aheritier" type="fix" issue="MPJAVADOC-36">Javadoc fails if 
pom.package isn't specified.</action>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to