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/06 01:13:32 UTC

svn commit: r592201 - in /maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java: ./ src/main/java/org/apache/maven/jxr/java/doc/ src/test/java/org/apache/maven/jxr/java/doc/

Author: vsiveton
Date: Mon Nov  5 16:13:31 2007
New Revision: 592201

URL: http://svn.apache.org/viewvc?rev=592201&view=rev
Log:
o bumped to ant:1.7.0, removed xml-apis, added xalan:2.7.0
o removed Ant dependency in GenerateUMLDoc: using XSL transformer
o added UmlDocException to wrap exception
o updated test case

Added:
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocException.java   (with props)
Modified:
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/pom.xml
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/GenerateUMLDoc.java
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocTask.java
    maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/doc/UmlDocTaskTest.java

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/pom.xml?rev=592201&r1=592200&r2=592201&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/pom.xml (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/pom.xml Mon Nov  5 16:13:31 2007
@@ -41,20 +41,8 @@
       <version>${antlrVersion}</version>
     </dependency>
     <dependency>
-      <groupId>xml-apis</groupId>
-      <artifactId>xml-apis</artifactId>
-      <version>1.3.03</version>
-    </dependency>
-    <dependency>
-      <groupId>ant</groupId>
+      <groupId>org.apache.ant</groupId>
       <artifactId>ant</artifactId>
-      <version>1.6.5</version>
-    </dependency>
-    <!-- for XSLT task -->
-    <dependency>
-      <groupId>ant</groupId>
-      <artifactId>ant-trax</artifactId>
-      <version>1.6.5</version>
     </dependency>
     <dependency>
       <groupId>log4j</groupId>
@@ -64,7 +52,6 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
-      <version>1.4.6</version>
     </dependency>
     <dependency>
       <groupId>com.thoughtworks.qdox</groupId>
@@ -74,7 +61,11 @@
     <dependency>
       <groupId>org.apache.maven.jxr</groupId>
       <artifactId>maven-jxr-utils</artifactId>
-      <version>3.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>xalan</groupId>
+      <artifactId>xalan</artifactId>
+      <version>2.7.0</version>
     </dependency>
 
     <dependency>

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/GenerateUMLDoc.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/GenerateUMLDoc.java?rev=592201&r1=592200&r2=592201&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/GenerateUMLDoc.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/GenerateUMLDoc.java Mon Nov  5 16:13:31 2007
@@ -32,16 +32,19 @@
 import java.util.TimeZone;
 
 import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
 
-import org.apache.maven.jxr.util.DotTask;
-import org.apache.maven.jxr.util.DotTask.DotNotPresentInPathBuildException;
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.XSLTProcess;
-import org.apache.tools.ant.taskdefs.XSLTProcess.Param;
+import org.apache.maven.jxr.util.DotUtil;
+import org.apache.maven.jxr.util.DotUtil.DotNotPresentInPathException;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.cli.CommandLineException;
 
 import com.sun.tools.javadoc.Main;
 
@@ -144,21 +147,45 @@
     /**
      * Generate the documentation
      *
-     * @throws IOException if any
-     * @throws BuildException if any
-     * @throws DotNotPresentInPathBuildException if any
+     * @throws UmlDocException if any
+     * @throws DotNotPresentInPathException if any
      */
     public void generateUML()
-        throws IOException, BuildException, DotNotPresentInPathBuildException
+        throws UmlDocException, DotNotPresentInPathException
     {
         // 1. Generate Javadoc xml
-        generateJavadocXML();
+        try
+        {
+            generateJavadocXML();
+        }
+        catch ( IOException e )
+        {
+            throw new UmlDocException( "IOException: " + e.getMessage() );
+        }
 
         // 2. Generate dot image
-        generateJavadocDot();
+        try
+        {
+            generateJavadocDot();
+        }
+        catch ( IOException e )
+        {
+            throw new UmlDocException( "IOException: " + e.getMessage() );
+        }
+        catch ( TransformerException e )
+        {
+            throw new UmlDocException( "TransformerException: " + e.getMessage() );
+        }
 
         // 3. Generate UML image
-        generateUmlImage();
+        try
+        {
+            generateUmlImage();
+        }
+        catch ( CommandLineException e )
+        {
+            throw new UmlDocException( "CommandLineException: " + e.getMessage() );
+        }
 
         if ( !isVerbose() )
         {
@@ -166,7 +193,7 @@
             File dtd = new File( getJavadocXml().getParentFile(), XMLDoclet.XMLDOCLET_DTD );
             if ( !dtd.delete() )
             {
-                throw new IOException( "IOException: can't delete the generated DTD file: " + dtd );
+                throw new UmlDocException( "IOException: can't delete the generated DTD file: " + dtd );
             }
         }
     }
@@ -406,17 +433,6 @@
     }
 
     /**
-     * @return a minimal Ant project.
-     */
-    private Project getAntProject()
-    {
-        Project antProject = new Project();
-        antProject.setBasedir( new File( "" ).getAbsolutePath() );
-
-        return antProject;
-    }
-
-    /**
      * @return the xml2dot XSL file.
      * @throws IOException if any
      */
