r1800 - in trunk/maven-i18n-plugin: . src/main/java/org/nuiton/i18n/plugin src/main/java/org/nuiton/i18n/plugin/bundle src/main/java/org/nuiton/i18n/plugin/parser src/main/java/org/nuiton/i18n/plugin/parser/impl
Author: tchemit Date: 2010-11-11 14:02:21 +0100 (Thu, 11 Nov 2010) New Revision: 1800 Url: http://nuiton.org/repositories/revision/i18n/1800 Log: use {@code ...} instead of <code>...</code> + Anomalie #1030: All mojo configuration documentation must be in english. + improve parser mojos Added: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java Modified: trunk/maven-i18n-plugin/pom.xml trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/TapestryBundleMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java Modified: trunk/maven-i18n-plugin/pom.xml =================================================================== --- trunk/maven-i18n-plugin/pom.xml 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/pom.xml 2010-11-11 13:02:21 UTC (rev 1800) @@ -113,9 +113,8 @@ <!-- ************************************************************* --> <name>I18n :: Maven Plugin</name> <description> - Plugin pour maven 2 de génération des bundles pour - l'internationalisation (i18n) des applications java - basé sur nuiton-i18n-api. + Maven plugin to deal with i18n stuff in a project, mainly base on the + nuiton-i18n api (but not only). </description> <inceptionYear>2007</inceptionYear> Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -34,14 +34,18 @@ import java.io.File; import java.io.IOException; import java.util.Locale; +import java.util.Map; import java.util.Properties; import java.util.SortedSet; +import java.util.TreeSet; /** - * Classe permettant d'obenir les parametres pendant les différentes phases du - * plugin. + * Lower level i18n mojo abstraction. + * <p/> + * We defines here all commons parameters and shared behaviour. * - * @author julien + * @author tchemit <chemit@codelutin.com> + * @author jruchaud <ruchaud@codelutin.com> */ public abstract class AbstractI18nMojo extends AbstractPlugin implements PluginWithEncoding { @@ -58,7 +62,9 @@ protected MavenProject project; /** - * Nom du projet. + * Name to use as prefix of generated files. + * <p/> + * <b>Note :</b> By default, use the artifact id. * * @parameter expression="${i18n.artifactId}" default-value="${project.artifactId}" * @readonly @@ -66,8 +72,10 @@ protected String artifactId; /** - * Langues des bundles generes. + * Locales to treate, separated by comma. * <p/> + * Example : + * <pre>fr_FR,en_GB</pre> * * @parameter expression="${i18n.bundles}" default-value="fr_FR,en_GB" * @required @@ -75,7 +83,7 @@ protected String bundles; /** - * Repertoire sources des fichiers i18n. + * Directory where to find project i18n files. * * @parameter expression="${i18n.src}" default-value="${basedir}/src/main/resources/i18n" * @required @@ -83,7 +91,7 @@ protected File src; /** - * Repertoire des fichiers generes i18n. + * Directory where to generate i18n files. * * @parameter expression="${i18n.out}" default-value="${basedir}/target/generated-sources/i18n" * @required @@ -91,7 +99,7 @@ protected File out; /** - * encoding a utiliser pour charger et sauver les bundles + * Encoding used to load and store files. * <p/> * <b>Note:</b> If nothing is filled here, we will use the system * property {@code file.encoding}. @@ -102,26 +110,26 @@ protected String encoding; /** - * Met les fichiers generes dans le repertoire des sources i18n. + * To update generated files to user i18n files. * <p/> - * Note: Par défaut active, pour pouvoir paquager avec les bundles mis a - * jour. + * <b>Note :</b> By default, this is active, in order to have a project uptodate + * with last i18n bundles detected. * * @parameter expression="${i18n.genSrc}" default-value="true" */ protected boolean genSrc; /** - * verbose flag + * Verbose flag. * <p/> - * Note: si non renseigne, on utilise la propiété <code>maven.verbose</code>. + * <b>Note :</b> if not setted, we used the {@code maven.verbose} property. * * @parameter expression="${i18n.verbose}" default-value="${maven.verbose}" */ protected boolean verbose; /** - * silent flag + * Silent flag to see only errors in console. * * @parameter expression="${i18n.silent}" default-value="false" * @since 1.0.0-rc-5 @@ -129,21 +137,22 @@ protected boolean silent; /** - * ne conserve que les clef scannees (et donc traite tous les fichiers) + * Strict mode to only keep in user i18n detected i18n keys and remove obsolete keys. * <p/> - * <p/> - * Note : par default, on ne l'active car rescanne tous les fichiers. s + * <b>Note :</b> By default not active. Use this with care since it can + * delete keys. Moreover if this flag is activated, then all files will be parsed. * * @parameter expression="${i18n.strictMode}" default-value="false" */ protected boolean strictMode; - /** les locales a traiter */ + /** locales to process */ protected Locale[] locales; @Override protected boolean checkPackaging() { + // nothing to do on a pom module return !acceptPackaging(Packaging.pom); } @@ -169,8 +178,8 @@ } /** - * @return <code>true</code> si des getters ont etes enregistres pendant le - * cycle de vie, <code>false</code> sinon. + * @return {@code true} si des getters ont etes enregistres pendant le + * cycle de vie, {@code false} sinon. */ protected boolean needGeneration() { boolean needGeneration = NB_GETTER_FILES > 0; @@ -191,7 +200,7 @@ * @param root le repertoire ou sont stockes les fichiers i18n * @param artifactId le nom de l'artifact * @param locale le nom du bundle - * @param create <code>true</code> pour creer le fichier si non present + * @param create {@code true} pour creer le fichier si non present * @return le fichier i18n * @throws IOException si probleme lors de la creation du fichier */ @@ -209,7 +218,7 @@ /** * @param root le repertoire ou sont stockes les fichiers getter * @param getter le nom du getter - * @param create <code>true</code> pour creer le fichier si non present + * @param create {@code true} pour creer le fichier si non present * @return le fichier i18n * @throws IOException si probleme lors de la creation du fichier */ @@ -223,14 +232,24 @@ return file; } - protected boolean checkBundle(Locale locale, Properties propertiesOut, - boolean showEmpty) { + protected void checkBundle(Locale locale, + Properties propertiesOut, + boolean showEmpty, + Map<Locale, SortedSet<String>> unsafeHolder) { - boolean safe = true; // on verifie qu'il n'y a pas de traduction vide SortedSet<String> emptyEntries = PluginHelper.getEmptyKeys(propertiesOut); if (!emptyEntries.isEmpty()) { - safe=false; + if (unsafeHolder != null) { + + // push empties i18n keys in the holder + SortedSet<String> empties = unsafeHolder.get(locale); + if (empties == null) { + empties = new TreeSet<String>(); + unsafeHolder.put(locale, empties); + } + empties.addAll(emptyEntries); + } StringBuilder buffer = new StringBuilder(); int size = emptyEntries.size(); buffer.append("bundle "); @@ -261,7 +280,6 @@ " entries)."); } } - return safe; } Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -33,9 +33,10 @@ import java.util.Locale; /** - * Merge des fichiers de propriétés avec les anciens. + * Merge new generated i18n bundles with older existing ones. * - * @author julien + * @author jruchaud <ruchaud@codelutin.com> + * @author chemit <chemit@codelutin.com> * @goal gen * @phase generate-resources * @execute goal=get @@ -43,8 +44,7 @@ public class GenerateMojo extends AbstractI18nMojo { /** - * Un drapeau pour vérifier que les bundles ne contiennent pas d'entrées - * vides. + * A flag to check that bundles are complete (no missing i18n translations). * * @parameter expression="${i18n.checkBundle}" default-value="true" * @required @@ -53,8 +53,9 @@ protected boolean checkBundle; /** - * Un drapeau pour afficher les entrées vides. (nécessite {@link - * #checkBundle} activé). + * A flag to show missing i18n translation. + * <p/> + * <b>Note :</b> Need the {@link #checkBundle} to be activated). * * @parameter expression="${i18n.showEmpty}" default-value="false" * @required @@ -63,16 +64,18 @@ protected boolean showEmpty; /** - * conserve les anciens fichiers de traduction avec un suffix ~ + * To keep a backup of old i18n bundles (suffiex by a {@code ~}). * <p/> - * Note: par defaut, on ne l'active pas. + * <b>Note: </b> By default, this property is not active. * * @parameter expression="${i18n.keepBackup}" default-value="false" */ protected boolean keepBackup; /** - * Conserve les fichiers de getters. + * To keep generated getter files. + * <p/> + * <b>Note: </b> By default, this property is not active. * * @parameter expression="${i18n.keepGetters}" default-value="false" */ @@ -153,7 +156,7 @@ } if (checkBundle) { - checkBundle(locale, propertiesOut, showEmpty); + checkBundle(locale, propertiesOut, showEmpty, null); } if (genSrc) { Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -43,7 +43,9 @@ public class GetterMojo extends AbstractI18nMojo { /** - * Conserve les fichiers de getters. + * To keep generated getter files. + * <p/> + * <b>Note: </b> By default, this property is not active. * * @parameter expression="${i18n.keepGetters}" default-value="false" */ Added: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java (rev 0) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -0,0 +1,130 @@ +/* + * #%L + * I18n :: Maven Plugin + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2007 - 2010 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>. + * #L% + */ +package org.nuiton.i18n.plugin.bundle; + +import org.apache.maven.plugin.MojoFailureException; + +import java.io.File; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.SortedSet; + +/** + * Common mojo to all final bundle maker. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.0 + */ +public abstract class AbstractMakeI18nBundleMojo extends AbstractI18nBundleMojo { + + /** + * Directory where to generate aggregated bundles. + * + * @parameter expression="${i18n.bundleOutputDir}" default-value="${basedir}/target/generated-sources/resources/META-INF" + * @required + * @since 1.0.0 + */ + protected File bundleOutputDir; + + /** + * Name of the bundle to generate. + * + * @parameter expression="${i18n.bundleOutputName}" default-value="${project.artifactId}-i18n" + * @required + * @since 1.0.2 + */ + protected String bundleOutputName; + + /** + * A flag to check that bundles are complete (no missing i18n translations). + * <p/> + * <b>Note :</b> This behaviour will be activated is {@link #failsIfWarning} is on. + * + * @parameter expression="${i18n.checkBundle}" default-value="true" + * @since 1.0.0 + */ + protected boolean checkBundle; + + /** + * A flag to show missing i18n translation. + * <p/> + * <b>Note :</b> Need the {@link #checkBundle} to be activated). + * + * @parameter expression="${i18n.showEmpty}" default-value="false" + * @since 1.0.0 + */ + protected boolean showEmpty; + + /** + * A flag to make the build fails if there is some warnings while generating + * bundle, says when it misses some translations. + * <p/> + * <b>Note :</b> This parameter should be used in a release profile to + * ensure bundles are complete. + * + * @parameter expression="${i18n.failsIfWarning}" default-value="false" + * @since 2.0 + */ + protected boolean failsIfWarning; + + /** to keep all none translated i18n keys by locale. */ + protected Map<Locale, SortedSet<String>> unsafeMapping; + + @Override + public void init() throws Exception { + super.init(); + + if (failsIfWarning) { + + // check bundle if wants to fail on unsafe bundles + checkBundle = true; + + unsafeMapping = new HashMap<Locale, SortedSet<String>>(); + } else { + unsafeMapping = null; + } + + createDirectoryIfNecessary(bundleOutputDir); + } + + protected void failsIfWarning() throws MojoFailureException { + if (!failsIfWarning) { + + // no check + return; + } + + if (unsafeMapping != null && !unsafeMapping.isEmpty()) { + + // there is at least one not complete bundle, faisl the build + throw new MojoFailureException( + "Bundles for locale(s) " + unsafeMapping.keySet() + + " are not complete. Use the -Di18n.showEmpty to see " + + "missing translations."); + } + } + +} Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -25,7 +25,6 @@ package org.nuiton.i18n.plugin.bundle; -import org.apache.maven.plugin.MojoFailureException; import org.nuiton.i18n.bundle.I18nBundleEntry; import org.nuiton.i18n.bundle.I18nBundleUtil; import org.nuiton.i18n.init.DefaultI18nInitializer; @@ -45,25 +44,18 @@ import java.util.Map.Entry; /** - * Créer un bundle pour une application finale. + * Generate an aggregate i18n bundle for all dependencies of the project. * <p/> - * Cela génère un merge de tous les fichiers i18n utilisés en un seul. + * The main idea is to have a final unique i18n bundle for a application to + * launch, this really improve i18n loading time to have a unique named bundle, + * no need to seek in all dependencies... * <p/> - * On utilise la dépendance sur les artifacts pour connaitre l'ordre le - * chargement des bundles. + * Moreover, this permits also to deal with order of i18n keys, more precisly, + * we want to use the higher level i18n key for an application. If the i18n + * key is present on a library, we want to be able to override it in + * application (or user wants it:)). * <p/> - * Si dans un bundle childs, la valeur de la clef est vide, on conserve alors - * celui du parent, - * <p/> - * Ainsi on obtient un bundle dont toutes les clefs sont traduites. - * <p/> - * Le but aussi d'utiliser un unique bundle est de gagner du temps au runtime - * car la recherche des bundles devient trop couteuse en temps lorsque l'on a de - * nombreuses dépendances (au dessus de 100 deps cela peut prendre plusieurs - * secondes, ce qui 'est pas acceptable). - * <p/> - * On a ajoute un second mode d'initialisation dans la clesse I18n pour - * n'utiliser qu'un seul bundle et courcircuiter le chargement couteux... + * This goal permits this using the dependencies graph order of artifacts. * * @author tchemit <chemit@codelutin.com> * @goal bundle @@ -73,49 +65,17 @@ * @requiresDependencyResolution runtime * @since 0.12 */ -public class BundleMojo extends AbstractI18nBundleMojo { +public class BundleMojo extends AbstractMakeI18nBundleMojo { /** - * Repertoire ou generer les bundles. - * - * @parameter expression="${i18n.bundleOutputDir}" default-value="${basedir}/target/generated-sources/resources/META-INF" - * @required - * @since 1.0.0 - */ - protected File bundleOutputDir; - - /** - * Nom du bundle a generer. - * - * @parameter expression="${i18n.bundleOutputName}" default-value="${project.artifactId}-i18n" - * @required - * @since 1.0.2 - */ - protected String bundleOutputName; - - /** - * Un drapeau pour vérifier que les bundles ne contiennent pas d'entrées - * vides. - * - * @parameter expression="${i18n.checkBundle}" default-value="true" - * @since 1.0.0 - */ - protected boolean checkBundle; - - /** - * Un drapeau pour afficher les entrées vides. (nécessite {@link - * #checkBundle} activé). - * - * @parameter expression="${i18n.showEmpty}" default-value="false" - * @since 1.0.0 - */ - protected boolean showEmpty; - - /** - * Un drapeau pour utiliser le répertoire parent du {@link #bundleOutputDir} - * comme répertoire de ressources à ajouter au build. + * A flag to use the parent of directory {@link #bundleOutputDir} + * as directory to add in build ressources. * <p/> - * Si ce drapeau n'est pas activé, alors on utilise directement le répertoire donné. + * If the flag is not activated, the, we use directly the given + * {@link #bundleOutputDir} directory. + * <p/> + * <b>Note :</b> By default we use the parent directory, since this is more + * natural, only special cases should desactivate this parameter. * * @parameter expression="${i18n.addBundleOuputDirParent}" default-value="true" * @since 2.0 @@ -123,35 +83,20 @@ protected boolean addBundleOuputDirParent; /** - * Un drapeau pour générer le fichier de définition i18n. + * A flag to generate the i18n definition file. * <p/> - * Ce fichier permet d'avoir les locales utilisables par I18n ainsi que les - * chemins (dans le classpath) des resources i18n utilisées pour construire - * le bundle final. + * This file contains all generated bundles and the paths of all i18n + * artifacts used to make it. * * @parameter expression="${i18n.generateDefinitionFile}" default-value="true" * @since 2.0 */ protected boolean generateDefinitionFile; - /** - * A flag to make the build fails if there is some warnings while generating - * bundle, says when it misses some translations. - * <p/> - * <b>Note :</b> This parameter should be used in a release profile to - * ensure bundles are complete. - * - * @parameter expression="${i18n.failsIfWarning}" default-value="false" - * @since 2.0 - */ - protected boolean failsIfWarning; - @Override public void init() throws Exception { super.init(); - createDirectoryIfNecessary(bundleOutputDir); - // ajout de repertoire de generation (le parent en fait) // dans les resources du projet @@ -180,13 +125,15 @@ Map<Locale, String> bundleDico = new LinkedHashMap<Locale, String>(locales.length); - List<Locale> unsafeLocales = new ArrayList<Locale>(); for (Locale locale : locales) { long t0 = System.nanoTime(); - File bundleOut = getI18nFile(bundleOutputDir, bundleOutputName, - locale, false); + File bundleOut = getI18nFile(bundleOutputDir, + bundleOutputName, + locale, + false + ); SortedProperties propertiesOut = new SortedProperties(encoding, false); @@ -241,47 +188,16 @@ PluginHelper.convertTime(t0, System.nanoTime()) + " (detected sentences : " + propertiesOut.size() + ")"); } - if (checkBundle || failsIfWarning) { - boolean localSafe = - checkBundle(locale, propertiesOut, showEmpty); - if (!localSafe) { - unsafeLocales.add(locale); - } + if (checkBundle) { + checkBundle(locale, propertiesOut, showEmpty, unsafeMapping); } } - if (failsIfWarning && !unsafeLocales.isEmpty()) { + failsIfWarning(); - // there is at least one not complete bundle, faisl the build - throw new MojoFailureException("Bundles for locale(s) " + unsafeLocales + " are not complete"); - } - if (generateDefinitionFile) { - // ecriture du ficher des definitions i18n (permet de faire une - // recherche exacte sur un fichier puis d'en deduire les bundles a - // charger - String f = String.format(DefaultI18nInitializer.UNIQUE_BUNDLE_DEF, - bundleOutputName); - File defOut = new File(bundleOutputDir, f); - if (!silent) { - getLog().info("prepare i18n definition " + - defOut.getAbsolutePath()); - } - SortedProperties p = new SortedProperties(encoding, false); - p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_LOCALES, bundles); - p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_VERSION, version); - for (Entry<Locale, String> e : bundleDico.entrySet()) { - p.setProperty(DefaultI18nInitializer.BUNDLES_FOR_LOCALE + - e.getKey().toString(), e.getValue()); - } - FileOutputStream out = new FileOutputStream(defOut); - try { - p.store(out, null); - } finally { - out.close(); - } - + generateDefinitionFile(version, bundleDico); } if (!silent && verbose) { getLog().info("done in " + @@ -289,6 +205,34 @@ } } + protected void generateDefinitionFile(String version, + Map<Locale, String> bundleDico) throws IOException { + + // ecriture du ficher des definitions i18n (permet de faire une + // recherche exacte sur un fichier puis d'en deduire les bundles a + // charger + String f = String.format(DefaultI18nInitializer.UNIQUE_BUNDLE_DEF, + bundleOutputName); + File defOut = new File(bundleOutputDir, f); + if (!silent) { + getLog().info("prepare i18n definition file in " + + defOut.getAbsolutePath()); + } + SortedProperties p = new SortedProperties(encoding, false); + p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_LOCALES, bundles); + p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_VERSION, version); + for (Entry<Locale, String> e : bundleDico.entrySet()) { + p.setProperty(DefaultI18nInitializer.BUNDLES_FOR_LOCALE + + e.getKey().toString(), e.getValue()); + } + FileOutputStream out = new FileOutputStream(defOut); + try { + p.store(out, null); + } finally { + out.close(); + } + } + @Override protected URL[] getCollectI18nResources(Locale locale) throws IOException { File file = getCollectOutputFile(locale, false); Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -48,9 +48,11 @@ import java.util.Map; /** - * Detects any i18n artifacts and store the result as a file. + * Detects any i18n artifacts in the dependencies of the project and store + * their references in a file. * <p/> - * Created: 24 déc. 2009 + * The generated file will be used by {@code bundle} mojo to generate the final + * aggregated bundle. * * @author tchemit <chemit@codelutin.com> * @goal collect-i18n-artifacts Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/TapestryBundleMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/TapestryBundleMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/TapestryBundleMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -40,25 +40,10 @@ /** - * Créer un bundle pour une application finale. + * Generates a unique bundle for a tapestry application. * <p/> - * Cela génère un merge de tous les fichiers i18n utilisés en un seul. - * <p/> - * On utilise la dépendance sur les artifacts pour connaitre l'ordre le - * chargement des bundles. - * <p/> - * Si dans un bundle childs, la valeur de la clef est vide, on conserve alors - * celui du parent, - * <p/> - * Ainsi on obtient un bundle dont toutes les clefs sont traduites. - * <p/> - * Le but aussi d'utiliser un unique bundle est de gagner du temps au runtime - * car la recherche des bundles devient trop couteuse en temps lorsque l'on a de - * nombreuses dépendances (au dessus de 100 deps cela peut prendre plusieurs - * secondes, ce qui 'est pas acceptable). - * <p/> - * On a ajoute un second mode d'initialisation dans la clesse I18n pour - * n'utiliser qu'un seul bundle et courcircuiter le chargement couteux... + * <b>Note :</b> The mojo has nothing specific to tapestry and should be renamed + * (or removed since the {@code bundle} mojo do the same with more options)... * * @author tchemit <chemit@codelutin.com> * @goal tapestry-bundle @@ -68,54 +53,9 @@ * @requiresDependencyResolution runtime * @since 1.2 */ -public class TapestryBundleMojo extends AbstractI18nBundleMojo { +public class TapestryBundleMojo extends AbstractMakeI18nBundleMojo { - /** - * Repertoire ou generer les bundles. - * - * @parameter expression="${i18n.bundleOutputDir}" default-value="${basedir}/src/main/webapp/WEB-INF" - * @required - * @since 1.0.0 - */ - protected File bundleOutputDir; - - /** - * Nom du bundle a generer. - * - * @parameter expression="${i18n.bundleOutputName}" default-value="app" - * @required - * @since 1.0.2 - */ - protected String bundleOutputName; - - /** - * Un drapeau pour vérifier que les bundles ne contiennent pas d'entrées - * vides. - * - * @parameter expression="${i18n.checkBundle}" default-value="true" - * @required - * @since 1.0.0 - */ - protected boolean checkBundle; - - /** - * Un drapeau pour afficher les entrées vides. (nécessite {@link - * #checkBundle} activé). - * - * @parameter expression="${i18n.showEmpty}" default-value="false" - * @required - * @since 1.0.0 - */ - protected boolean showEmpty; - @Override - public void init() throws Exception { - super.init(); - - createDirectoryIfNecessary(bundleOutputDir); - } - - @Override protected void doAction() throws Exception { long t00 = System.nanoTime(); @@ -185,21 +125,24 @@ " (detected sentences : " + propertiesOut.size() + ")"); } if (checkBundle) { - checkBundle(locale, propertiesOut, showEmpty); + checkBundle(locale, propertiesOut, showEmpty, unsafeMapping); } } + failsIfWarning(); + if (!silent && verbose) { getLog().info("done in " + PluginHelper.convertTime(t00, System.nanoTime())); } } + /** * @param root le repertoire ou sont stockes les fichiers i18n * @param artifactId le nom de l'artifact * @param locale le nom du bundle - * @param create <code>true</code> pour creer le fichier si non present + * @param create {@code true} pour creer le fichier si non present * @return le fichier i18n * @throws IOException si probleme lors de la creation du fichier */ Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -82,12 +82,20 @@ public abstract FileUpdater newFileUpdater(SourceEntry entry); /** - * Active la modification de cle. + * Build directory (used to know if files in sources are up-to-date). + * + * @parameter expression="${i18n.cp}" default-value="${basedir}/target/classes" + */ + protected File cp; + + /** + * To activate the modification of keys * <p/> - * Note: par defaut, on ne l'active pas (build sur serveur non ui). + * <b>Note :</b> By default not active, since it requires to have UI available + * and this is not acceptable for server build. * <p/> - * Note: Ce paramètre n'est plus actif, la fonctionnalité n'est plus - * disponible et sera remplacé par un autre goal. + * <b>Note :</b> At the moment the fully fonctionnality is no more available + * and will be recode in a separated goal (one day...) * * @parameter expression="${i18n.keysModifier}" default-value="false" * @deprecated since 1.2, will no more used @@ -96,24 +104,24 @@ protected boolean keysModifier; /** - * treate default entry + * To treate default entry offered by the mojo. * * @parameter expression="${i18n.treateDefaultEntry}" default-value="true" */ protected boolean treateDefaultEntry; /** - * Source entries (src+includes+excludes) . + * Source entries (src+includes+excludes) to process. * * @parameter expression="${i18n.entries}" */ protected I18nSourceEntry[] entries; /** - * flag to display touched files while parsing. + * Flag to display touched files while parsing. * <p/> - * Note: the value will be always <code>true</code> if {@link #verbose} is - * set at <code>true</code>. + * Note: the value will be always {@code true} if {@link #verbose} is + * set at {@code true}. * * @parameter expression="${i18n.showTouchedFiles}" default-value="${maven.verbose}" * @since 0.9 @@ -121,7 +129,7 @@ protected boolean showTouchedFiles; /** - * flag to save previous getter in a backup before doing parsing. + * Flag to save previous getter in a backup before doing parsing. * <p/> * Note: by default, do not perform backup (but it was here originaly so let * it possible...) Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -44,35 +44,40 @@ import java.io.LineNumberReader; /** - * Récupération des chaine a traduire depuis les fichiers java. + * To parse java files to detect new i18n keys. * - * @author julien + * <b>Note: </b> this goal must always be invoked before the {@code process-resources} + * phase, otherwise all files will be considered as uptodate. + * + * @author jruchaud <ruchaud@codelutin.com> + * @author tchemit <tchemit@codelutin.com> * @goal parserJava * @phase generate-resources */ public class ParserJavaMojo extends AbstractI18nParserMojo { /** - * Source entries (src+includes+excludes) . + * Root directory of the default entry. * - * @parameter expression="${i18n.defaultIncludes}" default-value="**\/*.java" + * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/java" */ - protected String defaultIncludes; + protected File defaultBasedir; /** - * default src for an entry. + * Default included files to process (ant-like expression). * - * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/java" + * @parameter expression="${i18n.defaultIncludes}" default-value="**\/*.java" */ - protected File defaultBasedir; + protected String defaultIncludes; /** - * Repertoire sources des fichiers i18n. + * Defines the file name of the getter where to put detected i18n keys + * while getter phase. * - * @parameter expression="${i18n.cp}" default-value="${basedir}/target/classes" - * @required + * @parameter expression="${i18n.outputGetter}" default-value="java.getter" + * @since 2.0 */ - protected File cp; + protected String outputGetter; @Override public String[] getDefaultIncludes() { @@ -108,7 +113,7 @@ @Override protected String getOutGetter() { - return "java.getter"; + return outputGetter; } @Override Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -42,9 +42,9 @@ /** * Find i18n keys from xworks xml validation files. - * + * <p/> * <b>Note: </b> this goal must always be invoked before the {@code process-resources} - * phase, otherwise all files will be considered as uptodate. + * phase, otherwise all files will be considered as uptodate. * * @author tchemit <chemit@codelutin.com> * @goal parserValidation @@ -55,18 +55,19 @@ final URL xworksResource = getClass().getResource("/xwork-validator-1.0.2.dtd"); /** - * Source entries (src+includes+excludes) . + * Root directory of the default entry. * - * @parameter expression="${i18n.defaultIncludes}" default-value="**\/**-validation.xml" + * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/resources" + * @required */ - protected String defaultIncludes; + protected File defaultBasedir; /** - * Where jaxx files should have been generated. + * Default included files to process (ant-like expression). * - * @parameter expression="${i18n.cp}" default-value="${basedir}/target/classes" + * @parameter expression="${i18n.defaultIncludes}" default-value="**\/**-validation.xml" */ - protected File cp; + protected String defaultIncludes; /** * Defines the core rules file used to detect i18n keys in xml validation @@ -81,14 +82,6 @@ protected String coreRuleFile; /** - * default src for an entry. - * - * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/resources" - * @required - */ - protected File defaultBasedir; - - /** * Always use the local xowrks dtd to increase performance. * * @parameter expression="${i18n.useLocalResolver}" default-value="true" @@ -97,7 +90,8 @@ protected boolean useLocalResolver; /** - * Defines the file name of the getter where to put detected i18n keys while getter phase. + * Defines the file name of the getter where to put detected i18n keys + * while getter phase. * * @parameter expression="${i18n.outputGetter}" default-value="validation.getter" * @since 2.0 Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java 2010-11-11 13:01:26 UTC (rev 1799) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java 2010-11-11 13:02:21 UTC (rev 1800) @@ -76,17 +76,6 @@ protected String coreRuleFile; /** - * Defines where included files will be copied. - * <p/> - * Knowing this permits us to parse included xml files only if they were - * modified from a previous build. - * - * @parameter expression="${i18n.cp}" default-value="${basedir}/target/classes" - * @since 2.0 - */ - protected File cp; - - /** * Defines the file name of the getter where to put detected i18n keys while getter phase. * * @parameter expression="${i18n.outputGetter}" default-value="xmlUser.getter"
participants (1)
-
tchemit@users.nuiton.org