You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vs...@apache.org on 2007/11/12 14:34:39 UTC

svn commit: r594115 - in /maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc: AntDoc.java AntDocTask.java GenerateHTMLDoc.java

Author: vsiveton
Date: Mon Nov 12 05:34:38 2007
New Revision: 594115

URL: http://svn.apache.org/viewvc?rev=594115&view=rev
Log:
o using the Plexus way

Added:
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDoc.java   (with props)
Modified:
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDocTask.java
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/GenerateHTMLDoc.java

Added: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDoc.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDoc.java?rev=594115&view=auto
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDoc.java (added)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDoc.java Mon Nov 12 05:34:38 2007
@@ -0,0 +1,59 @@
+package org.apache.maven.jxr.ant.doc;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 java.io.File;
+import java.io.IOException;
+
+/**
+ * Interface to generate documentation (images and HTML) from an <a href="http://ant.apache.org/">Ant</a> buildfile.
+ * The image/HTML shows the Ant targets dependency.
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public interface AntDoc
+{
+    /** The Plexus lookup role. */
+    String ROLE = AntDoc.class.getName();
+
+    /**
+     * Generate documentation from an <a href="http://ant.apache.org/">Ant</a> buildfile.
+     *
+     * @param antFile the Ant file, typically <code>build.xml</code>, should be not null.
+     * @param destDir the destination directory of the generated documentation, should be not null
+     * @throws IOException if any
+     * @throws AntDocException if any
+     */
+    void generate( File antFile, File destDir )
+        throws IOException, AntDocException;
+
+    /**
+     * Generate documentation from an <a href="http://ant.apache.org/">Ant</a> buildfile.
+     *
+     * @param graphExecutable the graph executable to use, for instance <a href="http://www.graphviz.org/">Graphviz</a>, should be not null.
+     * @param antFile the Ant file, typically <code>build.xml</code>, should be not null.
+     * @param destDir the destination directory of the generated documentation, should be not null
+     * @throws IOException if any
+     * @throws AntDocException if any
+     */
+    void generate( File graphExecutable, File antFile, File destDir )
+        throws IOException, AntDocException;
+}

Propchange: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDoc.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDoc.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDocTask.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDocTask.java?rev=594115&r1=594114&r2=594115&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDocTask.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/AntDocTask.java Mon Nov 12 05:34:38 2007
@@ -20,6 +20,7 @@
  */
 
 import java.io.File;
+import java.io.IOException;
 
 import org.apache.maven.jxr.util.DotUtil.DotNotPresentInPathException;
 import org.apache.tools.ant.BuildException;
@@ -44,6 +45,9 @@
     /** Graphviz Dot executable file */
     private File dotExecutable;
 
+    /** Verbose mode */
+    private boolean verbose;
+
     /** Terminate Ant build */
     private boolean failOnError;
 
@@ -78,6 +82,16 @@
     }
 
     /**
+     * Set verbose mode.
+     *
+     * @param b true to verbose mode.
+     */
+    public void setVerbose( boolean b )
+    {
+        this.verbose = b;
+    }
+
+    /**
      * Set fail on an error.
      *
      * @param b true to fail on an error.
@@ -112,9 +126,16 @@
     {
         try
         {
-            GenerateHTMLDoc generator = new GenerateHTMLDoc( this.antFile, this.destDir );
-            generator.setDotExecutable( this.dotExecutable );
-            generator.generateDoc();
+            GenerateHTMLDoc generator = new GenerateHTMLDoc();
+            generator.setVerbose( this.verbose );
+            if ( this.dotExecutable != null )
+            {
+                generator.generate( this.dotExecutable, this.antFile, this.destDir );
+            }
+            else
+            {
+                generator.generate( this.antFile, this.destDir );
+            }
         }
         catch ( IllegalArgumentException e )
         {
@@ -133,6 +154,15 @@
             }
 
             log( "Dot is not present in the path: " + e.getMessage(), Project.MSG_ERR );
+        }
+        catch ( IOException e )
+        {
+            if ( !failOnError )
+            {
+                throw new BuildException( "IOException: " + e.getMessage(), e, getLocation() );
+            }
+
+            log( "IOException: " + e.getMessage(), Project.MSG_ERR );
         }
         catch ( AntDocException e )
         {

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/GenerateHTMLDoc.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/GenerateHTMLDoc.java?rev=594115&r1=594114&r2=594115&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/GenerateHTMLDoc.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-ant/src/main/java/org/apache/maven/jxr/ant/doc/GenerateHTMLDoc.java Mon Nov 12 05:34:38 2007
@@ -36,6 +36,7 @@
 import org.apache.maven.jxr.ant.doc.vizant.Vizant;
 import org.apache.maven.jxr.util.DotUtil;
 import org.apache.maven.jxr.util.DotUtil.DotNotPresentInPathException;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.cli.CommandLineException;
@@ -48,8 +49,11 @@
  *
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @version $Id$
+ * @plexus.component role="org.apache.maven.jxr.ant.doc.AntDoc" role-hint="default"
  */
 public class GenerateHTMLDoc
