r2090 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish: datastore util
Author: chatellier Date: 2009-04-09 07:56:42 +0000 (Thu, 09 Apr 2009) New Revision: 2090 Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java Log: Begin javadoc fonctionnality (just started) Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2009-04-08 12:43:46 UTC (rev 2089) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/JavaSourceStorage.java 2009-04-09 07:56:42 UTC (rev 2090) @@ -18,15 +18,18 @@ package fr.ifremer.isisfish.datastore; -import fr.ifremer.isisfish.IsisFishException; -import fr.ifremer.isisfish.IsisFish; -import fr.ifremer.isisfish.util.CompileHelper; -import org.apache.commons.lang.ClassUtils; import static org.codelutin.i18n.I18n._; import java.io.File; import java.io.PrintWriter; +import org.apache.commons.lang.ClassUtils; + +import fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.IsisFishException; +import fr.ifremer.isisfish.util.CompileHelper; +import fr.ifremer.isisfish.util.JavadocHelper; + /** * Classes abstraite permettant la gestion des fichiers de code source. * @@ -113,7 +116,7 @@ * @return */ public int doJavadoc(boolean force, PrintWriter out) { - int result = 0; //JavadocHelper.javadoc(this, IsisFish.config.getJavadocDirectory(), force, out); + int result = JavadocHelper.generateJavadoc(this, IsisFish.config.getJavadocDirectory(), force, out); return result; } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2009-04-08 12:43:46 UTC (rev 2089) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/CompileHelper.java 2009-04-09 07:56:42 UTC (rev 2090) @@ -115,7 +115,7 @@ /** * Compile le fichier source en .class si le source est plus recent que * le .class - * @param source le CodeSourceStorage a compiler + * @param source le JavaSourceStorage a compiler * @param destDir le repertoire destination de la compilation * @param force si vrai alors meme si le fichier destination est plus * recent la compilation aura lieu @@ -131,13 +131,14 @@ File.separatorChar) + ".class"); if (force || FileUtil.isNewer(src, dst)) { - return CompileHelper.compile(source.getRoot(), src, destDir, out); + return compile(source.getRoot(), src, destDir, out); } return 0; } /** - * Methode permettant de compiler un script, une regle ou un export + * Methode permettant de compiler un fichier Java. + * * @param rootSrc le répertoire ou se trouve les sources * @param src Le fichier source a compiler, il doit etre dans un sous * répertoire de rootSrc en fonction du package @@ -155,6 +156,21 @@ return result; } + /** + * Methode permettant de compiler un ensemble de fichiers Java. + * + * @param rootSrc le répertoire ou se trouve les sources + * @param src Le fichier source a compiler, il doit etre dans un sous + * répertoire de rootSrc en fonction du package + * @param dest le repertoire destination de la compilation + * @param out l'objet sur lequel on ecrit la sortie (erreur) de la + * compilation + * @return un nombre different de 0 s'il y a une erreur + * <li> -1000 si l'exception vient de la recherche du compilateur par + * introspection + * <li> -10000 si une autre exception + * <li> sinon les valeurs retourné par le compilateur java + */ public static int compile(File rootSrc, Collection<File> src, File dest, PrintWriter out) { int result = -10000; @@ -172,7 +188,8 @@ } /** - * Compile un fichier java + * Compile un fichier java. + * * @param src les fichiers java source * @param dest le repertoire destination */ @@ -226,7 +243,7 @@ * </ul> * @return classptah as string */ - private static String getClassPathAsString(List<File> classpath) + protected static String getClassPathAsString(List<File> classpath) throws Exception { String result = StringUtils.join(classpath.iterator(), File.pathSeparator) Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/util/JavadocHelper.java 2009-04-09 07:56:42 UTC (rev 2090) @@ -0,0 +1,147 @@ +/* *##% + * Copyright (C) 2009 Ifremer, Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * 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 Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +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 fr.ifremer.isisfish.IsisFish; +import fr.ifremer.isisfish.datastore.JavaSourceStorage; + +/** + * Helper for javadoc. + * + * Use "javadoc" executable tools located in JAVA_HOME. + * + * @author chatellier + * @version $Revision: 2087 $ + * + * Last update: $Date: 2009-04-08 12:22:41 +0200 (mer. 08 avril 2009) $ + * by : $Author: chatellier $ + * + * @see CompileHelper for classpath purpose + * @since 3.2.0.4 + */ +public class JavadocHelper { + + /** 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"); + + + 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"); + if (force || FileUtil.isNewer(src, dst)) { + return generateJavadoc(source.getRoot(), src, destDir, out); + } + return 0; + } + + /** + * Generate single file javadoc. + * + * @param rootSrc le repertoire de toutes les sources + * @param fileSrc le fichier dont on veut la javadoc + * @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 fileSrc, File dest, PrintWriter out) { + int result = generateJavadoc(rootSrc, Collections.singletonList(fileSrc), dest, out); + return result; + } + + /** + * Generate file collection javadoc. + * + * @param rootSrc le repertoire de toutes les sources + * @param filesSrc les fichiers dont on veut la javadoc + * @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, Collection<File> filesSrc, File dest, + PrintWriter out) { + int result = -1; + try { + List<File> classpath = new ArrayList<File>(); + classpath.add(rootSrc.getAbsoluteFile()); + result = generateJavadoc(classpath, filesSrc, dest, out); + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Javadoc failed", eee); + } + } + return result; + } + + /** + * Generate file collection javadoc. + * + * @param classpath common classpath + * @param filesSrc les fichiers dont on veut la javadoc + * @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) + */ + protected static int generateJavadoc(List<File> classpath, Collection<File> filesSrc, + File dest, PrintWriter out) { + + int result = 0; + + // make destination directory + dest.mkdirs(); + + try { + // Options de compilations + String classpathAsString = CompileHelper.getClassPathAsString(classpath); + + + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Can't get compiler", eee); + } + } + return result; + } +}
participants (1)
-
chatellier@users.labs.libre-entreprise.org