@@ -521,68 +537,46 @@
     /**
      * Apply XSLT to generate dot file from the Javadoc xml
      *
-     * @throws BuildException if any
      * @throws IOException if any
+     * @throws TransformerException if any
      */
     private void generateJavadocDot()
-        throws BuildException, IOException
+        throws IOException, TransformerException
     {
-        XSLTProcess xsltTask = new XSLTProcess();
-        xsltTask.setProject( getAntProject() );
-        xsltTask.setTaskName( "xslt" );
-        xsltTask.init();
-        xsltTask.setIn( getJavadocXml() );
-        xsltTask.setOut( getDot() );
-        xsltTask.setStyle( getXml2dot().getAbsolutePath() );
+        SAXTransformerFactory transformerFactory = (SAXTransformerFactory) TransformerFactory.newInstance();
+        if ( !( transformerFactory.getFeature( javax.xml.transform.sax.SAXSource.FEATURE ) && transformerFactory
+            .getFeature( javax.xml.transform.stream.StreamResult.FEATURE ) ) )
+        {
+
+            throw new TransformerException( "The supplied TrAX transformer library is inadeguate."
+                + "Please upgrade to the latest version." );
+        }
+
+        Transformer serializer = transformerFactory.newTransformer( new StreamSource( getXml2dot() ) );
 
         if ( StringUtils.isNotEmpty( getDiagramEncoding() ) )
         {
-            XSLTProcess.OutputProperty prop = xsltTask.createOutputProperty();
-            prop.setName( OutputKeys.ENCODING );
-            prop.setValue( getDiagramEncoding() );
-        }
-
-        Param param = xsltTask.createParam();
-        param.setProject( getAntProject() );
-        param.setName( "now" );
-        param.setExpression( NOW );
-
-        param = xsltTask.createParam();
-        param.setProject( getAntProject() );
-        param.setName( "diagramEncoding" );
-        param.setExpression( ( getDiagramEncoding() == null ? "" : getDiagramEncoding() ) );
-
-        param = xsltTask.createParam();
-        param.setProject( getAntProject() );
-        param.setName( "show" );
-        param.setExpression( ( getShow() == null ? "" : getShow() ) );
-
-        param = xsltTask.createParam();
-        param.setProject( getAntProject() );
-        param.setName( "javasrcPath" );
-        param.setExpression( ( getJavasrcPath() == null ? "" : getJavasrcPath() ) );
-
-        param = xsltTask.createParam();
-        param.setProject( getAntProject() );
-        param.setName( "javadocPath" );
-        param.setExpression( ( getJavadocPath() == null ? "" : getJavadocPath() ) );
-
-        param = xsltTask.createParam();
-        param.setProject( getAntProject() );
-        param.setName( "diagramLabel" );
-        param.setExpression( ( getDiagramLabel() == null ? "" : getDiagramLabel() ) );
+            serializer.setOutputProperty( OutputKeys.ENCODING, getDiagramEncoding() );
+        }
+
+        serializer.setParameter( "now", NOW );
+        serializer.setParameter( "diagramEncoding", ( getDiagramEncoding() == null ? "" : getDiagramEncoding() ) );
+        serializer.setParameter( "show", ( getShow() == null ? "" : getShow() ) );
+        serializer.setParameter( "javasrcPath", ( getJavasrcPath() == null ? "" : getJavasrcPath() ) );
+        serializer.setParameter( "javadocPath", ( getJavadocPath() == null ? "" : getJavadocPath() ) );
+        serializer.setParameter( "diagramLabel", ( getDiagramLabel() == null ? "" : getDiagramLabel() ) );
 
-        xsltTask.execute();
+        serializer.transform( new StreamSource( getJavadocXml() ), new StreamResult( getDot() ) );
     }
 
     /**
      * Call Graphviz dot to generate images.
      *
-     * @throws BuildException if any
-     * @throws DotNotPresentInPathBuildException if any
+     * @throws CommandLineException if any
+     * @throws DotNotPresentInPathException if any
      */
     private void generateUmlImage()
-        throws BuildException, DotNotPresentInPathBuildException
+        throws CommandLineException, DotNotPresentInPathException
     {
         String outputPath = getOut().getAbsolutePath();
         String format;
@@ -595,13 +589,6 @@
             format = "svg";
         }
 