+    extends AbstractLogEnabled
+    implements AntDoc
 {
     /** An ant file */
     private File antFile;
@@ -60,6 +64,9 @@
     /** Graphviz Dot executable file */
     private File dotExecutable;
 
+    /** Verbose mode */
+    private boolean verbose;
+
     /** Temp xsl file */
     private File xml2dot;
 
@@ -78,13 +85,13 @@
     /** Temp generated touch graph */
     private File buildtg;
 
-    /**
-     * @param antFile
-     * @param destDir
-     * @throws IllegalArgumentException
-     */
-    public GenerateHTMLDoc( File antFile, File destDir )
-        throws IllegalArgumentException
+    // ----------------------------------------------------------------------
+    // Public
+    // ----------------------------------------------------------------------
+
+    /** {@inheritDoc} */
+    public void generate( File antFile, File destDir )
+        throws IllegalArgumentException, DotNotPresentInPathException, IOException, AntDocException
     {
         if ( antFile == null )
         {
@@ -92,110 +99,33 @@
         }
         if ( !antFile.exists() || !antFile.isFile() )
         {
-            throw new IllegalArgumentException( "Input '" + getAntFile() + "' not found or not a file." );
+            throw new IOException( "Input '" + antFile + "' not found or not a file." );
         }
 
         if ( destDir == null )
         {
-            throw new IllegalArgumentException( "Missing mandatory attribute 'dest'." );
+            throw new IllegalArgumentException( "Missing mandatory attribute 'destDir'." );
         }
         if ( destDir.exists() && !destDir.isDirectory() )
         {
-            throw new IllegalArgumentException( "Dest directory is a file." );
+            throw new IOException( "Input '" + destDir + "' is a file." );
         }
         if ( !destDir.exists() && !destDir.mkdirs() )
         {
-            throw new IllegalArgumentException( "Cannot create the dest directory." );
+            throw new IOException( "Cannot create the dest directory '" + destDir + "'." );
         }
 
         this.antFile = antFile;
         this.destDir = destDir;
-    }
-
-    /**
-     * @return the Ant file which be parsed.
-     */
-    public File getAntFile()
-    {
-        return this.antFile;
-    }
-
-    /**
-     * @return the dest dir
-     */
-    public File getDestDir()
-    {
-        return this.destDir;
-    }
-
-    /**
-     * Getter for the dotExecutable
-     *
-     * @return the dotExecutable
-     */
-    public File getDotExecutable()
-    {
-        return this.dotExecutable;
-    }
 
-    /**
-     * Setter for the antFile
-     *
-     * @param antFile the antFile to set
-     */
-    public void setAntFile( File antFile )
-    {
-        this.antFile = antFile;
-    }
-
-    /**
-     * Setter for the destDir
-     *
-     * @param destDir the destDir to set
-     */
-    public void setDestDir( File destDir )
-    {
-        this.destDir = destDir;
-    }
-
-    /**
-     * Setter for the dotExecutable
-     *
-     * @param dotExecutable the dotExecutable to set
-     */
-    public void setDotExecutable( File dotExecutable )
-    {
-        this.dotExecutable = dotExecutable;
-    }
-
-    /**
-     * Generate the documentation.
-     *
-     * @throws DotNotPresentInPathException if any
-     * @throws AntDocException if any
-     */
-    public void generateDoc()
-        throws DotNotPresentInPathException, AntDocException
-    {
         // 1. Generate Vizant graph
-        try
-        {
-            generateVizantBuildGraph();
-        }
-        catch ( IOException e )
-        {
-            throw new AntDocException( "IOException: " + e.getMessage() );
-        }
+        generateVizantBuildGraph();
 
         // 2. Generate dot graph
         try
         {
             generateDotBuildGraph();
         }
-        catch ( IOException e )
-        {
-            throw new AntDocException( "IOException: " + e.getMessage() );
-        }
         catch ( TransformerException e )
         {
             throw new AntDocException( "TransformerException: " + e.getMessage() );
@@ -216,21 +146,89 @@
         {
             generateSite();
         }
-        catch ( IOException e )
-        {
-            throw new AntDocException( "IOException: " + e.getMessage() );
-        }
         catch ( TransformerException e )
         {
             throw new AntDocException( "TransformerException: " + e.getMessage() );
         }
     }
 
+    /** {@inheritDoc} */
+    public void generate( File graphExecutable, File antFile, File destDir )
+        throws IllegalArgumentException, DotNotPresentInPathException, IOException, AntDocException
+    {
+        if ( dotExecutable == null )
+        {
+            throw new IllegalArgumentException( "Missing mandatory attribute 'dotExecutable'." );
+        }
+        if ( !dotExecutable.exists() || !dotExecutable.isFile() )
+        {
+            throw new IOException( "Input '" + dotExecutable + "' not found or not a file." );
+        }
+        this.dotExecutable = graphExecutable;
+
+        generate( antFile, destDir );
+    }
+
+    // ----------------------------------------------------------------------
+    // Protected
+    // ----------------------------------------------------------------------
+
+    /**
+     * Setter for the verbose. Used by Ant task
+     *
+     * @param verbose the verbose to set
+     */
+    protected void setVerbose( boolean verbose )
+    {
+        this.verbose = verbose;
+    }
+
     // ----------------------------------------------------------------------
     // Private
     // ----------------------------------------------------------------------
 
     /**
+     * @return the Ant file which be parsed.
+     */
+    private File getAntFile()
+    {
+        return this.antFile;
+    }
+
+    /**
+     * @return the dest dir
+     */
+    private File getDestDir()
+    {
+        return this.destDir;
+    }
+
+    /**
+     * Getter for the dotExecutable
+     *
+     * @return the dotExecutable
+     */
+    private File getDotExecutable()
+    {
+        return this.dotExecutable;
+    }
+
+    /**
+     * Getter for the verbose
+     *
+     * @return the verbose
+     */
+    private boolean isVerbose()
+    {
+        if ( getLogger() != null ) // for Ant tasks
+        {
+            return !getLogger().isInfoEnabled();
+        }
+
+        return this.verbose;
+    }
+
+    /**
      * @return xsl temp file.
      * @throws IOException if any
      */
@@ -240,7 +238,10 @@
         if ( this.xml2dot == null )
         {
             this.xml2dot = FileUtils.createTempFile( "xml2dot", ".xsl", getDestDir() );
-            this.xml2dot.deleteOnExit();
+            if ( !isVerbose() )
+            {
+                this.xml2dot.deleteOnExit();
+            }
 
             InputStream is = getClass().getClassLoader().getResourceAsStream( "vizant/xml2dot.xsl" );
             if ( is == null )
@@ -270,7 +271,10 @@
         if ( this.xml2html == null )
         {
             this.xml2html = FileUtils.createTempFile( "xml2html", ".xsl", getDestDir() );
-            this.xml2html.deleteOnExit();
+            if ( !isVerbose() )
+            {
+                this.xml2html.deleteOnExit();
+            }
 
             InputStream is = getClass().getClassLoader().getResourceAsStream( "vizant/xml2html.xsl" );
             if ( is == null )
@@ -300,7 +304,10 @@
         if ( this.xml2tg == null )
         {
             this.xml2tg = FileUtils.createTempFile( "xml2tg", ".xsl", getDestDir() );
-            this.xml2tg.deleteOnExit();
+            if ( !isVerbose() )
+            {
+                this.xml2tg.deleteOnExit();
+            }
 
             InputStream is = getClass().getClassLoader().getResourceAsStream( "vizant/xml2tg.xsl" );
             if ( is == null )
@@ -317,7 +324,7 @@
             IOUtil.close( w );
         }
 
-        return this.xml2html;
+        return this.xml2tg;
     }
 
     /**
@@ -328,7 +335,10 @@
         if ( this.buildGraph == null )
         {
             this.buildGraph = FileUtils.createTempFile( "buildgraph", ".xml", getDestDir() );
-            this.buildGraph.deleteOnExit();
+            if ( !isVerbose() )
+            {
+                this.buildGraph.deleteOnExit();
+            }
         }
 
         return this.buildGraph;
@@ -342,7 +352,10 @@
         if ( this.dot == null )
         {
             this.dot = FileUtils.createTempFile( "buildgraph", ".dot", getDestDir() );
-            this.dot.deleteOnExit();
+            if ( !isVerbose() )
+            {
+                this.dot.deleteOnExit();
+            }
         }
 
         return this.dot;
@@ -356,7 +369,10 @@
         if ( this.buildtg == null )
         {
             this.buildtg = FileUtils.createTempFile( "buildtg", ".xml", getDestDir() );
-            this.buildtg.deleteOnExit();
+            if ( !isVerbose() )
+            {
+                this.buildtg.deleteOnExit();
+            }
         }
 
         return this.buildtg;