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() );