-        DotTask dotTask = new DotTask();
-        dotTask.setProject( getAntProject() );
-        dotTask.setTaskName( "dot" );
-        dotTask.init();
-        dotTask.setIn( getDot() );
-        dotTask.setOut( getOut() );
-        dotTask.setFormat( format );
-        dotTask.execute();
+        DotUtil.executeDot( getDot(), getOut() );
     }
 }

Added: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocException.java?rev=592201&view=auto
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocException.java (added)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocException.java Mon Nov  5 16:13:31 2007
@@ -0,0 +1,62 @@
+package org.apache.maven.jxr.java.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.
+ */
+
+/**
+ * Signals an error when processing UmlDoc.
+ *
+ * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
+ * @version $Id$
+ */
+public class UmlDocException
+    extends Exception
+{
+    static final long serialVersionUID = -6738054815023953478L;
+
+    /**
+     * Constructs am exception with no descriptive information.
+     */
+    public UmlDocException()
+    {
+        super();
+    }
+
+    /**
+     * Constructs an exception with the given descriptive message.
+     *
+     * @param message
+     */
+    public UmlDocException( String message )
+    {
+        super( message );
+    }
+
+    /**
+     * Constructs an exception with the given message and exception as
+     * a root cause.
+     *
+     * @param message
+     * @param cause
+     */
+    public UmlDocException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}

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

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

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocTask.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocTask.java?rev=592201&r1=592200&r2=592201&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocTask.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/main/java/org/apache/maven/jxr/java/doc/UmlDocTask.java Mon Nov  5 16:13:31 2007
@@ -22,7 +22,7 @@
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.maven.jxr.util.DotTask.DotNotPresentInPathBuildException;
+import org.apache.maven.jxr.util.DotUtil.DotNotPresentInPathException;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
@@ -250,28 +250,23 @@
 
             log( "IllegalArgumentException: " + e.getMessage(), Project.MSG_ERR );
         }
-        catch ( IOException e )
+        catch ( DotNotPresentInPathException e )
         {
             if ( !failOnError )
             {
-                throw new BuildException( "IOException: " + e.getMessage(), e, getLocation() );
+                throw new BuildException( "DotNotPresentInPathException: " + e.getMessage(), e, getLocation() );
             }
 
-            log( "IOException: " + e.getMessage(), Project.MSG_ERR );
-        }
-        catch ( DotNotPresentInPathBuildException e )
-        {
             log( "Dot is not present in the path: " + e.getMessage(), Project.MSG_ERR );
         }
-        catch ( BuildException e )
+        catch ( UmlDocException e )
         {
-            e.printStackTrace();
             if ( !failOnError )
             {
-                throw new BuildException( "RuntimeException: " + e.getMessage(), e, getLocation() );
+                throw new BuildException( "UmlDocException: " + e.getMessage(), e, getLocation() );
             }
 
-            log( e.getMessage(), Project.MSG_ERR );
+            log( "UmlDocException: " + e.getMessage(), Project.MSG_ERR );
         }
     }
 

Modified: maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/doc/UmlDocTaskTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/doc/UmlDocTaskTest.java?rev=592201&r1=592200&r2=592201&view=diff
==============================================================================
--- maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/doc/UmlDocTaskTest.java (original)
+++ maven/sandbox/trunk/jxr/maven-jxr/maven-jxr-java/src/test/java/org/apache/maven/jxr/java/doc/UmlDocTaskTest.java Mon Nov  5 16:13:31 2007
@@ -21,6 +21,8 @@
 
 import java.io.File;
 
+import org.apache.maven.jxr.util.DotUtil.DotNotPresentInPathException;
+import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.Copy;
 import org.apache.tools.ant.types.FileSet;
@@ -82,7 +84,19 @@
         task.setOut( out );
         task.setVerbose( true );
         task.setDiagramEncoding( "UTF-8" );
-        task.execute();
+        try
+        {
+            task.execute();
+            assertTrue( "DOT exists in the path", true );
+        }
+        catch ( BuildException e )
+        {
+            if ( e.getException() instanceof DotNotPresentInPathException )
+            {
+                assertTrue( "DOT doesnt exist in the path. Ignored test", true );
+                return;
+            }
+        }
 
         // Generated files
         assertTrue( out.exists() );
@@ -110,7 +124,19 @@
         task.setVerbose( true );
         // All tests passed...
         task.setJavasrcPath( PathTool.getRelativePath( "./target/unit/src" ) + "/target/unit/jxrdoc-default/" );
-        task.execute();
+        try
+        {
+            task.execute();
+            assertTrue( "DOT exists in the path", true );
+        }
+        catch ( BuildException e )
+        {
+            if ( e.getException() instanceof DotNotPresentInPathException )
+            {
+                assertTrue( "DOT doesnt exist in the path. Ignored test", true );
+                return;
+            }
+        }
 
         // Generated files
         assertTrue( out.exists() );