r2517 - in isis-fish/trunk/src: main/java/fr/ifremer/isisfish/util test/java/fr/ifremer/isisfish/util
Author: chatellier Date: 2009-08-24 13:12:58 +0000 (Mon, 24 Aug 2009) New Revision: 2517 Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/JavadocHelperTest.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/CompileHelperTest.java Log: Add user javadoc generation. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java 2009-08-24 08:24:04 UTC (rev 2516) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java 2009-08-24 13:12:58 UTC (rev 2517) @@ -18,29 +18,19 @@ package fr.ifremer.isisfish.util; -import static org.codelutin.i18n.I18n._; - import java.io.File; -import java.io.IOException; import java.io.PrintWriter; -import java.lang.reflect.Method; -import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.Enumeration; import java.util.List; -import javax.tools.JavaCompiler; -import javax.tools.JavaFileObject; -import javax.tools.StandardJavaFileManager; -import javax.tools.ToolProvider; - -import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.util.FileUtil; +import com.sun.tools.javadoc.Main; + import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.datastore.JavaSourceStorage; @@ -63,21 +53,47 @@ /** Logger for this class. */ private static final Log log = LogFactory.getLog(JavadocHelper.class); - /** Java home. */ - private static final String JAVA_HOME = System.getProperty("java.home"); + /** Nom du programme dans les outils JDK. */ + protected static final String JAVADOC_TOOL_NAME = "javadoc"; - + /** + * Generate javadoc of current. + * + * @param source source storage + * @param destDir javadoc destination directory + * @param force force (if html file is newer than java file) + * @param out out writer (javadoc output, can be {@code null}) + * @return javadoc tool result + */ public static int generateJavadoc(JavaSourceStorage source, File destDir, boolean force, PrintWriter out) { File src = source.getFile(); File dst = new File(destDir, source.getFQN().replace('.', File.separatorChar) + ".html"); + + int result = 0; if (force || FileUtil.isNewer(src, dst)) { - return generateJavadoc(source.getRoot(), src, destDir, out); + result = generateJavadoc(source.getRoot(), src, destDir, out); } - return 0; + return result; } /** + * Generate javadoc on all java file in a directory. + * + * @param rootSrc le repertoire de toutes les sources + * @param dest le répertoire de destination de la javadoc + * @param out le flux de sortie (peut etre null) + * @return le resulat de sortie de l'executable javadoc (0 si ok) + */ + public static int generateJavadoc(File rootSrc, File dest, PrintWriter out) { + + List<File> javaFiles = FileUtil.find(rootSrc, ".*\\.java", true); + + int result = generateJavadoc(rootSrc, javaFiles, dest, out); + return result; + } + + /** * Generate single file javadoc. * * @param rootSrc le repertoire de toutes les sources @@ -136,10 +152,25 @@ // Options de compilations String classpathAsString = CompileHelper.getClassPathAsString(classpath); + List<String> args = new ArrayList<String>(); + args.add("-classpath"); + args.add(classpathAsString); + args.add("-d"); + args.add(dest.getAbsolutePath()); + args.add("-link"); + args.add("http://java.sun.com/javase/6/docs/api/"); + args.add("-link"); + args.add(IsisFish.config.getJavadocURL()); + + for (File srcFile : filesSrc) { + args.add(srcFile.getAbsolutePath()); + } + result = Main.execute(JAVADOC_TOOL_NAME, args.toArray(new String[0])); + } catch (Exception eee) { if (log.isWarnEnabled()) { - log.warn("Can't get compiler", eee); + log.warn("Can't generate javadoc", eee); } } return result; Modified: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/CompileHelperTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/CompileHelperTest.java 2009-08-24 08:24:04 UTC (rev 2516) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/CompileHelperTest.java 2009-08-24 13:12:58 UTC (rev 2517) @@ -26,15 +26,12 @@ import java.util.List; import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.util.FileUtil; import org.junit.Assert; import org.junit.Test; -import com.sun.source.tree.AssertTree; - import fr.ifremer.isisfish.AbstractIsisFishTest; /** Added: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/JavadocHelperTest.java =================================================================== --- isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/JavadocHelperTest.java (rev 0) +++ isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/JavadocHelperTest.java 2009-08-24 13:12:58 UTC (rev 2517) @@ -0,0 +1,90 @@ +/* *##% + * Copyright (C) 2009 CodeLutin + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. ##%*/ + +package fr.ifremer.isisfish.util; + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.Test; + +import fr.ifremer.isisfish.AbstractIsisFishTest; + +/** + * CompileHelperTest. + * + * Created: 12 janv. 2006 16:20:33 + * + * @author poussin + * + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author: chatellier $ + */ +public class JavadocHelperTest extends AbstractIsisFishTest { + + /** Class logger */ + private static Log log = LogFactory.getLog(JavadocHelperTest.class); + + /** + * Try to generate javadoc on current isis-fish-data directory. + * (single java file case) + * + * @throws IOException + * @throws ClassNotFoundException + */ + @Test + public void testIsisFishDataJavadoc() throws IOException, ClassNotFoundException { + + File currentDirectory = getCurrentDatabaseDirectory(); + File destinationDirectory = new File(getTestDirectory(), "isis-docs"); + File testJavaFile = new File(currentDirectory, "analyseplans" + File.separatorChar + "Calibration.java"); + + PrintWriter out = new PrintWriter(System.out); + int result = JavadocHelper.generateJavadoc(currentDirectory, testJavaFile, + destinationDirectory, out); + + // 0 = pas d'erreur + Assert.assertEquals(0, result); + } + + /** + * Try to generate javadoc on current isis-fish-data directory. + * (all directory java files) + * + * @throws IOException + * @throws ClassNotFoundException + */ + @Test + public void testIsisFishDataJavadocAll() throws IOException, ClassNotFoundException { + + File currentDirectory = getCurrentDatabaseDirectory(); + File destinationDirectory = new File(getTestDirectory(), "isis-docs-all"); + + PrintWriter out = new PrintWriter(System.out); + int result = JavadocHelper.generateJavadoc(currentDirectory, destinationDirectory, out); + + // 0 = pas d'erreur + Assert.assertEquals(0, result); + } +} Property changes on: isis-fish/trunk/src/test/java/fr/ifremer/isisfish/util/JavadocHelperTest.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL"
participants (1)
-
chatellier@users.labs.libre-entreprise.org