I18n-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
July 2012
- 1 participants
- 8 discussions
r1965 - in trunk: ant-i18n-task i18n-maven-plugin nuiton-i18n
by tchemit@users.nuiton.org 09 Jul '12
by tchemit@users.nuiton.org 09 Jul '12
09 Jul '12
Author: tchemit
Date: 2012-07-09 18:44:49 +0200 (Mon, 09 Jul 2012)
New Revision: 1965
Url: http://nuiton.org/repositories/revision/i18n/1965
Log:
remove svn properties from pom
Modified:
trunk/ant-i18n-task/pom.xml
trunk/i18n-maven-plugin/pom.xml
trunk/nuiton-i18n/pom.xml
Modified: trunk/ant-i18n-task/pom.xml
===================================================================
--- trunk/ant-i18n-task/pom.xml 2012-07-09 13:53:44 UTC (rev 1964)
+++ trunk/ant-i18n-task/pom.xml 2012-07-09 16:44:49 UTC (rev 1965)
@@ -2,9 +2,6 @@
<!--
#%L
I18n :: Ant task
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2010 CodeLutin
%%
Modified: trunk/i18n-maven-plugin/pom.xml
===================================================================
--- trunk/i18n-maven-plugin/pom.xml 2012-07-09 13:53:44 UTC (rev 1964)
+++ trunk/i18n-maven-plugin/pom.xml 2012-07-09 16:44:49 UTC (rev 1965)
@@ -2,9 +2,6 @@
<!--
#%L
I18n :: Maven Plugin
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2007 - 2010 CodeLutin
%%
Modified: trunk/nuiton-i18n/pom.xml
===================================================================
--- trunk/nuiton-i18n/pom.xml 2012-07-09 13:53:44 UTC (rev 1964)
+++ trunk/nuiton-i18n/pom.xml 2012-07-09 16:44:49 UTC (rev 1965)
@@ -2,9 +2,6 @@
<!--
#%L
I18n :: Api
-
- $Id$
- $HeadURL$
%%
Copyright (C) 2004 - 2010 CodeLutin
%%
1
0
r1964 - in trunk/nuiton-i18n-editor: . src/main/java/org/nuiton/i18n/editor src/main/java/org/nuiton/i18n/editor/ui/project/tabs src/main/resources/i18n
by tchemit@users.nuiton.org 09 Jul '12
by tchemit@users.nuiton.org 09 Jul '12
09 Jul '12
Author: tchemit
Date: 2012-07-09 15:53:44 +0200 (Mon, 09 Jul 2012)
New Revision: 1964
Url: http://nuiton.org/repositories/revision/i18n/1964
Log:
fix build
Added:
trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor_en_GB.properties
trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor_fr_FR.properties
Removed:
trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-en_GB.properties
trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-fr_FR.properties
Modified:
trunk/nuiton-i18n-editor/pom.xml
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/I18nEditor.java
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/AbstractProjectTabPanelUI.jaxx
Modified: trunk/nuiton-i18n-editor/pom.xml
===================================================================
--- trunk/nuiton-i18n-editor/pom.xml 2012-07-09 13:19:33 UTC (rev 1963)
+++ trunk/nuiton-i18n-editor/pom.xml 2012-07-09 13:53:44 UTC (rev 1964)
@@ -1,4 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%L
+ I18n :: I18n Editor
+ %%
+ Copyright (C) 2010 CodeLutin
+ %%
+ 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 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 Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>. ##%*
+ #L%
+ -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
@@ -50,7 +71,7 @@
<!-- *** Project Information ************************************* -->
<!-- ************************************************************* -->
- <name>Nuiton I18n Editor</name>
+ <name>I18n :: I18n Editor</name>
<description>Editeur de fichier i18n</description>
<inceptionYear>2008</inceptionYear>
@@ -66,7 +87,6 @@
<!-- ************************************************************* -->
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
- <packaging>jar</packaging>
<properties>
@@ -77,7 +97,6 @@
<nuitonUtilsVersion>1.2</nuitonUtilsVersion>
<!-- default license to use -->
- <licensePluginVersion>1.1</licensePluginVersion>
<license.licenseName>gpl_v3</license.licenseName>
<!-- jnlp -->
@@ -93,6 +112,7 @@
<jaxx.useUIManagerForIcon>true</jaxx.useUIManagerForIcon>
<jaxx.addProjectClassPath>true</jaxx.addProjectClassPath>
<jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
+ <jaxx.autoImportCss>true</jaxx.autoImportCss>
<!-- generate license bundled files -->
<license.generateBundle>true</license.generateBundle>
@@ -165,7 +185,6 @@
<artifactId>i18n-maven-plugin</artifactId>
<version>${project.version}</version>
<configuration>
- <silent>true</silent>
<entries>
<entry>
<basedir>${maven.gen.dir}/java/</basedir>
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/I18nEditor.java
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/I18nEditor.java 2012-07-09 13:19:33 UTC (rev 1963)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/I18nEditor.java 2012-07-09 13:53:44 UTC (rev 1964)
@@ -25,12 +25,14 @@
import org.nuiton.i18n.I18n;
import org.nuiton.i18n.editor.ui.I18nEditorUI;
import org.nuiton.i18n.editor.ui.I18nEditorUIHandler;
+import org.nuiton.i18n.init.DefaultI18nInitializer;
import org.nuiton.util.StringUtil;
import javax.swing.SwingUtilities;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
+import java.util.Locale;
import static org.nuiton.i18n.I18n._;
@@ -57,6 +59,8 @@
startingTime = System.nanoTime();
log.info("I18nEditor start at " + new Date() + " args: " + Arrays.toString(args));
+ I18n.init(new DefaultI18nInitializer("nuiton-i18n-editor-i18n"), Locale.getDefault());
+
try {
I18nEditorContext context = init(args);
@@ -135,7 +139,7 @@
config.parse(args);
// init i18n
- I18n.init(null, config.getLocale());
+ I18n.init(new DefaultI18nInitializer("nuiton-i18n-editor-i18n"), config.getLocale());
log.info(_("i18neditor.message.config.loaded", config.getVersion()));
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/AbstractProjectTabPanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/AbstractProjectTabPanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/AbstractProjectTabPanelUI.jaxx 2012-07-09 13:53:44 UTC (rev 1964)
@@ -26,13 +26,16 @@
implements='jaxx.runtime.swing.wizard.WizardStepUI<ProjectStep, ProjectUIModel>'>
<import>
-static org.nuiton.i18n.I18n.n_
org.nuiton.i18n.editor.I18nEditorContext
org.nuiton.i18n.editor.I18nEditorConfig
org.nuiton.i18n.editor.ui.I18nEditorUIHandler
org.nuiton.i18n.editor.ui.project.ProjectStep
org.nuiton.i18n.editor.ui.project.ProjectUIModel
+javax.swing.border.LineBorder
+javax.swing.JLabel
+java.awt.Color
+static org.nuiton.i18n.I18n.n_
static org.nuiton.i18n.I18n._
</import>
Deleted: trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-en_GB.properties
===================================================================
--- trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-en_GB.properties 2012-07-09 13:19:33 UTC (rev 1963)
+++ trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-en_GB.properties 2012-07-09 13:53:44 UTC (rev 1964)
@@ -1,121 +0,0 @@
-i18neditor.about.message=<h3>Nuiton i18n editor</h3><hr/><p>Project realised by <a href\="http\://codelutin.com">Codelutin</a> in 2009.</p><br/><hr/>For more information, visit the <a href\="http\://maven-site.nuiton.org/i18n/i18neditor">project's site</a>.
-i18neditor.action.about=About
-i18neditor.action.about.tip=Show about screen
-i18neditor.action.apply=Apply
-i18neditor.action.apply.tip=
-i18neditor.action.cancel=Cancel
-i18neditor.action.cancel.tip=Cancel
-i18neditor.action.choose.directory.source.description=
-i18neditor.action.choose.jar.source=
-i18neditor.action.choose.jar.source.description=
-i18neditor.action.choose.project=
-i18neditor.action.choose.project.description=
-i18neditor.action.choose.projectDir=
-i18neditor.action.closeProject=Close the project
-i18neditor.action.commandline.configure=Configure the application
-i18neditor.action.commandline.disable.main.ui=Do not launch main ui
-i18neditor.action.commandline.help=Show this help
-i18neditor.action.configuration=Preferences
-i18neditor.action.configuration.tip=show preferences screen
-i18neditor.action.create=Create
-i18neditor.action.createProject=Create project
-i18neditor.action.delete.key.tip=
-i18neditor.action.deleteProject=Delete project
-i18neditor.action.editProject=Modify project
-i18neditor.action.exit=Exit
-i18neditor.action.exit.tip=Quit
-i18neditor.action.fullscreen=Full screen
-i18neditor.action.fullscreen.tip=Go into full screen mode
-i18neditor.action.goto.next.stage=Continue
-i18neditor.action.goto.next.stage.tip=
-i18neditor.action.goto.previous.stage=Go back
-i18neditor.action.goto.previous.stage.tip=
-i18neditor.action.help=Show help
-i18neditor.action.help.tip=Show help
-i18neditor.action.new.bundle=New
-i18neditor.action.new.package=New
-i18neditor.action.normalscreen=Frame mode
-i18neditor.action.normalscreen.tip=Go back in frame mode
-i18neditor.action.openOtherProject=Open other project
-i18neditor.action.openProject=Open a project
-i18neditor.action.reload.application=
-i18neditor.action.reset.value.tip=
-i18neditor.action.save.value.tip=
-i18neditor.action.showHelp.tip=Show context sensitve help
-i18neditor.action.site=Website
-i18neditor.action.site.tip=Go to web site of application
-i18neditor.bundle.name=Locale \: %1$s
-i18neditor.choose.project.to.delete=
-i18neditor.common.descrition=
-i18neditor.common.resume=Resume
-i18neditor.config.category.directories=Directories
-i18neditor.config.category.directories.description=Directories used by the application
-i18neditor.config.category.ui=Application
-i18neditor.config.category.ui.description=Other options used by the application
-i18neditor.config.configFileName.description=configuration file
-i18neditor.config.defaultProjectsDirectory.description=default directory where to store project definitions (*.i18nproject)
-i18neditor.config.defaultTmpDirectory.description=tempory directory used by the application
-i18neditor.config.ui.fullscreen=choose initial ui mode (true for full screen, false otherwise)
-i18neditor.config.ui.locale=Language used by application (fr_FR, en_GB)
-i18neditor.createProject.table.bundles.select=
-i18neditor.createProject.table.bundles.select.tip=
-i18neditor.createProject.table.bundles.url=
-i18neditor.createProject.table.bundles.url.tip=
-i18neditor.createbundle.label=Create a new bundle for all packages known
-i18neditor.createbundle.newlanguage=NEw language
-i18neditor.createbundle.newlocale=New locale
-i18neditor.createbundle.title=Create bundle
-i18neditor.createpackage.label=Create a new package (for all bundles known)
-i18neditor.createpackage.newpackage=NEw language
-i18neditor.createpackage.title=Create package
-i18neditor.createproject.common.select=
-i18neditor.createproject.directory.source.label=
-i18neditor.createproject.doPersist=
-i18neditor.createproject.jar.source.label=
-i18neditor.createproject.name.label=
-i18neditor.createproject.no.type=
-i18neditor.createproject.storeProject.directory=
-i18neditor.createproject.storeProject.path=
-i18neditor.createproject.uniqueJarDefinition=
-i18neditor.createproject.uniqueJarDefinition.tip=
-i18neditor.createproject.url=
-i18neditor.init.closed=Application was closed at %1$s
-i18neditor.init.context.done=Initialisation of context done in %1$s.
-i18neditor.init.ui.done=GUI initialized
-i18neditor.main.menu.file=File
-i18neditor.menu.bundles=Bundles
-i18neditor.menu.help=Help
-i18neditor.menu.packages=Packages
-i18neditor.menu.storeall=Save all
-i18neditor.message.config.loaded=Config of nuiton-i18n-editor v %1$s was loaded.
-i18neditor.message.help.usage=Help of nuiton-i18n-editor v %1$s
-i18neditor.message.no.project.loaded=< No project loaded >
-i18neditor.no.keys=< No defined key >
-i18neditor.package.name=Package \: %1$s
-i18neditor.project.info.tip=Click here to display project's informations
-i18neditor.project.step.chooseProjectType=
-i18neditor.project.step.chooseProjectType.description=
-i18neditor.project.step.configureProject=
-i18neditor.project.step.configureProject.description=
-i18neditor.project.step.label=
-i18neditor.project.step.persist=
-i18neditor.project.step.persist.description=
-i18neditor.project.step.resume=
-i18neditor.project.step.resume.description=
-i18neditor.project.step.selecteBundles=
-i18neditor.project.step.selecteBundles.description=
-i18neditor.project.type.directory=
-i18neditor.project.type.directory.description=
-i18neditor.project.type.jar=
-i18neditor.project.type.jar.description=
-i18neditor.resource.name=Resource \: %1$s
-i18neditor.title=Nuiton i18n editor < Project %1$s >
-i18neditor.title.about=About Nuiton i18n editor
-i18neditor.title.choose.directory.source=
-i18neditor.title.choose.jar.source=
-i18neditor.title.choose.project=
-i18neditor.title.choose.projectDir=
-i18neditor.title.noproject=Nuiton i18n editor < no project loaded >
-i18neditor.title.project.info=Project's informations
-i18neditor.warning.nimbus.landf=Could not find nymbus look and feel, please use at least a 1.6u10 version of sun jre
-i18neditor.warning.no.ui=No ui environment detected\!
Deleted: trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-fr_FR.properties
===================================================================
--- trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-fr_FR.properties 2012-07-09 13:19:33 UTC (rev 1963)
+++ trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor-fr_FR.properties 2012-07-09 13:53:44 UTC (rev 1964)
@@ -1,121 +0,0 @@
-i18neditor.about.message=<h3>Nuiton i18n editor</h3><hr/><p>Projet r\u00E9alis\u00E9 par la soci\u00E9t\u00E9 <a href\="http\://codelutin.com">Codelutin</a> en 2009.</p><br/><hr/>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.nuiton.org/i18n/i18neditor">site du projet</a>.
-i18neditor.action.about=A propos
-i18neditor.action.about.tip=Afficher l'a propos
-i18neditor.action.apply=Appliquer
-i18neditor.action.apply.tip=Appliquer
-i18neditor.action.cancel=Annuler
-i18neditor.action.cancel.tip=Annuler
-i18neditor.action.choose.directory.source.description=R\u00E9pertoire
-i18neditor.action.choose.jar.source=Choisir ce jar
-i18neditor.action.choose.jar.source.description=Fichier jar (*.jar)
-i18neditor.action.choose.project=Choisir ce projet
-i18neditor.action.choose.project.description=Fichier de d\u00E9finition de project (*.i18nproject)
-i18neditor.action.choose.projectDir=Choisir ce r\u00E9pertoire
-i18neditor.action.closeProject=Fermer le projet
-i18neditor.action.commandline.configure=Configurer l'application
-i18neditor.action.commandline.disable.main.ui=Ne pas lancer l'interface graphique principale
-i18neditor.action.commandline.help=Voir l'aide
-i18neditor.action.configuration=Pr\u00E9f\u00E9rences
-i18neditor.action.configuration.tip=Modifier les pr\u00E9f\u00E9rences
-i18neditor.action.create=Cr\u00E9er
-i18neditor.action.createProject=Cr\u00E9er un projet
-i18neditor.action.delete.key.tip=Supprimer cette traduction
-i18neditor.action.deleteProject=Supprimer un projet
-i18neditor.action.editProject=Modifier le projet
-i18neditor.action.exit=Quitter
-i18neditor.action.exit.tip=Quitter l'application
-i18neditor.action.fullscreen=Plein \u00E9cran
-i18neditor.action.fullscreen.tip=Passer en mode Plein \u00E9cran
-i18neditor.action.goto.next.stage=Continuer
-i18neditor.action.goto.next.stage.tip=Continuer vers l'\u00E9tape suivante
-i18neditor.action.goto.previous.stage=Revenir
-i18neditor.action.goto.previous.stage.tip=Revenir \u00E0 l'\u00E9tape pr\u00E9c\u00E9dente
-i18neditor.action.help=Aide
-i18neditor.action.help.tip=Affichier l'aide
-i18neditor.action.new.bundle=Nouveau
-i18neditor.action.new.package=Nouveau
-i18neditor.action.normalscreen=Mode fen\u00EAtre
-i18neditor.action.normalscreen.tip=retour en mode fen\u00EAtre
-i18neditor.action.openOtherProject=Ouvrir un projet (autre r\u00E9pertoire)
-i18neditor.action.openProject=Ouvrir un projet...
-i18neditor.action.reload.application=
-i18neditor.action.reset.value.tip=R\u00E9initialiser
-i18neditor.action.save.value.tip=Sauver la traduction modifi\u00E9e
-i18neditor.action.showHelp.tip=Voir l'aide contextuelle
-i18neditor.action.site=Site
-i18neditor.action.site.tip=Acc\u00E9der au site du projet
-i18neditor.bundle.name=Localisation \: %1$s
-i18neditor.choose.project.to.delete=Choisir le projet \u00E0 supprimer
-i18neditor.common.descrition=Description
-i18neditor.common.resume=R\u00E9sum\u00E9
-i18neditor.config.category.directories=R\u00E9pertoires
-i18neditor.config.category.directories.description=Les r\u00E9pertoires utilis\u00E9es par l'application
-i18neditor.config.category.ui=Application
-i18neditor.config.category.ui.description=Les autres options de l'application
-i18neditor.config.configFileName.description=Le nom du fichier de configuration
-i18neditor.config.defaultProjectsDirectory.description=Le r\u00E9pertoire o\u00F9 sont sauvegarder les d\u00E9finitions de projets
-i18neditor.config.defaultTmpDirectory.description=Le r\u00E9pertoire temporaire par d\u00E9faut
-i18neditor.config.ui.fullscreen=Pour afficher l'aplication en mode pleine \u00E9cran
-i18neditor.config.ui.locale=Langue utilis\u00E9e par l'application (fr_FR, en_GB)
-i18neditor.createProject.table.bundles.select=...
-i18neditor.createProject.table.bundles.select.tip=S\u00E9lectionner - D\u00E9selectionner toutes les urls
-i18neditor.createProject.table.bundles.url=Localisation
-i18neditor.createProject.table.bundles.url.tip=location du bundle
-i18neditor.createbundle.label=Cr\u00E9er un nouveau bundle pour les paquetages donn\u00E9es
-i18neditor.createbundle.newlanguage=Langue
-i18neditor.createbundle.newlocale=Pays
-i18neditor.createbundle.title=Nouveau bundle
-i18neditor.createpackage.label=Cr\u00E9er un nouveau paquetage (pour tous les bundles connus)
-i18neditor.createpackage.newpackage=Nouveau paquetage
-i18neditor.createpackage.title=Cr\u00E9er un nouveau paquetage
-i18neditor.createproject.common.select=...
-i18neditor.createproject.directory.source.label=R\u00E9pertoire de sauvegarde
-i18neditor.createproject.doPersist=Sauver la d\u00E9finition du projet
-i18neditor.createproject.jar.source.label=Choisir le jar source
-i18neditor.createproject.name.label=Nom du projet
-i18neditor.createproject.no.type=< Aucune type de projet s\u00E9lectionn\u00E9 >
-i18neditor.createproject.storeProject.directory=R\u00E9pertoire de sauvegarde
-i18neditor.createproject.storeProject.path=Fichier de sauvegarde
-i18neditor.createproject.uniqueJarDefinition=Utilisation d'un bundle final
-i18neditor.createproject.uniqueJarDefinition.tip=Utilisation d'un bundle final (un seul bundle)
-i18neditor.createproject.url=Localisation
-i18neditor.init.closed=Nuiton-i18n-editor a \u00E9t\u00E9 ferm\u00E9 \u00E0 %1$s
-i18neditor.init.context.done=Initialisation du contexte termin\u00E9e en %1$s.
-i18neditor.init.ui.done=Initialisation de l'interface graphique termin\u00E9e.
-i18neditor.main.menu.file=Fichier
-i18neditor.menu.bundles=Bundles
-i18neditor.menu.help=Aide
-i18neditor.menu.packages=Paquetages
-i18neditor.menu.storeall=Sauvegarder
-i18neditor.message.config.loaded=Configuration de nuiton-i18n-editor v. %1$s charg\u00E9e.
-i18neditor.message.help.usage=Aide de nuiton-i18n-editor v %1$s
-i18neditor.message.no.project.loaded=< Aucun projet charg\u00E9 >
-i18neditor.no.keys=< Aucune clef definie >
-i18neditor.package.name=Paquetage \: %1$s
-i18neditor.project.info.tip=Cliquer ici pour obtenir des informations sur le projet charg\u00E9
-i18neditor.project.step.chooseProjectType=Type de projet
-i18neditor.project.step.chooseProjectType.description=Choisir le type de projet \u00E0 ouvrir
-i18neditor.project.step.configureProject=Configuration
-i18neditor.project.step.configureProject.description=Configurer le projet
-i18neditor.project.step.label=Etape %1$d/%2$d \: %3$s
-i18neditor.project.step.persist=Sauvegarde
-i18neditor.project.step.persist.description=Permet de sauvegarder la d\u00E9finition du projet
-i18neditor.project.step.resume=Resume
-i18neditor.project.step.resume.description=Voir le r\u00E9sum\u00E9 du projet \u00E0 ouvrir
-i18neditor.project.step.selecteBundles=Bundles
-i18neditor.project.step.selecteBundles.description=Choisir les bundles du projet parmi ceux d\u00E9tect\u00E9s
-i18neditor.project.type.directory=R\u00E9pertoire
-i18neditor.project.type.directory.description=Ouvrir un projet \u00E0 partir d'un r\u00E9pertoire
-i18neditor.project.type.jar=Jar (ou zip)
-i18neditor.project.type.jar.description=Ouvrir un projet \u00E0 partir d'un jar
-i18neditor.resource.name=Resource \: %1$s
-i18neditor.title=Nuiton i18n editor < Projet %1$s >
-i18neditor.title.about=A propos de nuiton-i18n-editor...
-i18neditor.title.choose.directory.source=Choisir le r\u00E9pertoire
-i18neditor.title.choose.jar.source=Choisir un fichier de type 'jar'
-i18neditor.title.choose.project=Choisir le fichier de d\u00E9finition d'un projet
-i18neditor.title.choose.projectDir=Choisir une d\u00E9finition de projet
-i18neditor.title.noproject=Nuiton i18n editor < aucun projet charg\u00E9 >
-i18neditor.title.project.info=Informations sur le projet
-i18neditor.warning.nimbus.landf=Le look and Feel Nimbus n'a pas \u00E9t\u00E9 trouv\u00E9, il faut au moins la version 1.6u10 de java.
-i18neditor.warning.no.ui=Aucun environnement graphique d\u00E9tect\u00E9
Added: trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor_en_GB.properties
===================================================================
--- trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor_en_GB.properties (rev 0)
+++ trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor_en_GB.properties 2012-07-09 13:53:44 UTC (rev 1964)
@@ -0,0 +1,121 @@
+i18neditor.about.message=<h3>Nuiton i18n editor</h3><hr/><p>Project realised by <a href\="http\://codelutin.com">Codelutin</a> in 2009.</p><br/><hr/>For more information, visit the <a href\="http\://maven-site.nuiton.org/i18n/i18neditor">project's site</a>.
+i18neditor.action.about=About
+i18neditor.action.about.tip=Show about screen
+i18neditor.action.apply=Apply
+i18neditor.action.apply.tip=
+i18neditor.action.cancel=Cancel
+i18neditor.action.cancel.tip=Cancel
+i18neditor.action.choose.directory.source.description=
+i18neditor.action.choose.jar.source=
+i18neditor.action.choose.jar.source.description=
+i18neditor.action.choose.project=
+i18neditor.action.choose.project.description=
+i18neditor.action.choose.projectDir=
+i18neditor.action.closeProject=Close the project
+i18neditor.action.commandline.configure=Configure the application
+i18neditor.action.commandline.disable.main.ui=Do not launch main ui
+i18neditor.action.commandline.help=Show this help
+i18neditor.action.configuration=Preferences
+i18neditor.action.configuration.tip=show preferences screen
+i18neditor.action.create=Create
+i18neditor.action.createProject=Create project
+i18neditor.action.delete.key.tip=
+i18neditor.action.deleteProject=Delete project
+i18neditor.action.editProject=Modify project
+i18neditor.action.exit=Exit
+i18neditor.action.exit.tip=Quit
+i18neditor.action.fullscreen=Full screen
+i18neditor.action.fullscreen.tip=Go into full screen mode
+i18neditor.action.goto.next.stage=Continue
+i18neditor.action.goto.next.stage.tip=
+i18neditor.action.goto.previous.stage=Go back
+i18neditor.action.goto.previous.stage.tip=
+i18neditor.action.help=Show help
+i18neditor.action.help.tip=Show help
+i18neditor.action.new.bundle=New
+i18neditor.action.new.package=New
+i18neditor.action.normalscreen=Frame mode
+i18neditor.action.normalscreen.tip=Go back in frame mode
+i18neditor.action.openOtherProject=Open other project
+i18neditor.action.openProject=Open a project
+i18neditor.action.reload.application=
+i18neditor.action.reset.value.tip=
+i18neditor.action.save.value.tip=
+i18neditor.action.showHelp.tip=Show context sensitve help
+i18neditor.action.site=Website
+i18neditor.action.site.tip=Go to web site of application
+i18neditor.bundle.name=Locale \: %1$s
+i18neditor.choose.project.to.delete=
+i18neditor.common.descrition=
+i18neditor.common.resume=Resume
+i18neditor.config.category.directories=Directories
+i18neditor.config.category.directories.description=Directories used by the application
+i18neditor.config.category.ui=Application
+i18neditor.config.category.ui.description=Other options used by the application
+i18neditor.config.configFileName.description=configuration file
+i18neditor.config.defaultProjectsDirectory.description=default directory where to store project definitions (*.i18nproject)
+i18neditor.config.defaultTmpDirectory.description=tempory directory used by the application
+i18neditor.config.ui.fullscreen=choose initial ui mode (true for full screen, false otherwise)
+i18neditor.config.ui.locale=Language used by application (fr_FR, en_GB)
+i18neditor.createProject.table.bundles.select=
+i18neditor.createProject.table.bundles.select.tip=
+i18neditor.createProject.table.bundles.url=
+i18neditor.createProject.table.bundles.url.tip=
+i18neditor.createbundle.label=Create a new bundle for all packages known
+i18neditor.createbundle.newlanguage=NEw language
+i18neditor.createbundle.newlocale=New locale
+i18neditor.createbundle.title=Create bundle
+i18neditor.createpackage.label=Create a new package (for all bundles known)
+i18neditor.createpackage.newpackage=NEw language
+i18neditor.createpackage.title=Create package
+i18neditor.createproject.common.select=
+i18neditor.createproject.directory.source.label=
+i18neditor.createproject.doPersist=
+i18neditor.createproject.jar.source.label=
+i18neditor.createproject.name.label=
+i18neditor.createproject.no.type=
+i18neditor.createproject.storeProject.directory=
+i18neditor.createproject.storeProject.path=
+i18neditor.createproject.uniqueJarDefinition=
+i18neditor.createproject.uniqueJarDefinition.tip=
+i18neditor.createproject.url=
+i18neditor.init.closed=Application was closed at %1$s
+i18neditor.init.context.done=Initialisation of context done in %1$s.
+i18neditor.init.ui.done=GUI initialized
+i18neditor.main.menu.file=File
+i18neditor.menu.bundles=Bundles
+i18neditor.menu.help=Help
+i18neditor.menu.packages=Packages
+i18neditor.menu.storeall=Save all
+i18neditor.message.config.loaded=Config of nuiton-i18n-editor v %1$s was loaded.
+i18neditor.message.help.usage=Help of nuiton-i18n-editor v %1$s
+i18neditor.message.no.project.loaded=< No project loaded >
+i18neditor.no.keys=< No defined key >
+i18neditor.package.name=Package \: %1$s
+i18neditor.project.info.tip=Click here to display project's informations
+i18neditor.project.step.chooseProjectType=
+i18neditor.project.step.chooseProjectType.description=
+i18neditor.project.step.configureProject=
+i18neditor.project.step.configureProject.description=
+i18neditor.project.step.label=
+i18neditor.project.step.persist=
+i18neditor.project.step.persist.description=
+i18neditor.project.step.resume=
+i18neditor.project.step.resume.description=
+i18neditor.project.step.selecteBundles=
+i18neditor.project.step.selecteBundles.description=
+i18neditor.project.type.directory=
+i18neditor.project.type.directory.description=
+i18neditor.project.type.jar=
+i18neditor.project.type.jar.description=
+i18neditor.resource.name=Resource \: %1$s
+i18neditor.title=Nuiton i18n editor < Project %1$s >
+i18neditor.title.about=About Nuiton i18n editor
+i18neditor.title.choose.directory.source=
+i18neditor.title.choose.jar.source=
+i18neditor.title.choose.project=
+i18neditor.title.choose.projectDir=
+i18neditor.title.noproject=Nuiton i18n editor < no project loaded >
+i18neditor.title.project.info=Project's informations
+i18neditor.warning.nimbus.landf=Could not find nymbus look and feel, please use at least a 1.6u10 version of sun jre
+i18neditor.warning.no.ui=No ui environment detected\!
Added: trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor_fr_FR.properties
===================================================================
--- trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor_fr_FR.properties (rev 0)
+++ trunk/nuiton-i18n-editor/src/main/resources/i18n/nuiton-i18n-editor_fr_FR.properties 2012-07-09 13:53:44 UTC (rev 1964)
@@ -0,0 +1,121 @@
+i18neditor.about.message=<h3>Nuiton i18n editor</h3><hr/><p>Projet réalisé par la société <a href\="http\://codelutin.com">Codelutin</a> en 2009.</p><br/><hr/>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.nuiton.org/i18n/i18neditor">site du projet</a>.
+i18neditor.action.about=A propos
+i18neditor.action.about.tip=Afficher l'à propos
+i18neditor.action.apply=Appliquer
+i18neditor.action.apply.tip=Appliquer
+i18neditor.action.cancel=Annuler
+i18neditor.action.cancel.tip=Annuler
+i18neditor.action.choose.directory.source.description=Répertoire
+i18neditor.action.choose.jar.source=Choisir ce jar
+i18neditor.action.choose.jar.source.description=Fichier jar (*.jar)
+i18neditor.action.choose.project=Choisir ce projet
+i18neditor.action.choose.project.description=Fichier de définition de project (*.i18nproject)
+i18neditor.action.choose.projectDir=Choisir ce répertoire
+i18neditor.action.closeProject=Fermer le projet
+i18neditor.action.commandline.configure=Configurer l'application
+i18neditor.action.commandline.disable.main.ui=Ne pas lancer l'interface graphique principale
+i18neditor.action.commandline.help=Voir l'aide
+i18neditor.action.configuration=Préférences
+i18neditor.action.configuration.tip=Modifier les préférences
+i18neditor.action.create=Créer
+i18neditor.action.createProject=Créer un projet
+i18neditor.action.delete.key.tip=Supprimer cette traduction
+i18neditor.action.deleteProject=Supprimer un projet
+i18neditor.action.editProject=Modifier le projet
+i18neditor.action.exit=Quitter
+i18neditor.action.exit.tip=Quitter l'application
+i18neditor.action.fullscreen=Plein écran
+i18neditor.action.fullscreen.tip=Passer en mode Plein écran
+i18neditor.action.goto.next.stage=Continuer
+i18neditor.action.goto.next.stage.tip=Continuer vers l'étape suivante
+i18neditor.action.goto.previous.stage=Revenir
+i18neditor.action.goto.previous.stage.tip=Revenir à l'étape précédente
+i18neditor.action.help=Aide
+i18neditor.action.help.tip=Affichier l'aide
+i18neditor.action.new.bundle=Nouveau
+i18neditor.action.new.package=Nouveau
+i18neditor.action.normalscreen=Mode fenêtre
+i18neditor.action.normalscreen.tip=retour en mode fenêtre
+i18neditor.action.openOtherProject=Ouvrir un projet (autre répertoire)
+i18neditor.action.openProject=Ouvrir un projet...
+i18neditor.action.reload.application=
+i18neditor.action.reset.value.tip=Réinitialiser
+i18neditor.action.save.value.tip=Sauver la traduction modifiée
+i18neditor.action.showHelp.tip=Voir l'aide contextuelle
+i18neditor.action.site=Site
+i18neditor.action.site.tip=Accéder au site du projet
+i18neditor.bundle.name=Localisation \: %1$s
+i18neditor.choose.project.to.delete=Choisir le projet à supprimer
+i18neditor.common.descrition=Description
+i18neditor.common.resume=Résumé
+i18neditor.config.category.directories=Répertoires
+i18neditor.config.category.directories.description=Les répertoires utilisées par l'application
+i18neditor.config.category.ui=Application
+i18neditor.config.category.ui.description=Les autres options de l'application
+i18neditor.config.configFileName.description=Le nom du fichier de configuration
+i18neditor.config.defaultProjectsDirectory.description=Le répertoire où sont sauvegarder les définitions de projets
+i18neditor.config.defaultTmpDirectory.description=Le répertoire temporaire par défaut
+i18neditor.config.ui.fullscreen=Pour afficher l'aplication en mode pleine écran
+i18neditor.config.ui.locale=Langue utilisée par l'application (fr_FR, en_GB)
+i18neditor.createProject.table.bundles.select=...
+i18neditor.createProject.table.bundles.select.tip=Sélectionner - Déselectionner toutes les urls
+i18neditor.createProject.table.bundles.url=Localisation
+i18neditor.createProject.table.bundles.url.tip=location du bundle
+i18neditor.createbundle.label=Créer un nouveau bundle pour les paquetages données
+i18neditor.createbundle.newlanguage=Langue
+i18neditor.createbundle.newlocale=Pays
+i18neditor.createbundle.title=Nouveau bundle
+i18neditor.createpackage.label=Créer un nouveau paquetage (pour tous les bundles connus)
+i18neditor.createpackage.newpackage=Nouveau paquetage
+i18neditor.createpackage.title=Créer un nouveau paquetage
+i18neditor.createproject.common.select=...
+i18neditor.createproject.directory.source.label=Répertoire de sauvegarde
+i18neditor.createproject.doPersist=Sauver la définition du projet
+i18neditor.createproject.jar.source.label=Choisir le jar source
+i18neditor.createproject.name.label=Nom du projet
+i18neditor.createproject.no.type=< Aucune type de projet sélectionné >
+i18neditor.createproject.storeProject.directory=Répertoire de sauvegarde
+i18neditor.createproject.storeProject.path=Fichier de sauvegarde
+i18neditor.createproject.uniqueJarDefinition=Utilisation d'un bundle final
+i18neditor.createproject.uniqueJarDefinition.tip=Utilisation d'un bundle final (un seul bundle)
+i18neditor.createproject.url=Localisation
+i18neditor.init.closed=Nuiton-i18n-editor a été fermé à %1$s
+i18neditor.init.context.done=Initialisation du contexte terminée en %1$s.
+i18neditor.init.ui.done=Initialisation de l'interface graphique terminée.
+i18neditor.main.menu.file=Fichier
+i18neditor.menu.bundles=Bundles
+i18neditor.menu.help=Aide
+i18neditor.menu.packages=Paquetages
+i18neditor.menu.storeall=Sauvegarder
+i18neditor.message.config.loaded=Configuration de nuiton-i18n-editor v. %1$s chargée.
+i18neditor.message.help.usage=Aide de nuiton-i18n-editor v %1$s
+i18neditor.message.no.project.loaded=< Aucun projet chargé >
+i18neditor.no.keys=< Aucune clef definie >
+i18neditor.package.name=Paquetage \: %1$s
+i18neditor.project.info.tip=Cliquer ici pour obtenir des informations sur le projet chargé
+i18neditor.project.step.chooseProjectType=Type de projet
+i18neditor.project.step.chooseProjectType.description=Choisir le type de projet à ouvrir
+i18neditor.project.step.configureProject=Configuration
+i18neditor.project.step.configureProject.description=Configurer le projet
+i18neditor.project.step.label=Etape %1$d/%2$d \: %3$s
+i18neditor.project.step.persist=Sauvegarde
+i18neditor.project.step.persist.description=Permet de sauvegarder la définition du projet
+i18neditor.project.step.resume=Resume
+i18neditor.project.step.resume.description=Voir le résumé du projet à ouvrir
+i18neditor.project.step.selecteBundles=Bundles
+i18neditor.project.step.selecteBundles.description=Choisir les bundles du projet parmi ceux détectés
+i18neditor.project.type.directory=Répertoire
+i18neditor.project.type.directory.description=Ouvrir un projet à partir d'un répertoire
+i18neditor.project.type.jar=Jar (ou zip)
+i18neditor.project.type.jar.description=Ouvrir un projet à partir d'un jar
+i18neditor.resource.name=Resource \: %1$s
+i18neditor.title=Nuiton i18n editor < Projet %1$s >
+i18neditor.title.about=A propos de nuiton-i18n-editor...
+i18neditor.title.choose.directory.source=Choisir le répertoire
+i18neditor.title.choose.jar.source=Choisir un fichier de type 'jar'
+i18neditor.title.choose.project=Choisir le fichier de définition d'un projet
+i18neditor.title.choose.projectDir=Choisir une définition de projet
+i18neditor.title.noproject=Nuiton i18n editor < aucun projet chargé >
+i18neditor.title.project.info=Informations sur le projet
+i18neditor.warning.nimbus.landf=Le look and Feel Nimbus n'a pas été trouvé, il faut au moins la version 1.6u10 de java.
+i18neditor.warning.no.ui=Aucun environnement graphique détecté
1
0
09 Jul '12
Author: tchemit
Date: 2012-07-09 15:19:33 +0200 (Mon, 09 Jul 2012)
New Revision: 1963
Url: http://nuiton.org/repositories/revision/i18n/1963
Log:
pass to version 2.5-SNAPSHOT
make nuiton-i18n-editro works again!
Modified:
trunk/ant-i18n-task/pom.xml
trunk/i18n-maven-plugin/pom.xml
trunk/nuiton-i18n-editor/LICENSE.txt
trunk/nuiton-i18n-editor/pom.xml
trunk/nuiton-i18n-editor/src/license/THIRD-PARTY.properties
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/I18nEditor.java
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/DirectoryI18nProjectConfigurePanelUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/JarI18nProjectConfigurePanelUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/JarI18nProjectProvider.java
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleCheckBoxMenuUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleValueUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleValuesUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/CreateBundleUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/CreatePackageUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUIHandler.java
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/PackageCheckBoxMenuUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/AbstractProjectTabPanelUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ChooseProjectTypePanelUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ConfigureProjectPanelUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/PersistPanelUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ResumePanelUI.jaxx
trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/SelectBundlesPanelUI.jaxx
trunk/nuiton-i18n/pom.xml
trunk/pom.xml
Modified: trunk/ant-i18n-task/pom.xml
===================================================================
--- trunk/ant-i18n-task/pom.xml 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/ant-i18n-task/pom.xml 2012-07-09 13:19:33 UTC (rev 1963)
@@ -34,7 +34,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>i18n</artifactId>
- <version>2.4.2-SNAPSHOT</version>
+ <version>2.5-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.i18n</groupId>
Modified: trunk/i18n-maven-plugin/pom.xml
===================================================================
--- trunk/i18n-maven-plugin/pom.xml 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/i18n-maven-plugin/pom.xml 2012-07-09 13:19:33 UTC (rev 1963)
@@ -33,7 +33,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>i18n</artifactId>
- <version>2.4.2-SNAPSHOT</version>
+ <version>2.5-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.i18n</groupId>
Modified: trunk/nuiton-i18n/pom.xml
===================================================================
--- trunk/nuiton-i18n/pom.xml 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n/pom.xml 2012-07-09 13:19:33 UTC (rev 1963)
@@ -34,7 +34,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>i18n</artifactId>
- <version>2.4.2-SNAPSHOT</version>
+ <version>2.5-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.i18n</groupId>
Modified: trunk/nuiton-i18n-editor/LICENSE.txt
===================================================================
--- trunk/nuiton-i18n-editor/LICENSE.txt 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/LICENSE.txt 2012-07-09 13:19:33 UTC (rev 1963)
@@ -1,166 +1,674 @@
- GNU LESSER GENERAL PUBLIC LICENSE
+ GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
+ Preamble
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
- 0. Additional Definitions.
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
- 1. Exception to Section 3 of the GNU GPL.
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
+ The precise terms and conditions for copying, distribution and
+modification follow.
- 2. Conveying Modified Versions.
+ TERMS AND CONDITIONS
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
+ 0. Definitions.
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
+ "This License" refers to version 3 of the GNU General Public License.
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
- 3. Object Code Incorporating Material from Library Header Files.
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
- 4. Combined Works.
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
+ 1. Source Code.
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
- d) Do one of the following:
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
+ The Corresponding Source for a work in source code form is that
+same work.
- 5. Combined Libraries.
+ 2. Basic Permissions.
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
- 6. Revised Versions of the GNU Lesser General Public License.
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
+ 4. Conveying Verbatim Copies.
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 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 Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Modified: trunk/nuiton-i18n-editor/pom.xml
===================================================================
--- trunk/nuiton-i18n-editor/pom.xml 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/pom.xml 2012-07-09 13:19:33 UTC (rev 1963)
@@ -11,7 +11,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>i18n</artifactId>
- <version>1.2.3-SNAPSHOT</version>
+ <version>2.5-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.i18n</groupId>
@@ -73,10 +73,11 @@
<!-- main class in jar -->
<maven.jar.main.class>org.nuiton.i18n.editor.I18nEditor</maven.jar.main.class>
- <jaxxVersion>2.0</jaxxVersion>
+ <jaxxVersion>2.5.1-SNAPSHOT</jaxxVersion>
<nuitonUtilsVersion>1.2</nuitonUtilsVersion>
<!-- default license to use -->
+ <licensePluginVersion>1.1</licensePluginVersion>
<license.licenseName>gpl_v3</license.licenseName>
<!-- jnlp -->
@@ -92,6 +93,9 @@
<jaxx.useUIManagerForIcon>true</jaxx.useUIManagerForIcon>
<jaxx.addProjectClassPath>true</jaxx.addProjectClassPath>
<jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
+
+ <!-- generate license bundled files -->
+ <license.generateBundle>true</license.generateBundle>
</properties>
<build>
@@ -122,7 +126,7 @@
<plugin>
<groupId>org.nuiton.jaxx</groupId>
- <artifactId>maven-jaxx-plugin</artifactId>
+ <artifactId>jaxx-maven-plugin</artifactId>
<version>${jaxxVersion}</version>
<executions>
<execution>
@@ -134,8 +138,8 @@
</plugin>
<plugin>
- <groupId>org.nuiton</groupId>
- <artifactId>maven-license-plugin</artifactId>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>license-maven-plugin</artifactId>
<executions>
<execution>
<id>attach-licenses</id>
@@ -143,6 +147,14 @@
<goal>update-project-license</goal>
<goal>add-third-party</goal>
</goals>
+ <configuration>
+ <licenseMerges>
+ <licenseMerge>
+ The Apache Software License, Version 2.0|Apache License, Version 2.0
+ </licenseMerge>
+ <licenseMerge>BSD License|BSD</licenseMerge>
+ </licenseMerges>
+ </configuration>
</execution>
</executions>
</plugin>
@@ -150,7 +162,7 @@
<!-- plugin i18n -->
<plugin>
<groupId>${project.groupId}</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>${project.version}</version>
<configuration>
<silent>true</silent>
@@ -171,25 +183,24 @@
</executions>
</plugin>
+
<plugin>
- <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
- <id>copy-deps</id>
+ <id>copy-dependencies</id>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
- <silent>true</silent>
<overWriteReleases>false</overWriteReleases>
- <overWriteSnapshots>false</overWriteSnapshots>
+ <overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
+ <silent>true</silent>
</configuration>
</execution>
</executions>
-
</plugin>
</plugins>
@@ -198,44 +209,6 @@
<plugins>
<plugin>
- <groupId>org.nuiton.thirdparty</groupId>
- <artifactId>webstart-maven-plugin</artifactId>
- <configuration>
- <jnlpExtensions>
- <jnlpExtension>
- <name>sun</name>
- <title>Sun MicroSystems</title>
- <vendor>Sun MicroSystems, Inc.</vendor>
- <includes>
- <include>javax.help:javahelp</include>
- </includes>
- </jnlpExtension>
- <jnlpExtension>
- <name>jxlayer</name>
- <title>Swing labs JXLayer</title>
- <vendor>Swing Labs</vendor>
- <includes>
- <include>org.swinglabs:jxlayer</include>
- </includes>
- </jnlpExtension>
- </jnlpExtensions>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.nuiton</groupId>
- <artifactId>maven-license-plugin</artifactId>
- <version>${licensePluginVersion}</version>
- <configuration>
- <licenseMerges>
- <licenseMerge>The Apache Software License, Version 2.0|Apache License, Version 2.0</licenseMerge>
- <licenseMerge>BSD License|BSD</licenseMerge>
- </licenseMerges>
- <generateBundle>true</generateBundle>
- </configuration>
- </plugin>
-
- <plugin>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
@@ -250,10 +223,9 @@
<!-- plugin site -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
- <version>2.1.1</version>
<dependencies>
<dependency>
- <groupId>org.nuiton</groupId>
+ <groupId>org.nuiton.jrst</groupId>
<artifactId>doxia-module-jrst</artifactId>
<version>${jrstPluginVersion}</version>
</dependency>
@@ -266,11 +238,7 @@
<reporting>
<plugins>
- <plugin>
- <groupId>org.nuiton.thirdparty</groupId>
- <artifactId>webstart-maven-plugin</artifactId>
- <version>${webstartPluginVersion}</version>
- </plugin>
+
</plugins>
</reporting>
@@ -290,44 +258,7 @@
<build>
<plugins>
- <!-- key store secrets availables -->
<plugin>
- <groupId>org.nuiton</groupId>
- <artifactId>maven-helper-plugin</artifactId>
- <executions>
- <execution>
- <id>get-keystore</id>
- <goals>
- <goal>share-server-secret</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <serverId>codelutin-keystore</serverId>
- <privateKeyOut>keystorepath</privateKeyOut>
- <passwordOut>keystorepass</passwordOut>
- <usernameOut>keyalias</usernameOut>
- <passphraseOut>keypass</passphraseOut>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <!-- make webstart -->
- <plugin>
- <groupId>org.nuiton.thirdparty</groupId>
- <artifactId>webstart-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-jnlp</id>
- <phase>package</phase>
- <goals>
- <goal>jnlp-inline</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
Modified: trunk/nuiton-i18n-editor/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/nuiton-i18n-editor/src/license/THIRD-PARTY.properties 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/license/THIRD-PARTY.properties 2012-07-09 13:19:33 UTC (rev 1963)
@@ -1,18 +1,14 @@
-# Generated by org.nuiton.license.plugin.AddThirdPartyMojo
+# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
# - BSD License
+# - GNU General Public License - Version 2 with the class path exception
# - Lesser General Public License (LGPL)
# - Lesser General Public License (LGPL) v 3.0
-# - Sun Microsystems, Inc. Binary Code License Agreement for the JDK 5.0
# - The Apache Software License, Version 2.0
-# - The OpenSymphony Software License 1.1
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
-#Thu Jul 01 11:24:30 CEST 2010
-commons-collections--commons-collections--3.1=The Apache Software License, Version 2.0
+#Sat Jul 07 12:37:31 CEST 2012
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
-javax.help--javahelp--2.0.02=Sun Microsystems, Inc. Binary Code License Agreement for the JDK 5.0
-opensymphony--ognl--2.6.11=The OpenSymphony Software License 1.1
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/I18nEditor.java
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/I18nEditor.java 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/I18nEditor.java 2012-07-09 13:19:33 UTC (rev 1963)
@@ -19,19 +19,19 @@
package org.nuiton.i18n.editor;
import jaxx.runtime.JAXXUtil;
-import org.nuiton.i18n.editor.ui.I18nEditorUIHandler;
-import org.nuiton.i18n.I18n;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Date;
-import javax.swing.SwingUtilities;
import jaxx.runtime.SwingUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
import org.nuiton.i18n.editor.ui.I18nEditorUI;
+import org.nuiton.i18n.editor.ui.I18nEditorUIHandler;
import org.nuiton.util.StringUtil;
+import javax.swing.SwingUtilities;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Date;
+
import static org.nuiton.i18n.I18n._;
/**
@@ -42,6 +42,7 @@
public class I18nEditor {
private static long startingTime = System.nanoTime();
+
/** to use log facility, just put in your code: log.info(\"...\"); */
private static Log log = LogFactory.getLog(I18nEditor.class);
@@ -134,7 +135,7 @@
config.parse(args);
// init i18n
- I18n.init(config.getLocale());
+ I18n.init(null, config.getLocale());
log.info(_("i18neditor.message.config.loaded", config.getVersion()));
@@ -188,9 +189,7 @@
config.setDisplayMainUI(false);
}
- /**
- * Désactiver la possiblite de lancer l'ui principale.
- */
+ /** Désactiver la possiblite de lancer l'ui principale. */
public void disableMainUI() {
if (log.isDebugEnabled()) {
log.debug(this);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/DirectoryI18nProjectConfigurePanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/DirectoryI18nProjectConfigurePanelUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/DirectoryI18nProjectConfigurePanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -24,16 +24,17 @@
<Table fill='both' constraints='DirectoryI18nProject.class.getName()'
implements='org.nuiton.i18n.editor.project.I18nProjectConfigurePanelUI<DirectoryI18nProject>'>
- <script><![CDATA[
-import jaxx.runtime.SwingUtil;
+<import>
+jaxx.runtime.SwingUtil
-import org.nuiton.i18n.editor.*;
-import org.nuiton.i18n.editor.project.I18nProject;
-import org.nuiton.i18n.editor.project.impl.*;
-import org.nuiton.i18n.editor.ui.project.*;
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+org.nuiton.i18n.editor.project.I18nProject
-import java.io.File;
+java.io.File
+</import>
+
+ <script><![CDATA[
protected ProjectUIModel model = getContextValue(ProjectUIModel.class);
protected DirectoryI18nProject project = model.getProject(DirectoryI18nProject.class);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/JarI18nProjectConfigurePanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/JarI18nProjectConfigurePanelUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/JarI18nProjectConfigurePanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -24,16 +24,18 @@
<Table fill='both' constraints='JarI18nProject.class.getName()'
implements='org.nuiton.i18n.editor.project.I18nProjectConfigurePanelUI<JarI18nProject>'>
- <script><![CDATA[
-import jaxx.runtime.SwingUtil;
+<import>
+jaxx.runtime.SwingUtil
-import org.nuiton.i18n.editor.*;
-import org.nuiton.i18n.editor.project.I18nProject;
-import org.nuiton.i18n.editor.project.impl.*;
-import org.nuiton.i18n.editor.ui.project.*;
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+org.nuiton.i18n.editor.project.I18nProject
-import java.io.File;
+java.io.File
+</import>
+
+ <script><![CDATA[
+
protected ProjectUIModel model = getContextValue(ProjectUIModel.class);
protected JarI18nProject project = model.getProject(JarI18nProject.class);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/JarI18nProjectProvider.java
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/JarI18nProjectProvider.java 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/project/impl/JarI18nProjectProvider.java 2012-07-09 13:19:33 UTC (rev 1963)
@@ -18,11 +18,18 @@
*/
package org.nuiton.i18n.editor.project.impl;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.nuiton.i18n.bundle.I18nBundleUtil;
+import org.nuiton.i18n.editor.project.AbstractI18nProjectProvider;
+import org.nuiton.i18n.editor.project.I18nProjectConfigurePanelUI;
+import org.nuiton.i18n.editor.ui.project.ProjectUIModel;
+import org.nuiton.util.ConverterUtil;
+import org.nuiton.util.Resource;
+
import java.io.File;
import java.io.IOException;
-
-import org.nuiton.i18n.bundle.I18nBundleUtil;
-import org.nuiton.i18n.editor.project.AbstractI18nProjectProvider;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
@@ -30,13 +37,6 @@
import java.util.Map;
import java.util.Properties;
import java.util.TreeMap;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.i18n.I18n;
-import org.nuiton.i18n.editor.project.I18nProjectConfigurePanelUI;
-import org.nuiton.i18n.editor.ui.project.ProjectUIModel;
-import org.nuiton.util.ConverterUtil;
-import org.nuiton.util.Resource;
/**
*
@@ -142,7 +142,7 @@
urls.remove(u);
}
} else {
- urls = Resource.getURLs(I18nBundleUtil.SEARCH_BUNDLE_PATTERN, loader);
+ urls = Resource.getURLs(I18nBundleUtil.DIRECTORY_SEARCH_BUNDLE_PATTERN, loader);
log.info("detected bundles : " + urls);
}
return urls;
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleCheckBoxMenuUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleCheckBoxMenuUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleCheckBoxMenuUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -23,13 +23,18 @@
<JCheckBoxMenuItem id='content' text='{getBundle().getDisplayName()}' toolTipText='{_("i18neditor.bundle.name", getBundle().getDisplayName())}' onItemStateChanged='updateState(event)'>
+ <import>
+org.nuiton.i18n.editor.I18nEditorContext
+java.util.Locale
+jaxx.runtime.JAXXContext
+
+static org.nuiton.i18n.I18n._
+ </import>
+
<!-- le nom du bundle -->
<Locale id='bundle' javaBean='Locale.FRANCE'/>
<script><![CDATA[
-import org.nuiton.i18n.editor.*;
-import java.util.Locale;
-import jaxx.runtime.JAXXContext;
public BundleCheckBoxMenuUI(JAXXContext parentContext, Locale bundle, boolean selected) {
super(null, selected);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleValueUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleValueUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleValueUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -23,8 +23,15 @@
<JPanel layout='{new BorderLayout()}'>
- <style source='BundleValueUI.css'/>
+ <import>
+java.util.Locale
+jaxx.runtime.SwingUtil
+org.nuiton.i18n.editor.I18nEditorContext
+
+static org.nuiton.i18n.I18n._
+ </import>
+
<!-- la locale -->
<Locale id='bundle' javaBean='null'/>
@@ -40,9 +47,6 @@
<Boolean id='modified' javaBean='Boolean.FALSE'/>
<script><![CDATA[
-import java.util.Locale;
-import jaxx.runtime.SwingUtil;
-import org.nuiton.i18n.editor.*;
protected I18nEditorUIHandler handler = getContextValue(I18nEditorUIHandler.class);
protected I18nEditorContext context = getContextValue(I18nEditorContext.class);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleValuesUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleValuesUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/BundleValuesUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -24,8 +24,22 @@
<org.jdesktop.swingx.JXTitledPanel id='content'
title='{updateTitle(getPackageName())}'>
+<import>
+java.util.List
+java.util.Locale
+
+java.awt.Dimension
+
+org.nuiton.i18n.editor.ui.project.ProjectStep
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+org.nuiton.i18n.editor.project.I18nProject
+org.nuiton.i18n.editor.project.AbstractI18nProject
+
+static org.nuiton.i18n.I18n._
+</import>
+
<!-- les locales -->
- <java.util.List id='bundles' javaBean='null' genericType='Locale'/>
+ <List id='bundles' javaBean='null' genericType='Locale'/>
<!-- le nom du package -->
<String id='packageName' javaBean='null'/>
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/CreateBundleUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/CreateBundleUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/CreateBundleUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -23,13 +23,17 @@
<JDialog id='main'>
- <style source='CreateBundleUI.css'/>
+<import>
+java.util.Locale
+java.awt.Color
+org.nuiton.i18n.editor.I18nEditorContext
+
+static org.nuiton.i18n.I18n._
+</import>
+
<String id='bundle'/>
<script><![CDATA[
-import java.util.Locale;
-import org.nuiton.i18n.editor.*;
-
public boolean acceptLocale(Locale l, String expected) {
return l !=null && l.toString().equals(expected);
}
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/CreatePackageUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/CreatePackageUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/CreatePackageUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -23,12 +23,17 @@
<JDialog id='main'>
- <style source='CreatePackageUI.css'/>
+<import>
+java.util.Locale
+java.awt.Color
+org.nuiton.i18n.editor.I18nEditorContext
+
+static org.nuiton.i18n.I18n._
+</import>
+
<String id='bundle'/>
<script><![CDATA[
-import java.util.Locale;
-import org.nuiton.i18n.editor.*;
public boolean acceptLocale(Locale l, String expected) {
return l !=null && l.toString().equals(expected);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -27,18 +27,29 @@
onWindowClosing='handler.close(context)'
undecorated='{config.isFullScreen()}'>
- <style source='I18nEditorUI.css'/>
+<import>
+java.beans.PropertyChangeEvent
+java.beans.PropertyChangeListener
- <script><![CDATA[
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
+jaxx.runtime.SwingUtil
+javax.swing.tree.*
+java.util.Locale
+org.nuiton.i18n.editor.I18nEditorContext
+org.nuiton.i18n.editor.I18nEditorConfig
+org.nuiton.i18n.editor.project.I18nProject
-import jaxx.runtime.SwingUtil;
-import javax.swing.tree.*;
-import java.util.Locale;
-import org.nuiton.i18n.editor.*;
-import org.nuiton.i18n.editor.project.I18nProject;
+javax.swing.SwingUtilities
+javax.swing.tree.TreePath
+javax.swing.tree.DefaultTreeCellRenderer
+javax.swing.event.TreeSelectionEvent
+javax.swing.event.TreeSelectionListener
+javax.swing.tree.TreeNode
+java.awt.Component
+static org.nuiton.i18n.I18n._
+</import>
+
+ <script><![CDATA[
protected I18nEditorUIHandler handler = getContextValue(I18nEditorUIHandler.class);
protected I18nEditorConfig config = getContextValue(I18nEditorConfig.class);
protected I18nEditorContext context = getContextValue(I18nEditorContext.class);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUIHandler.java
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUIHandler.java 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/I18nEditorUIHandler.java 2012-07-09 13:19:33 UTC (rev 1963)
@@ -18,57 +18,56 @@
*/
package org.nuiton.i18n.editor.ui;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.event.ActionEvent;
-import java.io.IOException;
-import java.util.Map;
-import java.util.Set;
-import javax.swing.JMenu;
-
-import jaxx.runtime.swing.editor.config.model.ConfigUIModelBuilder;
-import org.nuiton.i18n.editor.*;
-import java.awt.Desktop;
-import java.io.File;
-import java.io.FileInputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
+import jaxx.runtime.JAXXContext;
import jaxx.runtime.context.DefaultApplicationContext.AutoLoad;
-import jaxx.runtime.JAXXContext;
import jaxx.runtime.swing.AboutPanel;
import jaxx.runtime.swing.editor.config.ConfigUI;
-import jaxx.runtime.swing.editor.config.ConfigUIBuilder;
+import jaxx.runtime.swing.editor.config.ConfigUIHelper;
import jaxx.runtime.swing.editor.config.model.ConfigUIModel;
+import jaxx.runtime.swing.editor.config.model.ConfigUIModelBuilder;
import jaxx.runtime.swing.wizard.WizardUILancher;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.i18n.I18n;
+import org.nuiton.i18n.editor.I18nEditorConfig;
+import org.nuiton.i18n.editor.I18nEditorContext;
import org.nuiton.i18n.editor.project.I18nProject;
import org.nuiton.i18n.editor.project.I18nProjectFactory;
import org.nuiton.i18n.editor.project.I18nProjectProvider;
import org.nuiton.i18n.editor.ui.project.ProjectStep;
import org.nuiton.i18n.editor.ui.project.ProjectUI;
import org.nuiton.i18n.editor.ui.project.ProjectUIModel;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.JCheckBoxMenuItem;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JMenu;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Desktop;
+import java.awt.event.ActionEvent;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
import static org.nuiton.i18n.editor.I18nEditorConfig.Option;
-/**
- *
- * @author tchemit <chemit(a)codelutin.com>
- */
+/** @author tchemit <chemit(a)codelutin.com> */
@AutoLoad
public class I18nEditorUIHandler {
@@ -77,11 +76,11 @@
/**
* Methode pour initialiser l'ui principale sans l'afficher.
- *
+ * <p/>
* Si un projet est charge dans le context, alors on le charge dans l'ui.
*
- * @param context le context applicatif
- * @param fullscreen flag pour indiquer si on doit ouvrir l'ui en model console (pleine ecran).
+ * @param context le context applicatif
+ * @param fullscreen flag pour indiquer si on doit ouvrir l'ui en model console (pleine ecran).
* @return l'ui instancie et initialisee mais non visible encore
*/
public I18nEditorUI initUI(I18nEditorContext context, boolean fullscreen) {
@@ -172,11 +171,11 @@
try {
File f = ProjectUIModel.chooseFile(getUI(context),
- _("i18neditor.title.choose.project"),
- _("i18neditor.action.choose.project"),
- null,
- "^.+\\.i18nproject$",
- _("i18neditor.action.choose.project.description"));
+ _("i18neditor.title.choose.project"),
+ _("i18neditor.action.choose.project"),
+ null,
+ "^.+\\.i18nproject$",
+ _("i18neditor.action.choose.project.description"));
if (f == null) {
return;
}
@@ -201,7 +200,7 @@
* Ouvre un projet.
*
* @param context le context applicatif
- * @param name le nom du projet a ouvrir
+ * @param name le nom du projet a ouvrir
*/
public void openProject(I18nEditorContext context, String name) {
try {
@@ -272,7 +271,7 @@
* mode console (c'est à dire en mode plein écran exclusif), sinon on
* passe en mode fenetré normal.
*
- * @param context le context applicatif
+ * @param context le context applicatif
* @param fullscreen le nouvel état requis.
*/
public void changeScreen(I18nEditorContext context, boolean fullscreen) {
@@ -289,11 +288,11 @@
/**
* Methode pour changer la langue utilisee.
- *
+ * <p/>
* Cette action recharge le systeme i18n avec la nouvelle locale
* donnee puis recherge les interfaces graphiques.
*
- * @param context applicatif
+ * @param context applicatif
* @param newLocale la nouvelle locale a utilisee dans l'application.
*/
public void changeLanguage(I18nEditorContext context, Locale newLocale) {
@@ -317,7 +316,7 @@
config.setLocale(newLocale);
// chargement de la nouvelle locale dans le système i18n
- I18n.init(newLocale);
+ I18n.init(null, newLocale);
// on recharge l'ui
reloadUI(context);
@@ -512,7 +511,7 @@
// Option.TMP_DIRECTORY);
builder.addCategory(
- n_("i18neditor.config.category.ui"),
+ n_("i18neditor.config.category.ui"),
n_("i18neditor.config.category.ui.description")
);
@@ -524,13 +523,14 @@
// n_("i18neditor.config.category.ui.description"),
// Option.FULL_SCREEN,
// Option.LOCALE);
-
+
ConfigUIModel model = builder.flushModel();
- ConfigUI configUI = ConfigUIBuilder.newConfigUI(
- context, model, "i18neditor.config.category.ui");
+ ConfigUIHelper configUIHelper = new ConfigUIHelper(null);
+ ConfigUI configUI = configUIHelper.buildUI(ui, "default");
+// context, model, "i18neditor.config.category.ui");
- ConfigUIBuilder.showConfigUI(configUI, ui, false);
+ configUIHelper.displayUI(ui, false);
// configUI.showInDialog(ui, ui != null);
}
@@ -746,7 +746,7 @@
/**
* Charger un projet.
*
- * @param context le context applicatif
+ * @param context le context applicatif
* @param projectFile le fichier de definition du projet a ouvrir
*/
public void loadProject(I18nEditorContext context, File projectFile) {
@@ -829,6 +829,7 @@
/**
* Recharge les clés dans l'arbre des propriétés en fonction des paquetages
+ *
* @param ui
*/
protected void reloadKeys(I18nEditorUI ui) {
@@ -872,7 +873,7 @@
/**
* Recharge les valeurs de la clef selectionnee dans l'arbre de navigation.
- *
+ *
* @param ui
*/
protected void reloadValues(I18nEditorUI ui) {
@@ -882,7 +883,7 @@
/**
* Recharge les valeurs d'une clef donnee.
- *
+ *
* @param ui
* @param key la clef de traduction dont on va editer les traductions
*/
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/PackageCheckBoxMenuUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/PackageCheckBoxMenuUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/PackageCheckBoxMenuUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -26,14 +26,18 @@
toolTipText='{_("i18neditor.resource.name", getUrl())}'
onItemStateChanged='updateState(event)'>
+<import>
+org.nuiton.i18n.editor.I18nEditorContext
+java.util.Locale
+jaxx.runtime.JAXXContext
+
+static org.nuiton.i18n.I18n._
+</import>
+
<!-- le nom du bundle -->
<String id='url' javaBean='""'/>
<script><![CDATA[
-import org.nuiton.i18n.editor.*;
-import java.util.Locale;
-import jaxx.runtime.JAXXContext;
-
public PackageCheckBoxMenuUI(JAXXContext parentContext, String bundle, boolean selected) {
super(null, selected);
setContextValue(parentContext);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/ProjectUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -25,27 +25,42 @@
implements='jaxx.runtime.swing.wizard.WizardUI<ProjectStep, ProjectUIModel>'
width='550' height='560' defaultCloseOperation='dispose_on_close'>
- <style source='ProjectUI.css'/>
-
- <script><![CDATA[
-import javax.swing.table.DefaultTableCellRenderer;
+<import>
+javax.swing.table.DefaultTableCellRenderer
-import jaxx.runtime.JAXXContext;
-import jaxx.runtime.SwingUtil;
-import jaxx.runtime.swing.editor.MyDefaultCellEditor;
-import jaxx.runtime.swing.wizard.WizardOperationState;
-import jaxx.runtime.swing.wizard.WizardUtil;
-import static jaxx.runtime.JAXXUtil.newContextEntryDef;
-import static jaxx.runtime.JAXXUtil.checkJAXXContextEntry;
+jaxx.runtime.JAXXContext
+jaxx.runtime.SwingUtil
+jaxx.runtime.swing.editor.MyDefaultCellEditor
+jaxx.runtime.swing.wizard.WizardUtil
+static jaxx.runtime.JAXXUtil.newContextEntryDef
+static jaxx.runtime.JAXXUtil.checkJAXXContextEntry
-import org.nuiton.i18n.editor.I18nEditorContext;
-import org.nuiton.i18n.editor.I18nEditorConfig;
-import org.nuiton.i18n.editor.ui.I18nEditorUIHandler;
-import org.nuiton.i18n.editor.ui.project.ProjectStep;
-import org.nuiton.i18n.editor.ui.project.ProjectUIModel;
-import org.nuiton.i18n.editor.ui.project.tabs.*;
-import static org.nuiton.i18n.I18n.n_;
+org.nuiton.i18n.editor.I18nEditorContext
+org.nuiton.i18n.editor.I18nEditorConfig
+org.nuiton.i18n.editor.ui.I18nEditorUIHandler
+org.nuiton.i18n.editor.ui.project.ProjectStep
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+org.nuiton.i18n.editor.ui.project.tabs.AbstractProjectTabPanelUI
+org.nuiton.i18n.editor.ui.project.tabs.SelectBundlesPanelUI
+org.nuiton.i18n.editor.ui.project.tabs.ChooseProjectTypePanelUI
+org.nuiton.i18n.editor.ui.project.tabs.ConfigureProjectPanelUI
+org.nuiton.i18n.editor.ui.project.tabs.PersistPanelUI
+org.nuiton.i18n.editor.ui.project.tabs.ResumePanelUI
+org.nuiton.i18n.editor.ui.project.SelectBundlesTableModel
+javax.swing.SwingUtilities
+javax.swing.JTable
+java.awt.Component
+javax.swing.JComponent
+java.awt.event.MouseAdapter
+java.awt.event.MouseEvent
+
+static org.nuiton.i18n.I18n.n_
+static org.nuiton.i18n.I18n._
+</import>
+
+ <script><![CDATA[
+
protected I18nEditorUIHandler handler = getContextValue(I18nEditorUIHandler.class);
protected I18nEditorConfig config = getContextValue(I18nEditorConfig.class);
protected I18nEditorContext context = getContextValue(I18nEditorContext.class);
@@ -121,7 +136,7 @@
return ui;
}
-@Override
+/*@Override
public void onWasStarted() {
}
@@ -132,7 +147,7 @@
@Override
public void onOperationStateChanged(ProjectStep step, WizardOperationState newState) {
// mettre a jour l'onglet
-}
+}*/
@Override
public void onStepChanged(ProjectStep newStep) {
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/AbstractProjectTabPanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/AbstractProjectTabPanelUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/AbstractProjectTabPanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -25,18 +25,19 @@
abstract='true'
implements='jaxx.runtime.swing.wizard.WizardStepUI<ProjectStep, ProjectUIModel>'>
- <style source='AbstractProjectTabPanelUI.css'/>
+<import>
+static org.nuiton.i18n.I18n.n_
+org.nuiton.i18n.editor.I18nEditorContext
+org.nuiton.i18n.editor.I18nEditorConfig
+org.nuiton.i18n.editor.ui.I18nEditorUIHandler
+org.nuiton.i18n.editor.ui.project.ProjectStep
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+static org.nuiton.i18n.I18n._
+</import>
+
<script><![CDATA[
-import static org.nuiton.i18n.I18n.n_;
-import org.nuiton.i18n.editor.I18nEditorContext;
-import org.nuiton.i18n.editor.I18nEditorConfig;
-import org.nuiton.i18n.editor.ui.I18nEditorUIHandler;
-import org.nuiton.i18n.editor.ui.project.ProjectStep;
-import org.nuiton.i18n.editor.ui.project.ProjectUIModel;
-import jaxx.runtime.swing.wizard.WizardOperationState;
-
protected I18nEditorUIHandler handler = getContextValue(I18nEditorUIHandler.class);
protected I18nEditorConfig config = getContextValue(I18nEditorConfig.class);
protected I18nEditorContext context = getContextValue(I18nEditorContext.class);
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ChooseProjectTypePanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ChooseProjectTypePanelUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ChooseProjectTypePanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -25,13 +25,24 @@
<!-- ***************************************** -->
<AbstractProjectTabPanelUI _step='{ProjectStep.CHOOSE_PROJECT_TYPE}'>
+<import>
+java.beans.PropertyChangeEvent
+java.beans.PropertyChangeListener
+org.nuiton.i18n.editor.project.I18nProjectProvider
+org.nuiton.i18n.editor.project.I18nProjectFactory
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+org.nuiton.i18n.editor.ui.project.ProjectStep
+
+javax.swing.JRadioButton
+javax.swing.AbstractButton
+
+java.awt.GridBagConstraints
+java.awt.Insets
+
+static org.nuiton.i18n.I18n._
+</import>
+
<script><![CDATA[
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import org.nuiton.i18n.editor.*;
-import org.nuiton.i18n.editor.project.*;
-import org.nuiton.i18n.editor.ui.project.*;
void $afterCompleteSetup() {
// ajout des types de projets connus a partir des providers connus
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ConfigureProjectPanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ConfigureProjectPanelUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ConfigureProjectPanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -23,16 +23,20 @@
<AbstractProjectTabPanelUI _step='{ProjectStep.CONFIGURE_PROJECT}'>
- <script><![CDATA[
+<import>
-import java.lang.reflect.Constructor;
+java.lang.reflect.Constructor
-import org.nuiton.i18n.editor.*;
-import org.nuiton.i18n.editor.project.I18nProjectProvider;
-import org.nuiton.i18n.editor.project.I18nProjectFactory;
-import org.nuiton.i18n.editor.project.I18nProjectConfigurePanelUI;
-import org.nuiton.i18n.editor.ui.project.*;
+org.nuiton.i18n.editor.ui.project.ProjectStep
+org.nuiton.i18n.editor.project.I18nProjectProvider
+org.nuiton.i18n.editor.project.I18nProjectFactory
+org.nuiton.i18n.editor.project.I18nProjectConfigurePanelUI
+static org.nuiton.i18n.I18n._
+</import>
+
+ <script><![CDATA[
+
protected String updateContentLayout(I18nProjectProvider<?> projectType) {
if (projectType == null) {
return "null";
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/PersistPanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/PersistPanelUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/PersistPanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -22,20 +22,26 @@
-->
<AbstractProjectTabPanelUI _step='{ProjectStep.PERSIST}'>
-
- <script><![CDATA[
-import jaxx.runtime.SwingUtil;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
+<import>
+jaxx.runtime.SwingUtil
-import org.nuiton.i18n.editor.*;
-import org.nuiton.i18n.editor.project.I18nProject;
-import org.nuiton.i18n.editor.project.AbstractI18nProject;
-import org.nuiton.i18n.editor.ui.project.*;
+java.beans.PropertyChangeEvent
+java.beans.PropertyChangeListener
-import java.io.File;
+org.nuiton.i18n.editor.I18nEditorConfig
+org.nuiton.i18n.editor.ui.project.ProjectStep
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+org.nuiton.i18n.editor.project.I18nProject
+org.nuiton.i18n.editor.project.AbstractI18nProject
+java.io.File
+
+static org.nuiton.i18n.I18n._
+</import>
+
+ <script><![CDATA[
+
protected final I18nEditorConfig config = getContextValue(I18nEditorConfig.class);
protected final PropertyChangeListener storeProjectPropertyChangeListener = new PropertyChangeListener() {
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ResumePanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ResumePanelUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/ResumePanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -23,11 +23,19 @@
<AbstractProjectTabPanelUI _step='{ProjectStep.RESUME}'>
+<import>
+org.nuiton.i18n.editor.ui.project.ProjectStep
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+org.nuiton.i18n.editor.project.I18nProject
+org.nuiton.i18n.editor.project.AbstractI18nProject
+
+javax.swing.JLabel
+
+static org.nuiton.i18n.I18n._
+</import>
+
<script><![CDATA[
-import org.nuiton.i18n.editor.*;
-import org.nuiton.i18n.editor.ui.project.*;
-
void $afterCompleteSetup() {
if (getStep()!=null) {
setDescriptionText(_(getStep().getDescription()));
Modified: trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/SelectBundlesPanelUI.jaxx
===================================================================
--- trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/SelectBundlesPanelUI.jaxx 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/nuiton-i18n-editor/src/main/java/org/nuiton/i18n/editor/ui/project/tabs/SelectBundlesPanelUI.jaxx 2012-07-09 13:19:33 UTC (rev 1963)
@@ -22,14 +22,21 @@
-->
<AbstractProjectTabPanelUI _step='{ProjectStep.SELECT_BUNDLES}'>
-
+
+<import>
+jaxx.runtime.SwingUtil
+org.nuiton.i18n.editor.I18nEditorConfig
+org.nuiton.i18n.editor.ui.project.ProjectStep
+org.nuiton.i18n.editor.ui.project.ProjectUIModel
+org.nuiton.i18n.editor.ui.project.ProjectStep
+org.nuiton.i18n.editor.ui.project.SelectBundlesTableModel
+
+static org.nuiton.i18n.I18n._
+</import>
+
<script><![CDATA[
-import jaxx.runtime.SwingUtil;
-import org.nuiton.i18n.editor.*;
-import org.nuiton.i18n.editor.ui.project.*;
-
void $afterCompleteSetup() {
if (getStep() != null) {
setDescriptionText(_(getStep().getDescription()));
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-07-09 13:12:56 UTC (rev 1962)
+++ trunk/pom.xml 2012-07-09 13:19:33 UTC (rev 1963)
@@ -37,7 +37,7 @@
</parent>
<artifactId>i18n</artifactId>
- <version>2.4.2-SNAPSHOT</version>
+ <version>2.5-SNAPSHOT</version>
<modules>
<module>nuiton-i18n</module>
1
0
Author: tchemit
Date: 2012-07-09 15:12:56 +0200 (Mon, 09 Jul 2012)
New Revision: 1962
Url: http://nuiton.org/repositories/revision/i18n/1962
Log:
fixes #2176: Rename mojo module to i18n-maven-plugin
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
+++ trunk/pom.xml 2012-07-09 13:12:56 UTC (rev 1962)
@@ -41,7 +41,7 @@
<modules>
<module>nuiton-i18n</module>
- <module>maven-i18n-plugin</module>
+ <module>i18n-maven-plugin</module>
<!--<module>ant-i18n-task</module>-->
<!--module>nuiton-i18n-editor</module-->
</modules>
1
0
Author: tchemit
Date: 2012-07-09 15:12:35 +0200 (Mon, 09 Jul 2012)
New Revision: 1961
Url: http://nuiton.org/repositories/revision/i18n/1961
Log:
fixes #2176: Rename mojo module to i18n-maven-plugin
Added:
trunk/i18n-maven-plugin/
trunk/i18n-maven-plugin/pom.xml
trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/goals.txt
trunk/i18n-maven-plugin/src/it/ano-1494/migrate/goals.txt
trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/goals.txt
trunk/i18n-maven-plugin/src/it/ano-672/goals.txt
trunk/i18n-maven-plugin/src/it/evo-1507/goals.txt
trunk/i18n-maven-plugin/src/it/parsers/newProject/goals.txt
trunk/i18n-maven-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/goals.txt
trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java
trunk/i18n-maven-plugin/src/main/resources/xwork-validator-1.0.3.dtd
trunk/i18n-maven-plugin/src/site/site_en.xml
trunk/i18n-maven-plugin/src/site/site_fr.xml
trunk/i18n-maven-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java
trunk/i18n-maven-plugin/src/test/resources/
Removed:
trunk/i18n-maven-plugin/pom.xml
trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/invoker.properties
trunk/i18n-maven-plugin/src/it/ano-1494/migrate/invoker.properties
trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/invoker.properties
trunk/i18n-maven-plugin/src/it/ano-672/invoker.properties
trunk/i18n-maven-plugin/src/it/evo-1507/invoker.properties
trunk/i18n-maven-plugin/src/it/parsers/newProject/invoker.properties
trunk/i18n-maven-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/invoker.properties
trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java
trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java
trunk/i18n-maven-plugin/src/site/site_en.xml
trunk/i18n-maven-plugin/src/site/site_fr.xml
trunk/maven-i18n-plugin/
Modified:
trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/pom.xml
trunk/i18n-maven-plugin/src/it/ano-1494/migrate/pom.xml
trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/pom.xml
trunk/i18n-maven-plugin/src/it/ano-672/pom.xml
trunk/i18n-maven-plugin/src/it/evo-1507/pom.xml
trunk/i18n-maven-plugin/src/it/parsers/newProject/pom.xml
trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/pom.xml
trunk/i18n-maven-plugin/src/site/apt/usages.apt
trunk/i18n-maven-plugin/src/site/en/apt/usages.apt
trunk/src/site/apt/gwt.apt
trunk/src/site/apt/index.apt
trunk/src/site/apt/library.apt.vm
trunk/src/site/en/apt/gwt.apt
trunk/src/site/en/apt/index.apt
trunk/src/site/en/apt/library.apt.vm
Deleted: trunk/i18n-maven-plugin/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,238 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- #%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%
- -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
-
- <!-- ************************************************************* -->
- <!-- *** POM Relationships *************************************** -->
- <!-- ************************************************************* -->
- <parent>
- <groupId>org.nuiton</groupId>
- <artifactId>i18n</artifactId>
- <version>2.4.2-SNAPSHOT</version>
- </parent>
-
- <groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
-
- <dependencies>
-
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>nuiton-i18n</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.nuiton.processor</groupId>
- <artifactId>nuiton-processor</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.nuiton</groupId>
- <artifactId>helper-maven-plugin</artifactId>
- </dependency>
-
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
-
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- </dependency>
-
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.maven.shared</groupId>
- <artifactId>maven-dependency-tree</artifactId>
- </dependency>
-
- <!-- provided dependencies -->
-
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-project</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-artifact</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-plugin-api</artifactId>
- </dependency>
-
- <!-- FIXME si on ne le rajoute pas, on se retrouve avec la version 1.1 qui ne convient pas -->
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-utils</artifactId>
- </dependency>
-
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <scope>runtime</scope>
- </dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- </dependency>
-
- </dependencies>
-
- <!-- ************************************************************* -->
- <!-- *** Project Information ************************************* -->
- <!-- ************************************************************* -->
- <name>I18n :: Maven Plugin</name>
- <description>
- Maven plugin to deal with i18n stuff in a project, mainly base on the
- nuiton-i18n api (but not only).
- </description>
- <inceptionYear>2007</inceptionYear>
-
- <!-- ************************************************************* -->
- <!-- *** Build Settings ****************************************** -->
- <!-- ************************************************************* -->
-
- <packaging>maven-plugin</packaging>
-
- <build>
- <plugins>
-
- <!-- expose new plexus components -->
- <plugin>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-component-metadata</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>generate-metadata</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <artifactId>maven-plugin-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>helpmojo</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- </plugins>
- </build>
- <profiles>
-
- <!-- perform only on a release stage when using the maven-release-plugin -->
- <profile>
- <id>reporting</id>
- <activation>
- <property>
- <name>performRelease</name>
- <value>true</value>
- </property>
- </activation>
-
- <reporting>
-
- <plugins>
-
- <plugin>
- <artifactId>maven-plugin-plugin</artifactId>
- <version>${pluginPluginVersion}</version>
- </plugin>
-
- <plugin>
- <artifactId>maven-invoker-plugin</artifactId>
- <version>${invokerPluginVersion}</version>
- </plugin>
-
- <plugin>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-maven-plugin</artifactId>
- <version>${plexusPluginVersion}</version>
- </plugin>
-
- </plugins>
- </reporting>
-
- </profile>
-
- <profile>
- <id>run-its</id>
- <activation>
- <property>
- <name>performRelease</name>
- <value>true</value>
- </property>
- </activation>
- <build>
- <defaultGoal>verify</defaultGoal>
- <plugins>
- <plugin>
- <artifactId>maven-invoker-plugin</artifactId>
- <configuration>
- <pomIncludes>
- <pomInclude>**/pom.xml</pomInclude>
- </pomIncludes>
- <postBuildHookScript>verify</postBuildHookScript>
- <localRepositoryPath>${basedir}/target/local-repo
- </localRepositoryPath>
- <settingsFile>src/it/settings.xml</settingsFile>
- <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
- <debug>${maven.verbose}</debug>
- </configuration>
- <executions>
- <execution>
- <id>integration-test</id>
- <goals>
- <goal>install</goal>
- <goal>run</goal>
- </goals>
- <phase>integration-test</phase>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-
-</project>
Copied: trunk/i18n-maven-plugin/pom.xml (from rev 1960, trunk/maven-i18n-plugin/pom.xml)
===================================================================
--- trunk/i18n-maven-plugin/pom.xml (rev 0)
+++ trunk/i18n-maven-plugin/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%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%
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
+ <parent>
+ <groupId>org.nuiton</groupId>
+ <artifactId>i18n</artifactId>
+ <version>2.4.2-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.nuiton.i18n</groupId>
+ <artifactId>i18n-maven-plugin</artifactId>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>nuiton-i18n</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.nuiton.processor</groupId>
+ <artifactId>nuiton-processor</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>helper-maven-plugin</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-dependency-tree</artifactId>
+ </dependency>
+
+ <!-- provided dependencies -->
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ </dependency>
+
+ <!-- dependencies to mojo annotations -->
+ <dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ </dependency>
+
+ <!-- FIXME si on ne le rajoute pas, on se retrouve avec la version 1.1 qui ne convient pas -->
+ <dependency>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-utils</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+
+ </dependencies>
+
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
+ <name>I18n :: Maven Plugin</name>
+ <description>
+ Maven plugin to deal with i18n stuff in a project, mainly base on the
+ nuiton-i18n api (but not only).
+ </description>
+ <inceptionYear>2007</inceptionYear>
+
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
+
+ <packaging>maven-plugin</packaging>
+
+ <build>
+ <plugins>
+
+ <!-- expose new plexus components -->
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-metadata</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <configuration>
+ <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>helpmojo</goal>
+ <goal>descriptor</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+ <profiles>
+
+ <!-- perform only on a release stage when using the maven-release-plugin -->
+ <profile>
+ <id>reporting</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+
+ <reporting>
+
+ <plugins>
+
+ <plugin>
+ <artifactId>maven-project-info-reports-plugin</artifactId>
+ <version>${projectInfoReportsPluginVersion}</version>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>project-team</report>
+ <report>mailing-list</report>
+ <report>cim</report>
+ <report>issue-tracking</report>
+ <report>license</report>
+ <report>scm</report>
+ <report>dependencies</report>
+ <report>dependency-convergence</report>
+ <report>plugin-management</report>
+ <report>plugins</report>
+ <report>dependency-management</report>
+ <report>summary</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-plugin-plugin</artifactId>
+ <version>${pluginPluginVersion}</version>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <version>${invokerPluginVersion}</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-maven-plugin</artifactId>
+ <version>${plexusPluginVersion}</version>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>${javadocPluginVersion}</version>
+ <configuration>
+ <quiet>true</quiet>
+ <tagletArtifacts>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>${pluginPluginVersion}</version>
+ </tagletArtifact>
+ <tagletArtifact>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-javadoc</artifactId>
+ <version>1.5.5</version>
+ </tagletArtifact>
+ </tagletArtifacts>
+ </configuration>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>javadoc</report>
+ <report>test-javadoc</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+
+ </plugins>
+ </reporting>
+
+ </profile>
+
+ <profile>
+ <id>run-its</id>
+ <activation>
+ <property>
+ <name>maven.test.skip</name>
+ <value>!true</value>
+ </property>
+ </activation>
+ <build>
+ <defaultGoal>verify</defaultGoal>
+ <plugins>
+ <plugin>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <configuration>
+ <pomIncludes>
+ <pomInclude>**/pom.xml</pomInclude>
+ </pomIncludes>
+ <postBuildHookScript>verify</postBuildHookScript>
+ <localRepositoryPath>${basedir}/target/local-repo
+ </localRepositoryPath>
+ <settingsFile>src/it/settings.xml</settingsFile>
+ <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
+ </configuration>
+ <executions>
+ <execution>
+ <id>integration-test</id>
+ <goals>
+ <goal>install</goal>
+ <goal>run</goal>
+ </goals>
+ <phase>integration-test</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+</project>
Copied: trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/goals.txt (from rev 1960, trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/goals.txt)
===================================================================
--- trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/goals.txt (rev 0)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/goals.txt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1 @@
+clean compile
\ No newline at end of file
Deleted: trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/invoker.properties 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/invoker.properties 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean compile -Dlog4j.configuration=file:src/test/resources/log4j.properties
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/iso-8859-1/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -66,7 +66,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>@pom.version@</version>
<configuration>
<verbose>true</verbose>
Copied: trunk/i18n-maven-plugin/src/it/ano-1494/migrate/goals.txt (from rev 1960, trunk/maven-i18n-plugin/src/it/ano-1494/migrate/goals.txt)
===================================================================
--- trunk/i18n-maven-plugin/src/it/ano-1494/migrate/goals.txt (rev 0)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/migrate/goals.txt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1 @@
+clean compile -Dlog4j.configuration=file:src/main/resources/log4j.properties
\ No newline at end of file
Deleted: trunk/i18n-maven-plugin/src/it/ano-1494/migrate/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/migrate/invoker.properties 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/migrate/invoker.properties 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean compile -Dlog4j.configuration=file:src/test/resources/log4j.properties
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/i18n-maven-plugin/src/it/ano-1494/migrate/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/migrate/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/migrate/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -66,7 +66,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>@pom.version@</version>
<configuration>
<verbose>true</verbose>
Copied: trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/goals.txt (from rev 1960, trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/goals.txt)
===================================================================
--- trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/goals.txt (rev 0)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/goals.txt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1 @@
+clean test
\ No newline at end of file
Deleted: trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/invoker.properties 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/invoker.properties 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean test -Dlog4j.configuration=file:src/test/resources/log4j.properties
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/ano-1494/utf-8/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -77,7 +77,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>@pom.version@</version>
<configuration>
<verbose>true</verbose>
Copied: trunk/i18n-maven-plugin/src/it/ano-672/goals.txt (from rev 1960, trunk/maven-i18n-plugin/src/it/ano-672/goals.txt)
===================================================================
--- trunk/i18n-maven-plugin/src/it/ano-672/goals.txt (rev 0)
+++ trunk/i18n-maven-plugin/src/it/ano-672/goals.txt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1 @@
+clean test
\ No newline at end of file
Deleted: trunk/i18n-maven-plugin/src/it/ano-672/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-672/invoker.properties 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/ano-672/invoker.properties 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean test
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/i18n-maven-plugin/src/it/ano-672/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-672/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/ano-672/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -87,7 +87,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>@pom.version@</version>
<configuration>
<verbose>true</verbose>
Copied: trunk/i18n-maven-plugin/src/it/evo-1507/goals.txt (from rev 1960, trunk/maven-i18n-plugin/src/it/evo-1507/goals.txt)
===================================================================
--- trunk/i18n-maven-plugin/src/it/evo-1507/goals.txt (rev 0)
+++ trunk/i18n-maven-plugin/src/it/evo-1507/goals.txt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1 @@
+clean test
\ No newline at end of file
Deleted: trunk/i18n-maven-plugin/src/it/evo-1507/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/evo-1507/invoker.properties 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/evo-1507/invoker.properties 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean test
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/i18n-maven-plugin/src/it/evo-1507/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/evo-1507/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/evo-1507/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -72,7 +72,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>@pom.version@</version>
<configuration>
<verbose>true</verbose>
Copied: trunk/i18n-maven-plugin/src/it/parsers/newProject/goals.txt (from rev 1960, trunk/maven-i18n-plugin/src/it/parsers/newProject/goals.txt)
===================================================================
--- trunk/i18n-maven-plugin/src/it/parsers/newProject/goals.txt (rev 0)
+++ trunk/i18n-maven-plugin/src/it/parsers/newProject/goals.txt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1 @@
+clean compile
\ No newline at end of file
Deleted: trunk/i18n-maven-plugin/src/it/parsers/newProject/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/newProject/invoker.properties 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/parsers/newProject/invoker.properties 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean compile
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/i18n-maven-plugin/src/it/parsers/newProject/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/newProject/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/parsers/newProject/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -66,7 +66,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>@pom.version@</version>
<configuration>
<verbose>true</verbose>
Deleted: trunk/i18n-maven-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- #%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%
- -->
-
-<!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
-<validators>
-
- <field name="field1">
-
- <field-validator type="required">
- <message>validationGetter.key1</message>
- </field-validator>
-
- </field>
-
- <field name="field2">
-
- <field-validator type="required">
- <message>validationGetter.key2##${parm1}</message>
- </field-validator>
-
- </field>
-
-</validators>
Copied: trunk/i18n-maven-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml (from rev 1960, trunk/maven-i18n-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml)
===================================================================
--- trunk/i18n-maven-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml (rev 0)
+++ trunk/i18n-maven-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%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%
+ -->
+
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="field1">
+
+ <field-validator type="required">
+ <message>validationGetter.key1</message>
+ </field-validator>
+
+ </field>
+
+ <field name="field2">
+
+ <field-validator type="required">
+ <message>validationGetter.key2##${parm1}</message>
+ </field-validator>
+
+ </field>
+
+</validators>
Copied: trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/goals.txt (from rev 1960, trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/goals.txt)
===================================================================
--- trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/goals.txt (rev 0)
+++ trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/goals.txt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1 @@
+clean compile
\ No newline at end of file
Deleted: trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/invoker.properties 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/invoker.properties 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean compile
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/pom.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -76,7 +76,7 @@
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>@pom.version@</version>
<configuration>
<keepGetters>true</keepGetters>
Deleted: trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- #%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%
- -->
-
-<!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
-<validators>
-
- <validator type="required">
- <message>validationGetter.key3</message>
- </validator>
-
- <field name="field1">
-
- <field-validator type="required">
- <message>validationGetter.key1</message>
- </field-validator>
-
- </field>
-
- <field name="field2">
-
- <field-validator type="required">
- <message>validationGetter.key2##${parm1}</message>
- </field-validator>
-
- </field>
-
-</validators>
Copied: trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml (from rev 1960, trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml)
===================================================================
--- trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml (rev 0)
+++ trunk/i18n-maven-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%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%
+ -->
+
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <validator type="required">
+ <message>validationGetter.key3</message>
+ </validator>
+
+ <field name="field1">
+
+ <field-validator type="required">
+ <message>validationGetter.key1</message>
+ </field-validator>
+
+ </field>
+
+ <field name="field2">
+
+ <field-validator type="required">
+ <message>validationGetter.key2##${parm1}</message>
+ </field-validator>
+
+ </field>
+
+</validators>
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,336 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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;
-
-import org.apache.maven.project.MavenProject;
-import org.nuiton.i18n.I18nUtil;
-import org.nuiton.plugin.AbstractPlugin;
-import org.nuiton.plugin.PluginHelper;
-import org.nuiton.plugin.PluginWithEncoding;
-
-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;
-
-/**
- * Lower level i18n mojo abstraction.
- * <p/>
- * We defines here all commons parameters and shared behaviour.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @author jruchaud <ruchaud(a)codelutin.com>
- */
-public abstract class AbstractI18nMojo extends AbstractPlugin implements PluginWithEncoding {
-
- /** Le nombre de getters détectés pendant le cycle de vie du build. */
- private static int NB_GETTER_FILES;
-
- /**
- * Dependance du projet.
- *
- * @parameter default-value="${project}"
- * @required
- * @since 1.0.2
- */
- protected MavenProject project;
-
- /**
- * 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
- */
- protected String artifactId;
-
- /**
- * 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
- */
- protected String bundles;
-
- /**
- * Directory where to find project i18n files.
- *
- * @parameter expression="${i18n.src}" default-value="${basedir}/src/main/resources/i18n"
- * @required
- */
- protected File src;
-
- /**
- * Directory where to generate i18n files.
- *
- * @parameter expression="${i18n.out}" default-value="${basedir}/target/generated-sources/i18n"
- * @required
- */
- protected File out;
-
- /**
- * Encoding used to load and store properties.
- *
- * @parameter expression="${i18n.encoding}" default-value="${project.build.sourceEncoding}"
- * @required
- */
- protected String encoding;
-
- /**
- * To update generated files to user i18n files.
- * <p/>
- * <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.
- * <p/>
- * <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 to see only errors in console.
- *
- * @parameter expression="${i18n.silent}" default-value="false"
- * @since 1.0.0-rc-5
- */
- protected boolean silent;
-
- /**
- * Strict mode to only keep in user i18n detected i18n keys and remove obsolete keys.
- * <p/>
- * <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;
-
- /** locales to process */
- protected Locale[] locales;
-
-
- @Override
- protected boolean checkPackaging() {
-
- // nothing to do on a pom module
- return !acceptPackaging(Packaging.pom);
- }
-
- @Override
- public void init() throws Exception {
-
- if (verbose) {
- // in verbose mode, no silent
- silent = false;
- getLog().info("config - verbose mode is on");
- }
- locales = I18nUtil.parseLocales(bundles);
- if (locales == null || locales.length == 0) {
- throw new IllegalStateException(
- "Il faut au moins une locale declaree (utiliser " +
- "la propriete 'bundles')");
- }
- }
-
- public String getArtifactId() {
- return artifactId;
- }
-
- /**
- * @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;
- return needGeneration;
- }
-
- /**
- * Prend en compte qu'un getter a été détecté.
- * <p/>
- * Cela veut dire qu'un goal de parser a détecté des clefs. Il faudra donc
- * activer les goal get et gen.
- */
- protected void addGetter() {
- NB_GETTER_FILES++;
- }
-
- /**
- * @param root le repertoire ou sont stockes les fichiers i18n
- * @param artifactId le nom de l'artifact
- * @param locale le nom de la locale (peut-être nulle)
- * @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
- */
- public File getI18nFile(File root,
- String artifactId,
- Locale locale,
- boolean create) throws IOException {
- String path = root.getAbsolutePath() + File.separatorChar + artifactId;
- if (locale != null) {
- path += "_" + locale.toString();
- }
- path += ".properties";
- File file = new File(path);
- if (create && !file.exists()) {
- createNewFile(file);
- }
- return file;
- }
-
- /**
- * @param root le repertoire ou sont stockes les fichiers getter
- * @param getter le nom du getter
- * @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
- */
- public File getGetterFile(File root, String getter, boolean create)
- throws IOException {
- File file = new File(
- root.getAbsolutePath() + File.separatorChar + getter);
- if (create && !file.exists()) {
- createNewFile(file);
- }
- return file;
- }
-
- protected void checkBundle(Locale locale,
- Properties propertiesOut,
- boolean showEmpty,
- Map<Locale, SortedSet<String>> unsafeHolder) {
-
- // on verifie qu'il n'y a pas de traduction vide
- SortedSet<String> emptyEntries = PluginHelper.getEmptyKeys(propertiesOut);
- if (!emptyEntries.isEmpty()) {
- 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 ");
- buffer.append(locale);
- buffer.append(" contains ");
- buffer.append(size);
- buffer.append("/");
- buffer.append(propertiesOut.size());
- buffer.append(" empty entries!");
- if (showEmpty) {
- int index = 0;
- for (String key : emptyEntries) {
- buffer.append("\n - ");
- buffer.append(index++);
- buffer.append("/");
- buffer.append(size);
- buffer.append(" : ");
- buffer.append(key);
- }
- } else {
- buffer.append(" (use -Di18n.showEmpty to see these" +
- " entries)");
- }
- getLog().warn(buffer.toString());
- } else {
- if (!silent && verbose) {
- getLog().info("bundle " + locale + " is valid (no empty" +
- " entries).");
- }
- }
- }
-
-
- @Override
- public File getBackupFile(File file) {
- return new File(file.getAbsolutePath() + "~");
- }
-
- @Override
- protected void backupFile(File f) throws IOException {
- File dst = getBackupFile(f);
- copyFile(f, dst);
- }
-
- @Override
- public MavenProject getProject() {
- return project;
- }
-
- @Override
- public void setProject(MavenProject project) {
- this.project = project;
- }
-
- @Override
- public boolean isVerbose() {
- return verbose;
- }
-
- @Override
- public void setVerbose(boolean verbose) {
- this.verbose = verbose;
- }
-
- public boolean isSilent() {
- return silent;
- }
-
- public boolean isStrictMode() {
- return strictMode;
- }
-
- @Override
- public String getEncoding() {
- return encoding;
- }
-
- @Override
- public void setEncoding(String encoding) {
- this.encoding = encoding;
- }
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java (from rev 1960, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,318 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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;
+
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.project.MavenProject;
+import org.nuiton.i18n.I18nUtil;
+import org.nuiton.plugin.AbstractPlugin;
+import org.nuiton.plugin.PluginHelper;
+import org.nuiton.plugin.PluginWithEncoding;
+
+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;
+
+/**
+ * Lower level i18n mojo abstraction.
+ * <p/>
+ * We defines here all commons parameters and shared behaviour.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @author jruchaud <ruchaud(a)codelutin.com>
+ */
+public abstract class AbstractI18nMojo extends AbstractPlugin implements PluginWithEncoding {
+
+ /** Le nombre de getters détectés pendant le cycle de vie du build. */
+ private static int NB_GETTER_FILES;
+
+ /**
+ * Dependance du projet.
+ *
+ * @since 1.0.2
+ */
+ @Component
+ protected MavenProject project;
+
+ /**
+ * Name to use as prefix of generated files.
+ * <p/>
+ * <b>Note :</b> By default, use the artifact id.
+ */
+ @Parameter(property = "i18n.artifactId", defaultValue = "${project.artifactId}", readonly = true)
+ protected String artifactId;
+
+ /**
+ * Locales to treate, separated by comma.
+ * <p/>
+ * Example :
+ * <pre>fr_FR,en_GB</pre>
+ */
+ @Parameter(property = "i18n.bundles", defaultValue = "fr_FR,en_GB", required = true)
+ protected String bundles;
+
+ /** Directory where to find project i18n files. */
+ @Parameter(property = "i18n.src", defaultValue = "${basedir}/src/main/resources/i18n", required = true)
+ protected File src;
+
+ /** Directory where to generate i18n files. */
+ @Parameter(property = "i18n.out", defaultValue = "${basedir}/target/generated-sources/i18n", required = true)
+ protected File out;
+
+ /** Encoding used to load and store properties. */
+ @Parameter(property = "i18n.encoding", defaultValue = "${project.build.sourceEncoding}", required = true)
+ protected String encoding;
+
+ /**
+ * To update generated files to user i18n files.
+ * <p/>
+ * <b>Note :</b> By default, this is active, in order to have a project uptodate
+ * with last i18n bundles detected.
+ */
+ @Parameter(property = "i18n.genSrc", defaultValue = "true")
+ protected boolean genSrc;
+
+ /**
+ * Verbose flag.
+ * <p/>
+ * <b>Note :</b> if not setted, we used the {@code maven.verbose} property.
+ */
+ @Parameter(property = "i18n.verbose", defaultValue = "${maven.verbose}")
+ protected boolean verbose;
+
+ /**
+ * Silent flag to see only errors in console.
+ *
+ * @since 1.0.0-rc-5
+ */
+ @Parameter(property = "i18n.silent", defaultValue = "false")
+ protected boolean silent;
+
+ /**
+ * Strict mode to only keep in user i18n detected i18n keys and remove obsolete keys.
+ * <p/>
+ * <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(property = "i18n.strictMode", defaultValue = "false")
+ protected boolean strictMode;
+
+ /** locales to process */
+ protected Locale[] locales;
+
+
+ @Override
+ protected boolean checkPackaging() {
+
+ // nothing to do on a pom module
+ return !acceptPackaging(Packaging.pom);
+ }
+
+ @Override
+ public void init() throws Exception {
+
+ if (verbose) {
+ // in verbose mode, no silent
+ silent = false;
+ getLog().info("config - verbose mode is on");
+ }
+ locales = I18nUtil.parseLocales(bundles);
+ if (locales == null || locales.length == 0) {
+ throw new IllegalStateException(
+ "Il faut au moins une locale declaree (utiliser " +
+ "la propriete 'bundles')");
+ }
+ }
+
+ public String getArtifactId() {
+ return artifactId;
+ }
+
+ /**
+ * @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;
+ return needGeneration;
+ }
+
+ /**
+ * Prend en compte qu'un getter a été détecté.
+ * <p/>
+ * Cela veut dire qu'un goal de parser a détecté des clefs. Il faudra donc
+ * activer les goal get et gen.
+ */
+ protected void addGetter() {
+ NB_GETTER_FILES++;
+ }
+
+ /**
+ * @param root le repertoire ou sont stockes les fichiers i18n
+ * @param artifactId le nom de l'artifact
+ * @param locale le nom de la locale (peut-être nulle)
+ * @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
+ */
+ public File getI18nFile(File root,
+ String artifactId,
+ Locale locale,
+ boolean create) throws IOException {
+ String path = root.getAbsolutePath() + File.separatorChar + artifactId;
+ if (locale != null) {
+ path += "_" + locale.toString();
+ }
+ path += ".properties";
+ File file = new File(path);
+ if (create && !file.exists()) {
+ createNewFile(file);
+ }
+ return file;
+ }
+
+ /**
+ * @param root le repertoire ou sont stockes les fichiers getter
+ * @param getter le nom du getter
+ * @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
+ */
+ public File getGetterFile(File root, String getter, boolean create)
+ throws IOException {
+ File file = new File(
+ root.getAbsolutePath() + File.separatorChar + getter);
+ if (create && !file.exists()) {
+ createNewFile(file);
+ }
+ return file;
+ }
+
+ protected void checkBundle(Locale locale,
+ Properties propertiesOut,
+ boolean showEmpty,
+ Map<Locale, SortedSet<String>> unsafeHolder) {
+
+ // on verifie qu'il n'y a pas de traduction vide
+ SortedSet<String> emptyEntries = PluginHelper.getEmptyKeys(propertiesOut);
+ if (!emptyEntries.isEmpty()) {
+ 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 ");
+ buffer.append(locale);
+ buffer.append(" contains ");
+ buffer.append(size);
+ buffer.append("/");
+ buffer.append(propertiesOut.size());
+ buffer.append(" empty entries!");
+ if (showEmpty) {
+ int index = 0;
+ for (String key : emptyEntries) {
+ buffer.append("\n - ");
+ buffer.append(index++);
+ buffer.append("/");
+ buffer.append(size);
+ buffer.append(" : ");
+ buffer.append(key);
+ }
+ } else {
+ buffer.append(" (use -Di18n.showEmpty to see these" +
+ " entries)");
+ }
+ getLog().warn(buffer.toString());
+ } else {
+ if (!silent && verbose) {
+ getLog().info("bundle " + locale + " is valid (no empty" +
+ " entries).");
+ }
+ }
+ }
+
+
+ @Override
+ public File getBackupFile(File file) {
+ return new File(file.getAbsolutePath() + "~");
+ }
+
+ @Override
+ protected void backupFile(File f) throws IOException {
+ File dst = getBackupFile(f);
+ copyFile(f, dst);
+ }
+
+ @Override
+ public MavenProject getProject() {
+ return project;
+ }
+
+ @Override
+ public void setProject(MavenProject project) {
+ this.project = project;
+ }
+
+ @Override
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ @Override
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ public boolean isSilent() {
+ return silent;
+ }
+
+ public boolean isStrictMode() {
+ return strictMode;
+ }
+
+ @Override
+ public String getEncoding() {
+ return encoding;
+ }
+
+ @Override
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+}
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,175 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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;
-
-import org.nuiton.io.SortedProperties;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Locale;
-
-/**
- * Merge new generated i18n bundles with older existing ones.
- *
- * @author jruchaud <ruchaud(a)codelutin.com>
- * @author chemit <chemit(a)codelutin.com>
- * @goal gen
- * @phase generate-resources
- * @execute goal=get
- */
-public class GenerateMojo extends AbstractI18nMojo {
-
- /**
- * A flag to check that bundles are complete (no missing i18n translations).
- *
- * @parameter expression="${i18n.checkBundle}" default-value="true"
- * @required
- * @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"
- * @required
- * @since 1.0.0
- */
- protected boolean showEmpty;
-
- /**
- * To keep a backup of old i18n bundles (suffiex by a {@code ~}).
- * <p/>
- * <b>Note: </b> By default, this property is not active.
- *
- * @parameter expression="${i18n.keepBackup}" default-value="false"
- */
- protected boolean keepBackup;
-
- /**
- * To keep generated getter files.
- * <p/>
- * <b>Note: </b> By default, this property is not active.
- *
- * @parameter expression="${i18n.keepGetters}" default-value="false"
- */
- protected boolean keepGetters;
-
- @Override
- protected boolean checkSkip() {
- if (!needGeneration()) {
- getLog().info("No getter detected - all files are up to date.");
- return false;
- }
- return true;
- }
-
- @Override
- protected void doAction() throws Exception {
- if (!silent) {
- getLog().info("config - src basedir : " + src.getAbsolutePath());
- getLog().info("config - out basedir : " + out.getAbsolutePath());
- getLog().info("config - locales : " + Arrays.toString(locales));
- }
- for (Locale locale : locales) {
- if (!silent) {
- getLog().info("prepare bundle for locale " + locale);
- }
- // Merge
- File bundleSrc = getI18nFile(src, artifactId, locale, false);
- File bundleOut = getI18nFile(out, artifactId, locale, false);
- File bundleGetterOut = getI18nFile(
- out, artifactId + GetterMojo.FROM_GETTERS, locale, false);
-
- SortedProperties propertiesSrc = new SortedProperties(encoding);
-
- if (bundleSrc.exists()) {
- propertiesSrc.load(bundleSrc);
- }
-
- SortedProperties propertiesOut = new SortedProperties(encoding);
-
- if (!strictMode) {
- // si on n'est pas en mode strict, on doit push back in
- // bundle out, all the bundle src keys
- propertiesOut.putAll(propertiesSrc);
- }
-
- propertiesOut.load(bundleGetterOut);
-
- // Parcours des clés
- for (Object key : propertiesOut.keySet()) {
- Object oldKey = propertiesOut.get(key);
- Object value = propertiesSrc.get(oldKey);
-
- // Récupération de la clé si elle a été renommée
- if (!key.equals(oldKey) && value == null) {
- value = propertiesSrc.get(key);
- }
-
- if (value != null) {
- propertiesOut.put(key, value);
- } else {
- propertiesOut.put(key, "");
- }
- }
-
- propertiesOut.store(bundleOut);
-
- // Sauvegarde avant copie
- if (genSrc && keepBackup) {
- backupFile(bundleSrc);
- }
- if (!silent) {
- getLog().info("merge bundle " + locale + " to out");
- }
-
- if (checkBundle) {
- checkBundle(locale, propertiesOut, showEmpty, null);
- }
-
- if (genSrc) {
- // Copie des fichiers dans les sources
-// copyFile(bundleOut, bundleSrc);
-
- propertiesOut.store(bundleSrc);
-
- if (!silent) {
- getLog().info("copy bundle " + locale + " to src");
- }
- }
-
- if (!keepGetters) {
- if (isVerbose()) {
- getLog().info("Will delete getter " + bundleGetterOut);
- }
- deleteFile(bundleGetterOut);
- }
- }
- }
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,174 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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;
+
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.io.SortedProperties;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Locale;
+
+/**
+ * Merge new generated i18n bundles with older existing ones.
+ *
+ * @author jruchaud <ruchaud(a)codelutin.com>
+ * @author chemit <chemit(a)codelutin.com>
+ */
+@Mojo(name = "gen", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+@Execute(goal = "get")
+public class GenerateMojo extends AbstractI18nMojo {
+
+ /**
+ * A flag to check that bundles are complete (no missing i18n translations).
+ *
+ * @since 1.0.0
+ */
+ @Parameter(property = "i18n.checkBundle", defaultValue = "true", required = true)
+ protected boolean checkBundle;
+
+ /**
+ * A flag to show missing i18n translation.
+ * <p/>
+ * <b>Note :</b> Need the {@link #checkBundle} to be activated).
+ *
+ * @since 1.0.0
+ */
+ @Parameter(property = "i18n.showEmpty", defaultValue = "false", required = true)
+ protected boolean showEmpty;
+
+ /**
+ * To keep a backup of old i18n bundles (suffiex by a {@code ~}).
+ * <p/>
+ * <b>Note: </b> By default, this property is not active.
+ */
+ @Parameter(property = "i18n.keepBackup", defaultValue = "false")
+ protected boolean keepBackup;
+
+ /**
+ * To keep generated getter files.
+ * <p/>
+ * <b>Note: </b> By default, this property is not active.
+ */
+ @Parameter(property = "i18n.keepGetters", defaultValue = "false")
+ protected boolean keepGetters;
+
+ @Override
+ protected boolean checkSkip() {
+ if (!needGeneration()) {
+ getLog().info("No getter detected - all files are up to date.");
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ if (!silent) {
+ getLog().info("config - src basedir : " + src.getAbsolutePath());
+ getLog().info("config - out basedir : " + out.getAbsolutePath());
+ getLog().info("config - locales : " + Arrays.toString(locales));
+ }
+ for (Locale locale : locales) {
+ if (!silent) {
+ getLog().info("prepare bundle for locale " + locale);
+ }
+ // Merge
+ File bundleSrc = getI18nFile(src, artifactId, locale, false);
+ File bundleOut = getI18nFile(out, artifactId, locale, false);
+ File bundleGetterOut = getI18nFile(
+ out, artifactId + GetterMojo.FROM_GETTERS, locale, false);
+
+ SortedProperties propertiesSrc = new SortedProperties(encoding);
+
+ if (bundleSrc.exists()) {
+ propertiesSrc.load(bundleSrc);
+ }
+
+ SortedProperties propertiesOut = new SortedProperties(encoding);
+
+ if (!strictMode) {
+ // si on n'est pas en mode strict, on doit push back in
+ // bundle out, all the bundle src keys
+ propertiesOut.putAll(propertiesSrc);
+ }
+
+ propertiesOut.load(bundleGetterOut);
+
+ // Parcours des clés
+ for (Object key : propertiesOut.keySet()) {
+ Object oldKey = propertiesOut.get(key);
+ Object value = propertiesSrc.get(oldKey);
+
+ // Récupération de la clé si elle a été renommée
+ if (!key.equals(oldKey) && value == null) {
+ value = propertiesSrc.get(key);
+ }
+
+ if (value != null) {
+ propertiesOut.put(key, value);
+ } else {
+ propertiesOut.put(key, "");
+ }
+ }
+
+ propertiesOut.store(bundleOut);
+
+ // Sauvegarde avant copie
+ if (genSrc && keepBackup) {
+ backupFile(bundleSrc);
+ }
+ if (!silent) {
+ getLog().info("merge bundle " + locale + " to out");
+ }
+
+ if (checkBundle) {
+ checkBundle(locale, propertiesOut, showEmpty, null);
+ }
+
+ if (genSrc) {
+ // Copie des fichiers dans les sources
+// copyFile(bundleOut, bundleSrc);
+
+ propertiesOut.store(bundleSrc);
+
+ if (!silent) {
+ getLog().info("copy bundle " + locale + " to src");
+ }
+ }
+
+ if (!keepGetters) {
+ if (isVerbose()) {
+ getLog().info("Will delete getter " + bundleGetterOut);
+ }
+ deleteFile(bundleGetterOut);
+ }
+ }
+ }
+}
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,131 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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;
-
-import org.codehaus.plexus.util.DirectoryScanner;
-import org.nuiton.io.SortedProperties;
-import org.nuiton.plugin.PluginHelper;
-
-import java.io.File;
-import java.util.Arrays;
-import java.util.Locale;
-
-/**
- * Recupere les différents fichiers des parsers en un fichier de proprietes.
- *
- * @author julien
- * @goal get
- * @phase generate-resources
- */
-public class GetterMojo extends AbstractI18nMojo {
-
- /**
- * To keep generated getter files.
- * <p/>
- * <b>Note: </b> By default, this property is not active.
- *
- * @parameter expression="${i18n.keepGetters}" default-value="false"
- */
- protected boolean keepGetters;
-
- protected static final String FROM_GETTERS = "-fromGetters";
-
- @Override
- protected boolean checkSkip() {
-
- if (!needGeneration()) {
- getLog().info("No getter detected - all files are up to date.");
- return false;
- }
- return true;
- }
-
- @Override
- protected void doAction() throws Exception {
-
- if (!silent) {
- getLog().info("config - basedir : " + out.getAbsolutePath());
- getLog().info("config - locales : " + Arrays.toString(locales));
- }
-
- File bundleGetters = new File(out.getAbsoluteFile(),
- artifactId + ".properties");
-
- createDirectoryIfNecessary(bundleGetters.getParentFile());
-
- SortedProperties propertiesOut = new SortedProperties(encoding);
-
- DirectoryScanner ds = new DirectoryScanner();
- ds.setBasedir(out);
- ds.setIncludes(new String[]{"*.getter"});
- ds.scan();
- String[] files = ds.getIncludedFiles();
-
- // Fusion des fichiers propriétés des différents parsers
- for (String file : files) {
- long t0 = System.nanoTime();
- File bundleGetter = getGetterFile(out, file, false);
-
- // chargement du getter
- SortedProperties propertiesIn =
- new SortedProperties(encoding).load(bundleGetter);
-
- // ajout des entrées dans le bundle
- propertiesOut.putAll(propertiesIn);
-
- if (!keepGetters) {
- if (isVerbose()) {
- getLog().info("Will delete getter " + bundleGetter);
- }
- deleteFile(bundleGetter);
- }
- if (!silent) {
- String time = PluginHelper.convertTime(System.nanoTime() - t0);
- getLog().info("import getter " + bundleGetter.getName() +
- " in " + time);
- }
- }
-
- // sauvegarde du fichier des getters
- propertiesOut.store(bundleGetters);
-
- // Création des bundles
- for (Locale locale : locales) {
- if (getLog().isDebugEnabled()) {
- getLog().debug("generate bundle for locale " + locale);
- }
- File bundleOut = getI18nFile(out, artifactId + FROM_GETTERS, locale, false);
- copyFile(bundleGetters, bundleOut);
- if (!silent && verbose) {
- getLog().info("generate bundle " + locale);
- }
- }
- if (!keepGetters) {
- deleteFile(bundleGetters);
- }
- }
-
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,132 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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;
+
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.codehaus.plexus.util.DirectoryScanner;
+import org.nuiton.io.SortedProperties;
+import org.nuiton.plugin.PluginHelper;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Locale;
+
+/**
+ * Recupere les différents fichiers des parsers en un fichier de proprietes.
+ *
+ * @author julien
+ */
+@Mojo(name = "get", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+public class GetterMojo extends AbstractI18nMojo {
+
+ /**
+ * To keep generated getter files.
+ * <p/>
+ * <b>Note: </b> By default, this property is not active.
+ */
+ @Parameter(property = "i18n.keepGetters", defaultValue = "false")
+ protected boolean keepGetters;
+
+ protected static final String FROM_GETTERS = "-fromGetters";
+
+ @Override
+ protected boolean checkSkip() {
+
+ if (!needGeneration()) {
+ getLog().info("No getter detected - all files are up to date.");
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+
+ if (!silent) {
+ getLog().info("config - basedir : " + out.getAbsolutePath());
+ getLog().info("config - locales : " + Arrays.toString(locales));
+ }
+
+ File bundleGetters = new File(out.getAbsoluteFile(),
+ artifactId + ".properties");
+
+ createDirectoryIfNecessary(bundleGetters.getParentFile());
+
+ SortedProperties propertiesOut = new SortedProperties(encoding);
+
+ DirectoryScanner ds = new DirectoryScanner();
+ ds.setBasedir(out);
+ ds.setIncludes(new String[]{"*.getter"});
+ ds.scan();
+ String[] files = ds.getIncludedFiles();
+
+ // Fusion des fichiers propriétés des différents parsers
+ for (String file : files) {
+ long t0 = System.nanoTime();
+ File bundleGetter = getGetterFile(out, file, false);
+
+ // chargement du getter
+ SortedProperties propertiesIn =
+ new SortedProperties(encoding).load(bundleGetter);
+
+ // ajout des entrées dans le bundle
+ propertiesOut.putAll(propertiesIn);
+
+ if (!keepGetters) {
+ if (isVerbose()) {
+ getLog().info("Will delete getter " + bundleGetter);
+ }
+ deleteFile(bundleGetter);
+ }
+ if (!silent) {
+ String time = PluginHelper.convertTime(System.nanoTime() - t0);
+ getLog().info("import getter " + bundleGetter.getName() +
+ " in " + time);
+ }
+ }
+
+ // sauvegarde du fichier des getters
+ propertiesOut.store(bundleGetters);
+
+ // Création des bundles
+ for (Locale locale : locales) {
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("generate bundle for locale " + locale);
+ }
+ File bundleOut = getI18nFile(out, artifactId + FROM_GETTERS, locale, false);
+ copyFile(bundleGetters, bundleOut);
+ if (!silent && verbose) {
+ getLog().info("generate bundle " + locale);
+ }
+ }
+ if (!keepGetters) {
+ deleteFile(bundleGetters);
+ }
+ }
+
+}
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,93 +0,0 @@
-/*
- * #%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.nuiton.i18n.plugin.AbstractI18nMojo;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Locale;
-
-/**
- * Created: 26 déc. 2009
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public abstract class AbstractI18nBundleMojo extends AbstractI18nMojo {
-
- /**
- * Repertoire ou generer les bundles.
- *
- * @parameter expression="${i18n.collectOutputDir}" default-value="${basedir}/target/i18n"
- * @required
- * @since 1.0.2
- */
- protected File collectOutputDir;
-
- /**
- * Nom de base des fichiers qui contient les localisations des bundles.
- *
- * @parameter expression="${i18n.collectOutputName}"
- * default-value="collect-${project.artifactId}-i18n"
- * @required
- * @since 1.0.2
- */
- protected String collectOutputName;
-
- /**
- * Pour obtenir les urls des fichiers i18n d'un projet (avec recherche dans
- * ses dépendances).
- * <p/>
- * <b>Note:</b> L'ordre des urls reflète l'ordre des dépendances.
- *
- * @param locale la locale a traiter
- * @return les urls des bundles i18n detectees pour le projet.
- * @throws Exception pour tout problème
- */
- protected abstract URL[] getCollectI18nResources(Locale locale)
- throws Exception;
-
- /**
- * Pour obtenir le fichier contenant les localisation des bundles i18n du
- * projet pour une {@code locale} donnée.
- *
- * @param locale la locale
- * @param create un drapeau pour forcer la création du fichier s'il n'existe
- * pas
- * @return le fichier qui contient les urls des bundles i18n pour la locale
- * donnée.
- * @throws IOException pour tout pb
- */
- protected File getCollectOutputFile(Locale locale, boolean create)
- throws IOException {
- File bundleOut = getI18nFile(collectOutputDir, collectOutputName,
- locale, create);
- return bundleOut;
- }
-
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,91 @@
+/*
+ * #%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.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.AbstractI18nMojo;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Locale;
+
+/**
+ * Created: 26 déc. 2009
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public abstract class AbstractI18nBundleMojo extends AbstractI18nMojo {
+
+ /**
+ * Directory where to generate bundles.
+ *
+ * @since 1.0.2
+ */
+ @Parameter(property = "i18n.collectOutputDir", defaultValue = "${basedir}/target/i18n", required = true)
+ protected File collectOutputDir;
+
+ /**
+ * BAse name of file which contains bundles locations.
+ *
+ * @since 1.0.2
+ */
+ @Parameter(property = "i18n.collectOutputName", defaultValue = "collect-${project.artifactId}-i18n", required = true)
+ protected String collectOutputName;
+
+ /**
+ * Pour obtenir les urls des fichiers i18n d'un projet (avec recherche dans
+ * ses dépendances).
+ * <p/>
+ * <b>Note:</b> L'ordre des urls reflète l'ordre des dépendances.
+ *
+ * @param locale la locale a traiter
+ * @return les urls des bundles i18n detectees pour le projet.
+ * @throws Exception pour tout problème
+ */
+ protected abstract URL[] getCollectI18nResources(Locale locale)
+ throws Exception;
+
+ /**
+ * Pour obtenir le fichier contenant les localisation des bundles i18n du
+ * projet pour une {@code locale} donnée.
+ *
+ * @param locale la locale
+ * @param create un drapeau pour forcer la création du fichier s'il n'existe
+ * pas
+ * @return le fichier qui contient les urls des bundles i18n pour la locale
+ * donnée.
+ * @throws IOException pour tout pb
+ */
+ protected File getCollectOutputFile(Locale locale, boolean create)
+ throws IOException {
+ File bundleOut = getI18nFile(collectOutputDir, collectOutputName,
+ locale, create);
+ return bundleOut;
+ }
+
+}
Deleted: trunk/i18n-maven-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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,286 +0,0 @@
-/*
- * #%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.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.maven.plugin.MojoFailureException;
-
-import java.io.File;
-import java.io.IOException;
-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(a)codelutin.com>
- * @since 2.0
- */
-public abstract class AbstractMakeI18nBundleMojo extends AbstractI18nBundleMojo {
-
- /**
- * Encoding used to load any i18n property files.
- * <p/>
- * If not defined, will use the {@link #encoding} parameter.
- *
- * @parameter expression="${i18n.bundleInputEncoding}"
- * @since 2.4
- */
- protected String bundleInputEncoding;
-
- /**
- * Encoding used to write any i18n property files.
- * <p/>
- * If not defined, will use the {@link #encoding} parameter.
- *
- * @parameter expression="${i18n.bundleOutputEncoding}"
- * @since 2.4
- */
- protected String bundleOutputEncoding;
-
- /**
- * Root directory where to generate aggregated bundles (this directory will
- * be added as resources of the project).
- *
- * @parameter expression="${i18n.bundleOutputDir}" default-value="${basedir}/target/generated-sources/resources"
- * @required
- * @since 1.0.0
- */
- protected File bundleOutputDir;
-
- /**
- * Package name of the generate aggregated bundles.
- * <p/>
- * <strong>Note:</strong> By default we use the <code>META-INF</code> package
- * since it is the favorite package of <code>I18n</code> runtime initializer.
- * <p/>
- * The package name is dotted as it will be stored as folder like in Java
- * language.
- * <p/>
- * Example :
- * <pre>
- * package name : foo.bar
- * directory : foo/bar
- * </pre>
- *
- * @parameter expression="${i18n.bundleOutputPackage}" default-value="META-INF"
- * @required
- * @since 2.3.2
- */
- protected String bundleOutputPackage;
-
- /**
- * 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 generate a bundle with the first locale defined as a default
- * bundle (with no locale specialization).
- *
- * @parameter expression="${i18n.generateDefaultLocale}" default-value="false"
- * @since 2.1
- */
- protected boolean generateDefaultLocale;
-
- /**
- * 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;
-
- /**
- * The definitive directory where to generate the bundles (includes the
- * package of bunlde).
- *
- * @since 2.3.2
- */
- protected File outputFolder;
-
- @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;
- }
-
- // get the definitive folder where to generate bundles (including
- // bundle package)
-
- outputFolder = getBundleOutputFolder();
-
- if (isVerbose()) {
- getLog().info("Will generates bundles in " + outputFolder);
- }
- createDirectoryIfNecessary(outputFolder);
-
- if (StringUtils.isEmpty(bundleInputEncoding)) {
-
- // use the default encoding
- bundleInputEncoding = getEncoding();
- if (getLog().isDebugEnabled()) {
- getLog().debug("Use as input encoding the default one : " +
- bundleInputEncoding);
- }
- }
-
- if (StringUtils.isEmpty(bundleOutputEncoding)) {
-
- // use the default encoding
- bundleOutputEncoding = getEncoding();
-
- if (getLog().isDebugEnabled()) {
- getLog().debug("Use as output encoding the default one : " +
- bundleOutputEncoding);
- }
- }
- }
-
- 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.");
- }
- }
-
- /**
- * Gets the bundle file for the given parameters.
- *
- * @param root the root directory where bundles are stored
- * @param artifactId the artifactId (says the prefix of bundle)
- * @param locale the locale used in bundle ({@code null} means no locale specialized)
- * @param create a flag to create the file if none existing
- * @return the bundle file
- * @throws IOException if any IO problem while creating it (if needed).
- * @since 2.1
- */
- protected abstract File getBundleFile(File root,
- String artifactId,
- Locale locale,
- boolean create) throws IOException;
-
- /**
- * Generates the default bundle, says the bundle with no locale specialized.
- * <p/>
- * This bundle is a copy of the bundle of the first locale (which in fact
- * is considered as the main locale).
- *
- * @throws IOException if any IO problem while the copy.
- * @since 2.1
- */
- protected void generateDefaultBundle() throws IOException {
-
- File bundleFirstLocale = getBundleFile(outputFolder,
- bundleOutputName,
- locales[0],
- false
- );
-
- File bundleWithoutLocale = getBundleFile(outputFolder,
- bundleOutputName,
- null,
- false
- );
-
- if (!isSilent()) {
- getLog().info("Generate default bundle at " + bundleWithoutLocale);
- }
-
- FileUtils.copyFile(bundleFirstLocale, bundleWithoutLocale);
- }
-
- protected File getBundleOutputFolder() {
- File result = bundleOutputDir;
- if (StringUtils.isNotEmpty(bundleOutputPackage)) {
- String[] paths = bundleOutputPackage.split("\\.");
- for (String path : paths) {
- result = new File(result, path);
- }
- }
- return result;
- }
-
- public String getBundleOutputEncoding() {
- return bundleOutputEncoding;
- }
-
- public String getBundleInputEncoding() {
- return bundleInputEncoding;
- }
-
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,284 @@
+/*
+ * #%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.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Parameter;
+
+import java.io.File;
+import java.io.IOException;
+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(a)codelutin.com>
+ * @since 2.0
+ */
+public abstract class AbstractMakeI18nBundleMojo extends AbstractI18nBundleMojo {
+
+ /**
+ * Encoding used to load any i18n property files.
+ * <p/>
+ * If not defined, will use the {@link #encoding} parameter.
+ *
+ * @since 2.4
+ */
+ @Parameter(property = "i18n.bundleInputEncoding")
+ protected String bundleInputEncoding;
+
+ /**
+ * Encoding used to write any i18n property files.
+ * <p/>
+ * If not defined, will use the {@link #encoding} parameter.
+ *
+ * @since 2.4
+ */
+ @Parameter(property = "i18n.bundleOutputEncoding")
+ protected String bundleOutputEncoding;
+
+ /**
+ * Root directory where to generate aggregated bundles (this directory will
+ * be added as resources of the project).
+ *
+ * @since 1.0.0
+ */
+ @Parameter(property = "i18n.bundleOutputDir", defaultValue = "${basedir}/target/generated-sources/resources", required = true)
+ protected File bundleOutputDir;
+
+ /**
+ * Package name of the generate aggregated bundles.
+ * <p/>
+ * <strong>Note:</strong> By default we use the <code>META-INF</code> package
+ * since it is the favorite package of <code>I18n</code> runtime initializer.
+ * <p/>
+ * The package name is dotted as it will be stored as folder like in Java
+ * language.
+ * <p/>
+ * Example :
+ * <pre>
+ * package name : foo.bar
+ * directory : foo/bar
+ * </pre>
+ *
+ * @since 2.3.2
+ */
+ @Parameter(property = "i18n.bundleOutputPackage", defaultValue = "META-INF", required = true)
+ protected String bundleOutputPackage;
+
+ /**
+ * Name of the bundle to generate.
+ *
+ * @since 1.0.2
+ */
+ @Parameter(property = "i18n.bundleOutputName", defaultValue = "${project.artifactId}-i18n", required = true)
+ protected String bundleOutputName;
+
+ /**
+ * A flag to generate a bundle with the first locale defined as a default
+ * bundle (with no locale specialization).
+ *
+ * @since 2.1
+ */
+ @Parameter(property = "i18n.generateDefaultLocale", defaultValue = "false")
+ protected boolean generateDefaultLocale;
+
+ /**
+ * 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.
+ *
+ * @since 1.0.0
+ */
+ @Parameter(property = "i18n.checkBundle", defaultValue = "true")
+ protected boolean checkBundle;
+
+ /**
+ * A flag to show missing i18n translation.
+ * <p/>
+ * <b>Note :</b> Need the {@link #checkBundle} to be activated).
+ *
+ * @since 1.0.0
+ */
+ @Parameter(property = "i18n.showEmpty", defaultValue = "false")
+ 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.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.failsIfWarning", defaultValue = "false")
+ protected boolean failsIfWarning;
+
+ /** to keep all none translated i18n keys by locale. */
+ protected Map<Locale, SortedSet<String>> unsafeMapping;
+
+ /**
+ * The definitive directory where to generate the bundles (includes the
+ * package of bunlde).
+ *
+ * @since 2.3.2
+ */
+ protected File outputFolder;
+
+ @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;
+ }
+
+ // get the definitive folder where to generate bundles (including
+ // bundle package)
+
+ outputFolder = getBundleOutputFolder();
+
+ if (isVerbose()) {
+ getLog().info("Will generates bundles in " + outputFolder);
+ }
+ createDirectoryIfNecessary(outputFolder);
+
+ if (StringUtils.isEmpty(bundleInputEncoding)) {
+
+ // use the default encoding
+ bundleInputEncoding = getEncoding();
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Use as input encoding the default one : " +
+ bundleInputEncoding);
+ }
+ }
+
+ if (StringUtils.isEmpty(bundleOutputEncoding)) {
+
+ // use the default encoding
+ bundleOutputEncoding = getEncoding();
+
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Use as output encoding the default one : " +
+ bundleOutputEncoding);
+ }
+ }
+ }
+
+ 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.");
+ }
+ }
+
+ /**
+ * Gets the bundle file for the given parameters.
+ *
+ * @param root the root directory where bundles are stored
+ * @param artifactId the artifactId (says the prefix of bundle)
+ * @param locale the locale used in bundle ({@code null} means no locale specialized)
+ * @param create a flag to create the file if none existing
+ * @return the bundle file
+ * @throws IOException if any IO problem while creating it (if needed).
+ * @since 2.1
+ */
+ protected abstract File getBundleFile(File root,
+ String artifactId,
+ Locale locale,
+ boolean create) throws IOException;
+
+ /**
+ * Generates the default bundle, says the bundle with no locale specialized.
+ * <p/>
+ * This bundle is a copy of the bundle of the first locale (which in fact
+ * is considered as the main locale).
+ *
+ * @throws IOException if any IO problem while the copy.
+ * @since 2.1
+ */
+ protected void generateDefaultBundle() throws IOException {
+
+ File bundleFirstLocale = getBundleFile(outputFolder,
+ bundleOutputName,
+ locales[0],
+ false
+ );
+
+ File bundleWithoutLocale = getBundleFile(outputFolder,
+ bundleOutputName,
+ null,
+ false
+ );
+
+ if (!isSilent()) {
+ getLog().info("Generate default bundle at " + bundleWithoutLocale);
+ }
+
+ FileUtils.copyFile(bundleFirstLocale, bundleWithoutLocale);
+ }
+
+ protected File getBundleOutputFolder() {
+ File result = bundleOutputDir;
+ if (StringUtils.isNotEmpty(bundleOutputPackage)) {
+ String[] paths = bundleOutputPackage.split("\\.");
+ for (String path : paths) {
+ result = new File(result, path);
+ }
+ }
+ return result;
+ }
+
+ public String getBundleOutputEncoding() {
+ return bundleOutputEncoding;
+ }
+
+ public String getBundleInputEncoding() {
+ return bundleInputEncoding;
+ }
+
+}
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,79 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2011 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.nuiton.plugin.AbstractAvailableDataMojo;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * Mojo used to display available {@link BundleFormatConverter}.
- * <p/>
- * Created: 09/05/11
- *
- * @author fdesbois <desbois(a)codelutin.com>
- * $Id$
- * @goal available-converters
- * @requiresProject true
- * @requiresDirectInvocation true
- * @requiresDependencyResolution test
- * @since 2.4
- */
-public class AvailableConverterMojo extends AbstractAvailableDataMojo {
-
- /**
- * Map of all availables {@link BundleFormatConverter}.
- *
- * @component role="org.nuiton.i18n.plugin.bundle.BundleFormatConverter"
- */
- protected Map<String, BundleFormatConverter> bundleFormatConverters;
-
- @Override
- protected Collection<AvailableData> getAllAvailableDatas() {
-
- AvailableData data = new AvailableData() {
-
- @Override
- public String name() {
- return "bundleFormatConverter";
- }
-
- @Override
- public Map<String, ?> getData() {
- return bundleFormatConverters;
- }
-
- @Override
- public String toString(Object value) {
- return value.getClass().getName();
- }
- };
-
- return Arrays.asList(data);
- }
-
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,83 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2011 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.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.nuiton.plugin.AbstractAvailableDataMojo;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Map;
+
+/**
+ * Mojo used to display available {@link BundleFormatConverter}.
+ * <p/>
+ * Created: 09/05/11
+ *
+ * @author fdesbois <desbois(a)codelutin.com>
+ * $Id$
+ * @since 2.4
+ */
+@Mojo(name = "available-converters",
+ requiresProject = true,
+ requiresDirectInvocation = true,
+ requiresDependencyResolution = ResolutionScope.TEST)
+public class AvailableConverterMojo extends AbstractAvailableDataMojo {
+
+ /**
+ * Map of all availables {@link BundleFormatConverter}.
+ *
+ * @since 2.4
+ */
+ @Component(role = BundleFormatConverter.class)
+ protected Map<String, BundleFormatConverter> bundleFormatConverters;
+
+ @Override
+ protected Collection<AvailableData> getAllAvailableDatas() {
+
+ AvailableData data = new AvailableData() {
+
+ @Override
+ public String name() {
+ return "bundleFormatConverter";
+ }
+
+ @Override
+ public Map<String, ?> getData() {
+ return bundleFormatConverters;
+ }
+
+ @Override
+ public String toString(Object value) {
+ return value.getClass().getName();
+ }
+ };
+
+ return Arrays.asList(data);
+ }
+
+}
Deleted: trunk/i18n-maven-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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,301 +0,0 @@
-/*
- * #%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.commons.lang.StringUtils;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.nuiton.i18n.bundle.I18nBundleEntry;
-import org.nuiton.i18n.bundle.I18nBundleUtil;
-import org.nuiton.i18n.init.DefaultI18nInitializer;
-import org.nuiton.io.SortedProperties;
-import org.nuiton.plugin.PluginHelper;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-
-/**
- * Generate an aggregate i18n bundle for all dependencies of the project.
- * <p/>
- * 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/>
- * 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/>
- * This goal permits this using the dependencies graph order of artifacts.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @goal bundle
- * @phase generate-resources
- * @execute goal=collect-i18n-artifacts
- * @requiresProject true
- * @requiresDependencyResolution runtime
- * @since 0.12
- */
-public class BundleMojo extends AbstractMakeI18nBundleMojo {
-
- /**
- * A flag to generate the i18n definition file.
- * <p/>
- * 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;
-
- /**
- * Converter used to change format of bundles.
- *
- * @parameter expression="${i18n.bundleFormatConverter}"
- * @since 2.4
- */
- protected String bundleFormatConverter;
-
- /**
- * Map of all availables {@link BundleFormatConverter}.
- *
- * @component role="org.nuiton.i18n.plugin.bundle.BundleFormatConverter"
- * @since 2.4
- */
- protected Map<String, BundleFormatConverter> bundleFormatConverters;
-
- /** Format converter to apply if */
- protected BundleFormatConverter converter;
-
- @Override
- public void init() throws Exception {
- super.init();
-
- // add root bundle directory as resources of the project
-
- addResourceDir(bundleOutputDir, "**/*.properties");
-
- if (StringUtils.isNotEmpty(bundleFormatConverter)) {
-
- // get converter from universe
- converter = bundleFormatConverters.get(bundleFormatConverter);
-
- if (converter == null) {
-
- // unknown converter
- throw new MojoExecutionException(
- "There is no bundleFormatConverter named \"" +
- bundleFormatConverter + "\", known ones are " +
- bundleFormatConverters.keySet());
- }
- }
- }
-
- @Override
- protected void doAction() throws Exception {
- long t00 = System.nanoTime();
-
- String version = getProject().getVersion();
- version = PluginHelper.removeSnapshotSuffix(version);
-
- String inputEncoding = getBundleInputEncoding();
- String outputEncoding = getBundleOutputEncoding();
-
- if (!silent) {
- getLog().info("config - resources dir : " + bundleOutputDir);
- getLog().info("config - package name : " + bundleOutputPackage);
- getLog().info("config - bundle name : " + bundleOutputName);
- getLog().info("config - input encoding : " + inputEncoding);
- getLog().info("config - output encoding : " + outputEncoding);
- if (bundleFormatConverter != null) {
- getLog().info("config - format converter : " + bundleFormatConverter);
- }
- getLog().info("config - locales : " + Arrays.toString(locales));
- getLog().info("config - version : " + version);
- }
-
- Map<Locale, String> bundleDico =
- new LinkedHashMap<Locale, String>(locales.length);
-
- for (Locale locale : locales) {
-
- long t0 = System.nanoTime();
-
- File bundleOut = getI18nFile(outputFolder,
- bundleOutputName,
- locale,
- false
- );
-
- SortedProperties propertiesOut =
- new SortedProperties(outputEncoding, false);
- StringBuilder buffer = new StringBuilder();
-
- URL[] urls = getCollectI18nResources(locale);
- if (urls.length == 0) {
- getLog().warn("no bundle for locale " + locale);
- continue;
- }
-
- if (!silent) {
- getLog().info("generate bundle for locale " + locale +
- " from " + urls.length + " i18n resource(s)");
- }
-
- List<String> bundlesUrls = new ArrayList<String>();
-
- Charset loadEncoding = Charset.forName(inputEncoding);
- for (URL url : urls) {
- long t000 = System.nanoTime();
- I18nBundleEntry bundleEntry =
- new I18nBundleEntry(url, locale, null);
- bundleEntry.load(propertiesOut, loadEncoding);
- String strPath = bundleEntry.getPath().toString();
- int index = strPath.indexOf("i18n/");
-
- String str = strPath.substring(index);
- bundlesUrls.add(str);
- buffer.append(',').append(str);
- if (verbose) {
- getLog().info(
- "loaded " + bundleEntry.getPath() + " in " +
- PluginHelper.convertTime(t000, System.nanoTime()));
- }
- }
-
- if (!bundlesUrls.isEmpty()) {
- bundleDico.put(locale, buffer.substring(1));
- if (!silent) {
- if (getLog().isDebugEnabled()) {
- getLog().debug(bundlesUrls.size() +
- " i18n resource(s) detected");
- }
- for (String u : bundlesUrls) {
- getLog().info(u);
- }
- }
- }
-
- // Apply conversion if necessary, depends on input bundleFormatConverter
- if (converter != null) {
- applyConversion(propertiesOut);
- }
-
- propertiesOut.store(bundleOut);
- if (!silent && verbose) {
- getLog().info(
- "bundle created in " +
- PluginHelper.convertTime(t0, System.nanoTime()) +
- " (detected sentences : " + propertiesOut.size() + ")");
- }
- if (checkBundle) {
- checkBundle(locale, propertiesOut, showEmpty, unsafeMapping);
- }
- }
-
- failsIfWarning();
-
- if (generateDefaultLocale) {
- generateDefaultBundle();
- }
-
- if (generateDefinitionFile) {
-
- generateDefinitionFile(version, bundleDico);
- }
- if (!silent && verbose) {
- getLog().info("done in " +
- PluginHelper.convertTime(t00, System.nanoTime()));
- }
- }
-
- @Override
- protected File getBundleFile(File root,
- String artifactId,
- Locale locale,
- boolean create) throws IOException {
- return getI18nFile(root, artifactId, locale, create);
- }
-
- 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(outputFolder, 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);
- p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_ENCODING, encoding);
- for (Entry<Locale, String> e : bundleDico.entrySet()) {
- p.setProperty(DefaultI18nInitializer.BUNDLES_FOR_LOCALE +
- e.getKey().toString(), e.getValue());
- }
- p.store(defOut);
- }
-
- @Override
- protected URL[] getCollectI18nResources(Locale locale) throws IOException {
- File file = getCollectOutputFile(locale, false);
- if (!file.exists()) {
- return I18nBundleUtil.EMPTY_URL_ARRAY;
- }
- URL[] urls = PluginHelper.getLinesAsURL(file);
- return urls;
- }
-
- /**
- * Apply conversion over {@code properties} with internal converter.
- *
- * @param properties Properties to walk through
- * @since 2.4
- */
- protected void applyConversion(Properties properties) {
-
- for (Entry<Object, Object> entry : properties.entrySet()) {
- String convertedValue = converter.convert((String) entry.getValue());
- properties.setProperty((String) entry.getKey(), convertedValue);
- }
- }
-
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,307 @@
+/*
+ * #%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.commons.lang.StringUtils;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.nuiton.i18n.bundle.I18nBundleEntry;
+import org.nuiton.i18n.bundle.I18nBundleUtil;
+import org.nuiton.i18n.init.DefaultI18nInitializer;
+import org.nuiton.io.SortedProperties;
+import org.nuiton.plugin.PluginHelper;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+
+/**
+ * Generate an aggregate i18n bundle for all dependencies of the project.
+ * <p/>
+ * 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/>
+ * 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/>
+ * This goal permits this using the dependencies graph order of artifacts.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.12
+ */
+@Mojo(name = "bundle",
+ defaultPhase = LifecyclePhase.GENERATE_RESOURCES,
+ requiresProject = true,
+ requiresDependencyResolution = ResolutionScope.RUNTIME)
+@Execute(goal = "collect-i18n-artifacts")
+public class BundleMojo extends AbstractMakeI18nBundleMojo {
+
+ /**
+ * A flag to generate the i18n definition file.
+ * <p/>
+ * This file contains all generated bundles and the paths of all i18n
+ * artifacts used to make it.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.generateDefinitionFile", defaultValue = "true")
+ protected boolean generateDefinitionFile;
+
+ /**
+ * Converter used to change format of bundles.
+ *
+ * @since 2.4
+ */
+ @Parameter(property = "i18n.bundleFormatConverter")
+ protected String bundleFormatConverter;
+
+ /**
+ * Map of all availables {@link BundleFormatConverter}.
+ *
+ * @since 2.4
+ */
+ @Component(role = BundleFormatConverter.class)
+ protected Map<String, BundleFormatConverter> bundleFormatConverters;
+
+ /** Format converter to apply if */
+ protected BundleFormatConverter converter;
+
+ @Override
+ public void init() throws Exception {
+ super.init();
+
+ // add root bundle directory as resources of the project
+
+ addResourceDir(bundleOutputDir, "**/*.properties");
+
+ if (StringUtils.isNotEmpty(bundleFormatConverter)) {
+
+ // get converter from universe
+ converter = bundleFormatConverters.get(bundleFormatConverter);
+
+ if (converter == null) {
+
+ // unknown converter
+ throw new MojoExecutionException(
+ "There is no bundleFormatConverter named \"" +
+ bundleFormatConverter + "\", known ones are " +
+ bundleFormatConverters.keySet());
+ }
+ }
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ long t00 = System.nanoTime();
+
+ String version = getProject().getVersion();
+ version = PluginHelper.removeSnapshotSuffix(version);
+
+ String inputEncoding = getBundleInputEncoding();
+ String outputEncoding = getBundleOutputEncoding();
+
+ if (!silent) {
+ getLog().info("config - resources dir : " + bundleOutputDir);
+ getLog().info("config - package name : " + bundleOutputPackage);
+ getLog().info("config - bundle name : " + bundleOutputName);
+ getLog().info("config - input encoding : " + inputEncoding);
+ getLog().info("config - output encoding : " + outputEncoding);
+ if (bundleFormatConverter != null) {
+ getLog().info("config - format converter : " + bundleFormatConverter);
+ }
+ getLog().info("config - locales : " + Arrays.toString(locales));
+ getLog().info("config - version : " + version);
+ }
+
+ Map<Locale, String> bundleDico =
+ new LinkedHashMap<Locale, String>(locales.length);
+
+ for (Locale locale : locales) {
+
+ long t0 = System.nanoTime();
+
+ File bundleOut = getI18nFile(outputFolder,
+ bundleOutputName,
+ locale,
+ false
+ );
+
+ SortedProperties propertiesOut =
+ new SortedProperties(outputEncoding, false);
+ StringBuilder buffer = new StringBuilder();
+
+ URL[] urls = getCollectI18nResources(locale);
+ if (urls.length == 0) {
+ getLog().warn("no bundle for locale " + locale);
+ continue;
+ }
+
+ if (!silent) {
+ getLog().info("generate bundle for locale " + locale +
+ " from " + urls.length + " i18n resource(s)");
+ }
+
+ List<String> bundlesUrls = new ArrayList<String>();
+
+ Charset loadEncoding = Charset.forName(inputEncoding);
+ for (URL url : urls) {
+ long t000 = System.nanoTime();
+ I18nBundleEntry bundleEntry =
+ new I18nBundleEntry(url, locale, null);
+ bundleEntry.load(propertiesOut, loadEncoding);
+ String strPath = bundleEntry.getPath().toString();
+ int index = strPath.indexOf("i18n/");
+
+ String str = strPath.substring(index);
+ bundlesUrls.add(str);
+ buffer.append(',').append(str);
+ if (verbose) {
+ getLog().info(
+ "loaded " + bundleEntry.getPath() + " in " +
+ PluginHelper.convertTime(t000, System.nanoTime()));
+ }
+ }
+
+ if (!bundlesUrls.isEmpty()) {
+ bundleDico.put(locale, buffer.substring(1));
+ if (!silent) {
+ if (getLog().isDebugEnabled()) {
+ getLog().debug(bundlesUrls.size() +
+ " i18n resource(s) detected");
+ }
+ for (String u : bundlesUrls) {
+ getLog().info(u);
+ }
+ }
+ }
+
+ // Apply conversion if necessary, depends on input bundleFormatConverter
+ if (converter != null) {
+ applyConversion(propertiesOut);
+ }
+
+ propertiesOut.store(bundleOut);
+ if (!silent && verbose) {
+ getLog().info(
+ "bundle created in " +
+ PluginHelper.convertTime(t0, System.nanoTime()) +
+ " (detected sentences : " + propertiesOut.size() + ")");
+ }
+ if (checkBundle) {
+ checkBundle(locale, propertiesOut, showEmpty, unsafeMapping);
+ }
+ }
+
+ failsIfWarning();
+
+ if (generateDefaultLocale) {
+ generateDefaultBundle();
+ }
+
+ if (generateDefinitionFile) {
+
+ generateDefinitionFile(version, bundleDico);
+ }
+ if (!silent && verbose) {
+ getLog().info("done in " +
+ PluginHelper.convertTime(t00, System.nanoTime()));
+ }
+ }
+
+ @Override
+ protected File getBundleFile(File root,
+ String artifactId,
+ Locale locale,
+ boolean create) throws IOException {
+ return getI18nFile(root, artifactId, locale, create);
+ }
+
+ 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(outputFolder, 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);
+ p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_ENCODING, encoding);
+ for (Entry<Locale, String> e : bundleDico.entrySet()) {
+ p.setProperty(DefaultI18nInitializer.BUNDLES_FOR_LOCALE +
+ e.getKey().toString(), e.getValue());
+ }
+ p.store(defOut);
+ }
+
+ @Override
+ protected URL[] getCollectI18nResources(Locale locale) throws IOException {
+ File file = getCollectOutputFile(locale, false);
+ if (!file.exists()) {
+ return I18nBundleUtil.EMPTY_URL_ARRAY;
+ }
+ URL[] urls = PluginHelper.getLinesAsURL(file);
+ return urls;
+ }
+
+ /**
+ * Apply conversion over {@code properties} with internal converter.
+ *
+ * @param properties Properties to walk through
+ * @since 2.4
+ */
+ protected void applyConversion(Properties properties) {
+
+ for (Entry<Object, Object> entry : properties.entrySet()) {
+ String convertedValue = converter.convert((String) entry.getValue());
+ properties.setProperty((String) entry.getKey(), convertedValue);
+ }
+ }
+
+}
Deleted: trunk/i18n-maven-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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,262 +0,0 @@
-/*
- * #%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.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.resolver.ArtifactCollector;
-import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
-import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
-import org.apache.maven.shared.dependency.tree.DependencyNode;
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
-import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
-import org.nuiton.i18n.bundle.I18nBundleEntry;
-import org.nuiton.plugin.DependencyUtil;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Detects any i18n artifacts in the dependencies of the project and store
- * their references in a file.
- * <p/>
- * The generated file will be used by {@code bundle} mojo to generate the final
- * aggregated bundle.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @goal collect-i18n-artifacts
- * @phase generate-resources
- * @requiresProject true
- * @requiresDependencyResolution runtime
- * @since 1.0.2
- */
-public class CollectI18nArtifactsMojo extends AbstractI18nBundleMojo {
-
- /**
- * Local Repository.
- *
- * @parameter expression="${localRepository}"
- * @required
- * @readonly
- * @since 1.0.2
- */
- protected ArtifactRepository localRepository;
-
- /**
- * Dependency tree builder component.
- *
- * @component
- * @since 1.0.2
- */
- protected DependencyTreeBuilder dependencyTreeBuilder;
-
- /**
- * Artifact Factory component.
- *
- * @component
- * @since 1.0.2
- */
- protected ArtifactFactory factory;
-
- /**
- * Artifact metadata source component.
- *
- * @component
- * @since 1.0.2
- */
- protected ArtifactMetadataSource artifactMetadataSource;
-
- /**
- * Artifact collector component.
- *
- * @component
- * @since 1.0.2
- */
- protected ArtifactCollector collector;
-
- I18nArtifact[] i18nArtifacts;
-
- @Override
- public void init() throws Exception {
- super.init();
-
- createDirectoryIfNecessary(collectOutputDir);
- }
-
- @Override
- protected void doAction() throws Exception {
-
- // detects the i18n artifacts (only once since it cost some times)...
- i18nArtifacts = detectI18nArtifacts();
-
- if (i18nArtifacts.length == 0) {
- getLog().warn("no i18n artifact detected.");
- return;
- }
-
- for (Locale locale : locales) {
-
- if (!silent) {
- getLog().info("generate collected i18n artifacts for locale " +
- locale);
- }
- URL[] urls = getCollectI18nResources(locale);
-
- if (urls.length == 0) {
- getLog().warn("no i18n bundles for locale " + locale);
- return;
- }
-
- File bundleOut = getCollectOutputFile(locale, true);
-
- storeCollectI18nResources(bundleOut, urls);
-
- getLog().info("collected " + urls.length +
- " i18n artifacts for locale " + locale +
- " stored in " + bundleOut);
- }
- }
-
- @Override
- protected URL[] getCollectI18nResources(Locale locale)
- throws IOException, DependencyTreeBuilderException {
-
- // la locale par defaut est la première
- Locale defaultLocale = locales[0];
-
- List<URL> urls = new ArrayList<URL>();
- for (I18nArtifact artifact : i18nArtifacts) {
- I18nBundleEntry[] bundleEntries =
- artifact.getBundleEntries(locale, defaultLocale);
- for (I18nBundleEntry bundleEntry : bundleEntries) {
-
- URL path = bundleEntry.getPath();
- urls.add(path);
- if (verbose) {
- getLog().info("add " + path);
- }
- }
- }
- return urls.toArray(new URL[urls.size()]);
- }
-
- protected void storeCollectI18nResources(File bundleOut, URL[] urls)
- throws IOException {
- StringBuilder buffer = new StringBuilder();
-
- for (URL path : urls) {
-
- buffer.append(path).append("\n");
-
- if (verbose) {
- getLog().info("add " + path);
- }
- }
- writeFile(bundleOut, buffer.toString(), encoding);
- }
-
- /**
- * Detecte les {@link I18nArtifact} et les retourne dans l'ordre de
- * chargement dans le système i18n, i.e l'ordre des dependances entre
- * artifacts.
- *
- * @return les artifacts i18nables triés par leur ordre de chargement dans
- * le système i18n.
- * @throws IOException while detecting bundles from
- * artifacts
- * @throws DependencyTreeBuilderException if any error while building the
- * depencendy tree
- */
- protected I18nArtifact[] detectI18nArtifacts()
- throws IOException, DependencyTreeBuilderException {
-
- Map<Artifact, I18nArtifact> dico =
- new HashMap<Artifact, I18nArtifact>();
-
- I18nArtifact i18nArtifact;
- for (Object o : project.getArtifacts()) {
- i18nArtifact = new I18nArtifact((Artifact) o);
- detectBundles(i18nArtifact, null, dico);
- }
-
- ArtifactFilter artifactFilter
- = new ScopeArtifactFilter(Artifact.SCOPE_RUNTIME);
-
- DependencyNode rootNode = dependencyTreeBuilder.buildDependencyTree(
- project, localRepository, factory,
- artifactMetadataSource, artifactFilter, collector);
-
- List<Artifact> artifacts = new ArrayList<Artifact>(dico.keySet());
-
- // workaround before using maven-helper-plugin 1.3 see http://nuiton.org/issues/show/1082
- if (!artifacts.isEmpty()) {
- DependencyUtil.sortArtifacts(rootNode, artifacts,
- getLog().isDebugEnabled());
- }
-
- // l'artifact du projet est traite en dernier car s'il possède des
- // bundles alors ils doivent etre charge en dernier
-
- Artifact projectArtifact = project.getArtifact();
-
-
- i18nArtifact = new I18nArtifact(projectArtifact, src.getParentFile());
- detectBundles(i18nArtifact, artifacts, dico);
-
- I18nArtifact[] result = new I18nArtifact[artifacts.size()];
- int i = 0;
- for (Artifact artifact : artifacts) {
- result[i++] = dico.get(artifact);
- }
- return result;
- }
-
- protected void detectBundles(I18nArtifact i18nArtifact,
- List<Artifact> artifacts,
- Map<Artifact, I18nArtifact> dico) throws IOException {
- if (i18nArtifact.detectBundles()) {
- if (!silent) {
- getLog().info("detected i18n artifact " + i18nArtifact);
- }
- if (artifacts != null) {
- artifacts.add(i18nArtifact.getArtifact());
- }
- dico.put(i18nArtifact.getArtifact(), i18nArtifact);
- } else {
- if (getLog().isDebugEnabled()) {
- getLog().debug("reject artifact " + i18nArtifact);
- }
- }
- }
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,265 @@
+/*
+ * #%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.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactCollector;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.shared.dependency.tree.DependencyNode;
+import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
+import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
+import org.nuiton.i18n.bundle.I18nBundleEntry;
+import org.nuiton.plugin.DependencyUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * Detects any i18n artifacts in the dependencies of the project and store
+ * their references in a file.
+ * <p/>
+ * The generated file will be used by {@code bundle} mojo to generate the final
+ * aggregated bundle.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0.2
+ */
+@Mojo(name = "collect-i18n-artifacts",
+ defaultPhase = LifecyclePhase.GENERATE_RESOURCES,
+ requiresProject = true,
+ requiresDependencyResolution = ResolutionScope.RUNTIME)
+public class CollectI18nArtifactsMojo extends AbstractI18nBundleMojo {
+
+ /**
+ * Local Repository.
+ *
+ * @since 1.0.2
+ */
+ @Parameter(property = "localRepository", required = true, readonly = true)
+ protected ArtifactRepository localRepository;
+
+ /**
+ * Dependency tree builder component.
+ *
+ * @since 1.0.2
+ */
+ @Component
+ protected DependencyTreeBuilder dependencyTreeBuilder;
+
+ /**
+ * Artifact Factory component.
+ *
+ * @since 1.0.2
+ */
+ @Component
+ protected ArtifactFactory factory;
+
+ /**
+ * Artifact metadata source component.
+ *
+ * @since 1.0.2
+ */
+ @Component
+ protected ArtifactMetadataSource artifactMetadataSource;
+
+ /**
+ * Artifact collector component.
+ *
+ * @since 1.0.2
+ */
+ @Component
+ protected ArtifactCollector collector;
+
+ I18nArtifact[] i18nArtifacts;
+
+ @Override
+ public void init() throws Exception {
+ super.init();
+
+ createDirectoryIfNecessary(collectOutputDir);
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+
+ // detects the i18n artifacts (only once since it cost some times)...
+ i18nArtifacts = detectI18nArtifacts();
+
+ if (i18nArtifacts.length == 0) {
+ getLog().warn("no i18n artifact detected.");
+ return;
+ }
+
+ for (Locale locale : locales) {
+
+ if (!silent) {
+ getLog().info("generate collected i18n artifacts for locale " +
+ locale);
+ }
+ URL[] urls = getCollectI18nResources(locale);
+
+ if (urls.length == 0) {
+ getLog().warn("no i18n bundles for locale " + locale);
+ return;
+ }
+
+ File bundleOut = getCollectOutputFile(locale, true);
+
+ storeCollectI18nResources(bundleOut, urls);
+
+ getLog().info("collected " + urls.length +
+ " i18n artifacts for locale " + locale +
+ " stored in " + bundleOut);
+ }
+ }
+
+ @Override
+ protected URL[] getCollectI18nResources(Locale locale)
+ throws IOException, DependencyTreeBuilderException {
+
+ // la locale par defaut est la première
+ Locale defaultLocale = locales[0];
+
+ List<URL> urls = new ArrayList<URL>();
+ for (I18nArtifact artifact : i18nArtifacts) {
+ I18nBundleEntry[] bundleEntries =
+ artifact.getBundleEntries(locale, defaultLocale);
+ for (I18nBundleEntry bundleEntry : bundleEntries) {
+
+ URL path = bundleEntry.getPath();
+ urls.add(path);
+ if (verbose) {
+ getLog().info("add " + path);
+ }
+ }
+ }
+ return urls.toArray(new URL[urls.size()]);
+ }
+
+ protected void storeCollectI18nResources(File bundleOut, URL[] urls)
+ throws IOException {
+ StringBuilder buffer = new StringBuilder();
+
+ for (URL path : urls) {
+
+ buffer.append(path).append("\n");
+
+ if (verbose) {
+ getLog().info("add " + path);
+ }
+ }
+ writeFile(bundleOut, buffer.toString(), encoding);
+ }
+
+ /**
+ * Detecte les {@link I18nArtifact} et les retourne dans l'ordre de
+ * chargement dans le système i18n, i.e l'ordre des dependances entre
+ * artifacts.
+ *
+ * @return les artifacts i18nables triés par leur ordre de chargement dans
+ * le système i18n.
+ * @throws IOException while detecting bundles from
+ * artifacts
+ * @throws DependencyTreeBuilderException if any error while building the
+ * depencendy tree
+ */
+ protected I18nArtifact[] detectI18nArtifacts()
+ throws IOException, DependencyTreeBuilderException {
+
+ Map<Artifact, I18nArtifact> dico =
+ new HashMap<Artifact, I18nArtifact>();
+
+ I18nArtifact i18nArtifact;
+ for (Object o : project.getArtifacts()) {
+ i18nArtifact = new I18nArtifact((Artifact) o);
+ detectBundles(i18nArtifact, null, dico);
+ }
+
+ ArtifactFilter artifactFilter
+ = new ScopeArtifactFilter(Artifact.SCOPE_RUNTIME);
+
+ DependencyNode rootNode = dependencyTreeBuilder.buildDependencyTree(
+ project, localRepository, factory,
+ artifactMetadataSource, artifactFilter, collector);
+
+ List<Artifact> artifacts = new ArrayList<Artifact>(dico.keySet());
+
+ // workaround before using maven-helper-plugin 1.3 see http://nuiton.org/issues/show/1082
+ if (!artifacts.isEmpty()) {
+ DependencyUtil.sortArtifacts(rootNode, artifacts,
+ getLog().isDebugEnabled());
+ }
+
+ // l'artifact du projet est traite en dernier car s'il possède des
+ // bundles alors ils doivent etre charge en dernier
+
+ Artifact projectArtifact = project.getArtifact();
+
+
+ i18nArtifact = new I18nArtifact(projectArtifact, src.getParentFile());
+ detectBundles(i18nArtifact, artifacts, dico);
+
+ I18nArtifact[] result = new I18nArtifact[artifacts.size()];
+ int i = 0;
+ for (Artifact artifact : artifacts) {
+ result[i++] = dico.get(artifact);
+ }
+ return result;
+ }
+
+ protected void detectBundles(I18nArtifact i18nArtifact,
+ List<Artifact> artifacts,
+ Map<Artifact, I18nArtifact> dico) throws IOException {
+ if (i18nArtifact.detectBundles()) {
+ if (!silent) {
+ getLog().info("detected i18n artifact " + i18nArtifact);
+ }
+ if (artifacts != null) {
+ artifacts.add(i18nArtifact.getArtifact());
+ }
+ dico.put(i18nArtifact.getArtifact(), i18nArtifact);
+ } else {
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("reject artifact " + i18nArtifact);
+ }
+ }
+ }
+}
Deleted: trunk/i18n-maven-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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,350 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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.parser;
-
-import org.nuiton.i18n.plugin.AbstractI18nMojo;
-import org.nuiton.io.FileUpdater;
-import org.nuiton.io.SortedProperties;
-import org.nuiton.plugin.PluginHelper;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-/**
- * Abstract implementation for parsing goal.
- *
- * @author tchemit <chemit(a)codelutin.com>
- */
-public abstract class AbstractI18nParserMojo extends AbstractI18nMojo implements I18nParserConfiguration {
-
- /** @return the outGetter to use for the instance (java.getter,...) */
- protected abstract String getOutGetter();
-
- /** @return the default includes to add to directory scanner */
- protected abstract String[] getDefaultIncludes();
-
- /** @return the default excludes to add to directory scanner */
- protected abstract String[] getDefaultExcludes();
-
- /** @return the default src directory to use in directory scanner */
- protected abstract File getDefaultBasedir();
-
- /**
- * @return a new file parser to be used in the parser consumer parserExecutor
- * @since 1.2
- */
- public abstract FileParser newFileParser();
-
- /**
- * @param entry the incoming source entry to attach to the file updater
- * @return a new file updater to detects files to treate
- */
- public abstract FileUpdater newFileUpdater(SourceEntry entry);
-
- /**
- * 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 treate default entry offered by the mojo.
- *
- * @parameter expression="${i18n.treateDefaultEntry}" default-value="true"
- */
- protected boolean treateDefaultEntry;
-
- /**
- * Source entries (src+includes+excludes) to process.
- *
- * @parameter expression="${i18n.entries}"
- */
- protected I18nSourceEntry[] entries;
-
- /**
- * Flag to display touched files while parsing.
- * <p/>
- * 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
- */
- protected boolean showTouchedFiles;
-
- /**
- * 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...)
- *
- * @parameter expression="${i18n.backupGetter}" default-value="false"
- * @since 1.0.2
- */
- protected boolean backupGetter;
-
- /**
- * To force reparse of all sources.
- *
- * @parameter expression="${i18n.force}" default-value="false"
- * @since 1.2
- */
- protected boolean force;
-
- private SortedProperties result;
-
- protected SortedProperties oldParser;
-
- protected SortedProperties oldLanguage;
-
- protected long t0;
-
- ParserExecutor parserExecutor;
-
- @Override
- public boolean isStrictMode() {
- return strictMode;
- }
-
- public boolean isForce() {
- return force;
- }
-
- @Override
- public void init() throws Exception {
- super.init();
- t0 = System.nanoTime();
- result = new SortedProperties(encoding);
- oldParser = new SortedProperties(encoding);
- oldLanguage = new SortedProperties(encoding);
- createDirectoryIfNecessary(out);
-// // evenements
-// if (keysModifier) {
-// addParserEvent(KeysModifier.getInstance(
-// getKeyModifierStart(), getKeyModifierEnd(), encoding));
-// }
-
- // check there is something to treate
- if ((entries == null || entries.length == 0) && !treateDefaultEntry) {
- // nothing to do
- throw new IllegalStateException(
- "No entry defined and treateDefaultEntry is false, " +
- "will skip the goal.");
- }
-
- if (verbose && entries != null && entries.length > 0) {
- if (getLog().isInfoEnabled()) {
-
- getLog().info("detected entries : " + entries.length);
- for (SourceEntry e : entries) {
- getLog().info(e.toString() + ", specific goal ? " +
- e.getSpecificGoal());
- }
- }
- }
-
- parserExecutor = new ParserExecutor(this);
- }
-
- protected boolean onEnterEntry(I18nSourceEntry entry) {
- boolean skip = entry.init(this);
- return skip;
- }
-
- @Override
- protected void doAction() throws Exception {
-
- if (!silent && strictMode) {
- getLog().info("config - strictMode is on (all files will be" +
- " parsed).");
- }
- if (!silent && force) {
- getLog().info("config - force is on (all files will be" +
- " parsed).");
- }
-
- // Reprise sur un ancien parsing
- File oldParserFile = getGetterFile(out, getOutGetter(), true);
- File saveFile = getBackupFile(oldParserFile);
-
- oldParser.load(oldParserFile);
- if (backupGetter) {
- backupFile(oldParserFile);
- }
-
- // Anciennes cles disponnibles
- //fixme : pourquoi on utilise un bundle precis ? le premier ici,
- // je ne comprends pas
- File oldLanguageFile = getI18nFile(src, artifactId, locales[0], true);
-
- oldLanguage.load(oldLanguageFile);
-
- // Parsing
- if (treateDefaultEntry) {
- addDefaultEntry();
- }
-
- for (I18nSourceEntry entry : entries) {
-
- boolean skip = onEnterEntry(entry);
-
- if (skip) {
- if (!silent && verbose) {
- getLog().info("skip - " + entry.getSkipMessage());
- }
- continue;
- }
-
- // launch parser for found files
- String[] files = entry.getFiles();
-
- if (!silent) {
- getLog().info("start entry " + entry.toString());
- getLog().info(files.length + " file(s) to process (among " +
- entry.getFoudFiles() + " files)");
- }
-
- for (int i = 0, max = files.length; i < max; i++) {
- String file1 = files[i];
- String fileName = entry.getBasedir().getAbsolutePath() +
- File.separator + file1;
- File file = new File(fileName);
- parserExecutor.addFile(newFileParser(), file);
- }
- }
-
- if (getLog().isDebugEnabled()) {
- getLog().debug("ask to terminate " + parserExecutor);
- }
-
- // all files are send to parserExecutor, we ask termination of parserExecutor.
- // this termination treat all sending file before really stop
- parserExecutor.terminatesAndWaits();
-
- List<File> treadedFiles = parserExecutor.getTreatedFiles();
- List<File> touchedFiles = parserExecutor.getTouchedFiles();
-
- // Suppression du fichier sauvegarder
- if (!backupGetter) {
- deleteFile(saveFile);
- }
-
- if (treadedFiles.isEmpty()) {
- if (!silent) {
- getLog().info("Nothing was parsed - all files are up to date.");
- }
- } else {
- if (showTouchedFiles) {
- for (File f : touchedFiles) {
- getLog().info("touch " + f);
- }
- }
- if (!silent) {
- int i = touchedFiles.size();
- int max = treadedFiles.size();
- getLog().info(getLogEntry(
- "Parsing is done. [treated file(s) : " + i + '/' +
- max + "]", max, 0, t0));
- }
- // save getter
- saveGetterFile();
- // add getter
- addGetter();
- }
-
- parserExecutor.clear();
- }
-
- @Override
- public boolean isShowTouchedFiles() {
- return showTouchedFiles;
- }
-
- @Override
- public SortedProperties getResult() {
- return result;
- }
-
- /**
- * Add the default entry to entries given in configuration.
- * <p/>
- * This is a convinient method to simplify the configuration of the plugin.
- */
- protected void addDefaultEntry() {
- if (verbose) {
- getLog().info("add default entry");
- }
- boolean hasEntries = entries != null && entries.length > 0;
- I18nSourceEntry[] tmp =
- new I18nSourceEntry[hasEntries ? entries.length + 1 : 1];
- if (hasEntries) {
- System.arraycopy(entries, 0, tmp, 0, entries.length);
- }
- tmp[tmp.length - 1] = new I18nSourceEntry();
- entries = tmp;
- }
-
- /**
- * Save the result in the getter file.
- *
- * @throws IOException if any io pb
- */
- protected void saveGetterFile() throws IOException {
- File getterFile = getGetterFile(out, getOutGetter(), false);
- result.store(getterFile);
- }
-
- /**
- * Construit une chaine de log formatée.
- *
- * @param msg le prefix du message
- * @param nbFiles le nombre de fichiers actuellement traités
- * @param time le time de traitement de ce fichier
- * @param all le temps de traitement de tous les fichiers
- * @return la chaine de log formatée
- */
- public static String getLogEntry(String msg,
- int nbFiles,
- long time,
- long all) {
- long now = System.nanoTime();
- long delta = now - time;
- String s = msg;
- if (time > 0 && all == 0) {
- s += " (" + PluginHelper.convertTime(delta) + ")";
- }
- if (all > 0) {
- s += "(total time:" + PluginHelper.convertTime(now - all) + ")";
- }
- if (nbFiles > 0) {
- s += " ( ~ " +
- PluginHelper.convertTime((now - all) / nbFiles) + " / file)";
- }
- return s;
- }
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java (from rev 1960, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,341 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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.parser;
+
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.AbstractI18nMojo;
+import org.nuiton.io.FileUpdater;
+import org.nuiton.io.SortedProperties;
+import org.nuiton.plugin.PluginHelper;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Abstract implementation for parsing goal.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ */
+public abstract class AbstractI18nParserMojo extends AbstractI18nMojo implements I18nParserConfiguration {
+
+ /** @return the outGetter to use for the instance (java.getter,...) */
+ protected abstract String getOutGetter();
+
+ /** @return the default includes to add to directory scanner */
+ protected abstract String[] getDefaultIncludes();
+
+ /** @return the default excludes to add to directory scanner */
+ protected abstract String[] getDefaultExcludes();
+
+ /** @return the default src directory to use in directory scanner */
+ protected abstract File getDefaultBasedir();
+
+ /**
+ * @return a new file parser to be used in the parser consumer parserExecutor
+ * @since 1.2
+ */
+ public abstract FileParser newFileParser();
+
+ /**
+ * @param entry the incoming source entry to attach to the file updater
+ * @return a new file updater to detects files to treate
+ */
+ public abstract FileUpdater newFileUpdater(SourceEntry entry);
+
+ /** Build directory (used to know if files in sources are up-to-date). */
+ @Parameter(property = "i18n.cp", defaultValue = "${basedir}/target/classes")
+ protected File cp;
+
+ /** To treat default entry offered by the mojo. */
+ @Parameter(property = "i18n.treateDefaultEntry", defaultValue = "true")
+ protected boolean treateDefaultEntry;
+
+ /** Source entries (src+includes+excludes) to process. */
+ @Parameter(property = "i18n.entries")
+ protected I18nSourceEntry[] entries;
+
+ /**
+ * Flag to display touched files while parsing.
+ * <p/>
+ * Note: the value will be always {@code true} if {@link #verbose} is
+ * set at {@code true}.
+ *
+ * @since 0.9
+ */
+ @Parameter(property = "i18n.showTouchedFiles", defaultValue = "${maven.verbose}")
+ protected boolean showTouchedFiles;
+
+ /**
+ * 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...)
+ *
+ * @since 1.0.2
+ */
+ @Parameter(property = "i18n.backupGetter", defaultValue = "false")
+ protected boolean backupGetter;
+
+ /**
+ * To force reparse of all sources.
+ *
+ * @since 1.2
+ */
+ @Parameter(property = "i18n.force", defaultValue = "false")
+ protected boolean force;
+
+ private SortedProperties result;
+
+ protected SortedProperties oldParser;
+
+ protected SortedProperties oldLanguage;
+
+ protected long t0;
+
+ ParserExecutor parserExecutor;
+
+ @Override
+ public boolean isStrictMode() {
+ return strictMode;
+ }
+
+ public boolean isForce() {
+ return force;
+ }
+
+ @Override
+ public void init() throws Exception {
+ super.init();
+ t0 = System.nanoTime();
+ result = new SortedProperties(encoding);
+ oldParser = new SortedProperties(encoding);
+ oldLanguage = new SortedProperties(encoding);
+ createDirectoryIfNecessary(out);
+// // evenements
+// if (keysModifier) {
+// addParserEvent(KeysModifier.getInstance(
+// getKeyModifierStart(), getKeyModifierEnd(), encoding));
+// }
+
+ // check there is something to treate
+ if ((entries == null || entries.length == 0) && !treateDefaultEntry) {
+ // nothing to do
+ throw new IllegalStateException(
+ "No entry defined and treateDefaultEntry is false, " +
+ "will skip the goal.");
+ }
+
+ if (verbose && entries != null && entries.length > 0) {
+ if (getLog().isInfoEnabled()) {
+
+ getLog().info("detected entries : " + entries.length);
+ for (SourceEntry e : entries) {
+ getLog().info(e.toString() + ", specific goal ? " +
+ e.getSpecificGoal());
+ }
+ }
+ }
+
+ parserExecutor = new ParserExecutor(this);
+ }
+
+ protected boolean onEnterEntry(I18nSourceEntry entry) {
+ boolean skip = entry.init(this);
+ return skip;
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+
+ if (!silent && strictMode) {
+ getLog().info("config - strictMode is on (all files will be" +
+ " parsed).");
+ }
+ if (!silent && force) {
+ getLog().info("config - force is on (all files will be" +
+ " parsed).");
+ }
+
+ // Reprise sur un ancien parsing
+ File oldParserFile = getGetterFile(out, getOutGetter(), true);
+ File saveFile = getBackupFile(oldParserFile);
+
+ oldParser.load(oldParserFile);
+ if (backupGetter) {
+ backupFile(oldParserFile);
+ }
+
+ // Anciennes cles disponnibles
+ //fixme : pourquoi on utilise un bundle precis ? le premier ici,
+ // je ne comprends pas
+ File oldLanguageFile = getI18nFile(src, artifactId, locales[0], true);
+
+ oldLanguage.load(oldLanguageFile);
+
+ // Parsing
+ if (treateDefaultEntry) {
+ addDefaultEntry();
+ }
+
+ for (I18nSourceEntry entry : entries) {
+
+ boolean skip = onEnterEntry(entry);
+
+ if (skip) {
+ if (!silent && verbose) {
+ getLog().info("skip [" + entry + "] - " + entry.getSkipMessage());
+ }
+ continue;
+ }
+
+ // launch parser for found files
+ String[] files = entry.getFiles();
+
+ if (!silent) {
+ getLog().info("start entry " + entry.toString());
+ getLog().info(files.length + " file(s) to process (among " +
+ entry.getFoudFiles() + " files)");
+ }
+
+ for (String file1 : files) {
+ String fileName = entry.getBasedir().getAbsolutePath() +
+ File.separator + file1;
+ File file = new File(fileName);
+ parserExecutor.addFile(newFileParser(), file);
+ }
+ }
+
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("ask to terminate " + parserExecutor);
+ }
+
+ // all files are send to parserExecutor, we ask termination of parserExecutor.
+ // this termination treat all sending file before really stop
+ parserExecutor.terminatesAndWaits();
+
+ List<File> treadedFiles = parserExecutor.getTreatedFiles();
+ List<File> touchedFiles = parserExecutor.getTouchedFiles();
+
+ // Suppression du fichier sauvegarder
+ if (!backupGetter) {
+ deleteFile(saveFile);
+ }
+
+ if (treadedFiles.isEmpty()) {
+ if (!silent) {
+ getLog().info("Nothing was parsed - all files are up to date.");
+ }
+ } else {
+ if (showTouchedFiles) {
+ for (File f : touchedFiles) {
+ getLog().info("touch " + f);
+ }
+ }
+ if (!silent) {
+ int i = touchedFiles.size();
+ int max = treadedFiles.size();
+ getLog().info(getLogEntry(
+ "Parsing is done. [treated file(s) : " + i + '/' +
+ max + "]", max, 0, t0));
+ }
+ // save getter
+ saveGetterFile();
+ // add getter
+ addGetter();
+ }
+
+ parserExecutor.clear();
+ }
+
+ @Override
+ public boolean isShowTouchedFiles() {
+ return showTouchedFiles;
+ }
+
+ @Override
+ public SortedProperties getResult() {
+ return result;
+ }
+
+ /**
+ * Add the default entry to entries given in configuration.
+ * <p/>
+ * This is a convinient method to simplify the configuration of the plugin.
+ */
+ protected void addDefaultEntry() {
+ if (verbose) {
+ getLog().info("add default entry");
+ }
+ boolean hasEntries = entries != null && entries.length > 0;
+ I18nSourceEntry[] tmp =
+ new I18nSourceEntry[hasEntries ? entries.length + 1 : 1];
+ if (hasEntries) {
+ System.arraycopy(entries, 0, tmp, 0, entries.length);
+ }
+ tmp[tmp.length - 1] = new I18nSourceEntry();
+ entries = tmp;
+ }
+
+ /**
+ * Save the result in the getter file.
+ *
+ * @throws IOException if any io pb
+ */
+ protected void saveGetterFile() throws IOException {
+ File getterFile = getGetterFile(out, getOutGetter(), false);
+ result.store(getterFile);
+ }
+
+ /**
+ * Construit une chaine de log formatée.
+ *
+ * @param msg le prefix du message
+ * @param nbFiles le nombre de fichiers actuellement traités
+ * @param time le time de traitement de ce fichier
+ * @param all le temps de traitement de tous les fichiers
+ * @return la chaine de log formatée
+ */
+ public static String getLogEntry(String msg,
+ int nbFiles,
+ long time,
+ long all) {
+ long now = System.nanoTime();
+ long delta = now - time;
+ String s = msg;
+ if (time > 0 && all == 0) {
+ s += " (" + PluginHelper.convertTime(delta) + ")";
+ }
+ if (all > 0) {
+ s += "(total time:" + PluginHelper.convertTime(now - all) + ")";
+ }
+ if (nbFiles > 0) {
+ s += " ( ~ " +
+ PluginHelper.convertTime((now - all) / nbFiles) + " / file)";
+ }
+ return s;
+ }
+}
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,414 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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.parser.impl;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugin.logging.Log;
-import org.nuiton.i18n.plugin.parser.AbstractFileParser;
-import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
-import org.nuiton.i18n.plugin.parser.FileParser;
-import org.nuiton.i18n.plugin.parser.ParserException;
-import org.nuiton.io.SortedProperties;
-import org.w3c.dom.Document;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-import javax.xml.namespace.NamespaceContext;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.xpath.XPath;
-import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpression;
-import javax.xml.xpath.XPathFactory;
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Abstract xml parser mojo.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @author jruchaud <ruchaud(a)codelutin.com>
- * @since 2.0
- */
-public abstract class AbstractParserXmlMojo extends AbstractI18nParserMojo {
-
- /** Taille du buffer pour les lectures/écritures */
- protected static final int BUFFER_SIZE = 8 * 1024;
-
- /** available rules to detect i18n keys in xml files. */
- protected String rules;
-
- /** XPath factory used to detect i18n keys in xml files. */
- protected XPathFactory factory;
-
- /** Document builder factory to load xml files. */
- protected DocumentBuilderFactory documentBuilderFactory;
-
- /**
- * Extra rules files to use for detecting i18n keys in xml validation files.
- * <p/>
- * <b>Note : </b> If the {@code coreRulesFile} is not defined, then you must
- * fill this parameter.
- *
- * @parameter
- * @since 2.0
- */
- protected String[] userRulesFiles;
-
- /**
- * Defines namespaces mapping if needed.
- * <p/>
- * Example :
- * <pre>
- * <namespaces>
- * <s>http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd</s>
- * </namespaces>
- * </pre>
- *
- * @parameter
- * @since 2.0
- */
- protected Map<String, String> namespaces;
-
- protected abstract String getCoreRuleFile();
-
- protected abstract XmlFileParser newXmlFileParser(XPath xpath,
- DocumentBuilder builder);
-
- /**
- * Obtain the list of files which define rules to apply.
- *
- * @return the list of path to rule files to used.
- */
- protected List<String> getRulefiles() {
- List<String> result = new ArrayList<String>();
-
- // load optional core rule file
- String s = getCoreRuleFile();
- if (!StringUtils.isEmpty(s)) {
- result.add(s);
- }
-
- // load user rile files
- String[] userFiles = getUserRuleFiles();
- if (userFiles != null) {
- for (String f : userFiles) {
- if (!StringUtils.isEmpty(f)) {
- result.add(f);
- }
- }
- }
- return result;
- }
-
- @Override
- public void init() throws Exception {
- super.init();
- factory = XPathFactory.newInstance();
-
- List<String> files = getRulefiles();
-
- if (files.isEmpty()) {
-
- // no rules file defined
- throw new MojoFailureException("No rules files defined, fill the coreRulesFile or userRulesFiles parameters");
- }
-
- rules = loadRules(files);
-
- documentBuilderFactory = DocumentBuilderFactory.newInstance();
- documentBuilderFactory.setNamespaceAware(true);
- documentBuilderFactory.setValidating(false);
- documentBuilderFactory.setCoalescing(false);
- documentBuilderFactory.setIgnoringComments(true);
- }
-
- public final String[] getUserRuleFiles() {
- return userRulesFiles;
- }
-
- @Override
- public final FileParser newFileParser() {
-
- DocumentBuilder builder;
- try {
- // never forget this!
- builder = documentBuilderFactory.newDocumentBuilder();
-
- } catch (ParserConfigurationException ex) {
- throw new IllegalStateException(
- "could not load DocumentBuilder for reason " +
- ex.getMessage(), ex);
- }
- XPath xpath = factory.newXPath();
-
- return newXmlFileParser(xpath, builder);
- }
-
- protected String loadRules(List<String> files) {
-
- List<String> rules = new ArrayList<String>();
-
- boolean verbose = !isSilent() && isVerbose();
-
- for (String file : files) {
-
- getLog().info("Load rules file " + file);
-
- try {
- String fileRules = loadRulesFile(file);
- rules.add(fileRules);
-
- if (verbose) {
- getLog().info("Rules for file [" + file + "] : " + fileRules);
- }
-
- } catch (IOException e) {
- throw new ParserException(e);
- }
- }
-
- String result = StringUtils.join(rules, " | ");
- if (verbose) {
- getLog().info("Loaded rules : " + result);
- }
- return result;
- }
-
- protected String loadRulesFile(String fileRules) throws IOException {
- File f = new File(fileRules);
-
- InputStream inputStream;
- if (f.exists()) {
-
- // load from a file
- try {
- inputStream = new FileInputStream(f);
- } catch (FileNotFoundException e) {
- throw new ParserException(e);
- }
- } else {
-
- // load from classpath
- ClassLoader classLoader = getClass().getClassLoader();
- inputStream = classLoader.getResourceAsStream(fileRules);
- }
- if (inputStream == null) {
- throw new ParserException(
- "could not found file of rules : " + fileRules);
- }
-
- inputStream = new BufferedInputStream(inputStream);
-
- try {
- // Lecture
- String readInputStream;
- readInputStream = readInputStream(inputStream);
- return readInputStream;
- } catch (IOException e) {
- throw new ParserException(e);
- } finally {
- inputStream.close();
- }
- }
-
- /**
- * Permet la lecture d'un InputStream et Suppressions.
- *
- * @param in le flux entrant
- * @return le contenu du flux
- * @throws IOException si problème de lecture dans flux entrant
- */
- private String readInputStream(InputStream in) throws IOException {
- StringBuilder sb = new StringBuilder();
- BufferedReader reader = new BufferedReader(
- new InputStreamReader(in, encoding));
-
- try {
- String line;
- while ((line = reader.readLine()) != null) {
- line = line.trim();
- if (line.startsWith("#")) {
-
- // comment line
- continue;
- }
- sb.append(" ").append(line);
- }
- } finally {
- reader.close();
- }
- // Suppression des espaces au début et à la fin
- String txt = sb.toString().trim();
-
- // contruction du xpath avec des ou
- txt = txt.replaceAll("\\s+", " | ");
-
- // suppression des ou de début et de fin
- txt = txt.replaceAll("(^ \\| )|( \\| $)", "");
- return txt;
- }
-
- public static abstract class XmlFileParser extends AbstractFileParser {
-
- private final XPath xpath;
-
- private final String rules;
-
- private final DocumentBuilder builder;
-
- private final Map<String, String> namespaces;
-
- private final Map<String, String> namespaces2;
-
- private final boolean verbose;
-
- /**
- * Fonction d'extraction de la chaine
- *
- * @param i18nString le clef i18n
- * @return la chaine
- */
- public abstract String extract(String i18nString);
-
- public XmlFileParser(Log log,
- String encoding,
- SortedProperties oldParser,
- boolean showTouchedFiles,
- String rules,
- XPath xpath,
- DocumentBuilder builder,
- Map<String, String> namespaces,
- boolean verbose) {
- super(log, encoding, oldParser, showTouchedFiles);
- this.xpath = xpath;
- this.rules = rules;
- this.builder = builder;
- this.verbose = verbose;
-
- if (namespaces != null && !namespaces.isEmpty()) {
- this.namespaces = namespaces;
- namespaces2 = new TreeMap<String, String>();
- for (Map.Entry<String, String> e : namespaces.entrySet()) {
- namespaces2.put(e.getValue(), e.getKey());
- }
- NamespaceContext ctx = new NamespaceContext() {
- public String getNamespaceURI(String prefix) {
- return XmlFileParser.this.namespaces.get(prefix);
- }
-
- @Override
- public String getPrefix(String namespaceURI) {
- return namespaces2.get(namespaceURI);
- }
-
- @Override
- public Iterator<?> getPrefixes(String namespaceURI) {
- return null;
- }
- };
- xpath.setNamespaceContext(ctx);
- } else {
- namespaces2 = null;
- this.namespaces = null;
- }
- }
-
- /**
- * To prepare the file (if any thing to be done before scanning it).
- *
- * @param file the incoming file
- * @return the real file to process
- * @throws IOException if any IO problem while preparing file
- * @since 2.0
- */
- @Override
- public File prepareFile(File file) throws IOException {
-
- // by default, do nothing
- return file;
- }
-
- @Override
- public void parseFile(File file) throws IOException {
-
- File fileToProcess = prepareFile(file);
- if (fileToProcess == null) {
-
- // this case means not to treate the file
- if (verbose) {
- getLog().info("Skip file " + file);
- }
- return;
- }
-
- try {
-
- // Recherche des clés à partir d'un xpath
- if (verbose) {
- getLog().info("Start parsing file " + fileToProcess);
- }
- Document doc = builder.parse(fileToProcess.getAbsolutePath());
- XPathExpression expression = xpath.compile(rules);
- NodeList list = (NodeList)
- expression.evaluate(doc, XPathConstants.NODESET);
- if (verbose) {
- getLog().info("Detected nodes [" + file + "] : " + list.getLength());
- }
- for (int index = 0; index < list.getLength(); index++) {
- Node node = list.item(index);
-
- parseLine(fileToProcess, node.getTextContent());
- }
- } catch (Exception e) {
- throw new ParserException(e);
- }
- }
-
- @Override
- public void parseLine(File file, String key) throws IOException {
-
- key = extract(key);
- if (key != null) {
- setTouched(true);
- registerKey(key);
- }
- }
- }
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,415 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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.parser.impl;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.parser.AbstractFileParser;
+import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
+import org.nuiton.i18n.plugin.parser.FileParser;
+import org.nuiton.i18n.plugin.parser.ParserException;
+import org.nuiton.io.SortedProperties;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathFactory;
+import java.io.BufferedInputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Abstract xml parser mojo.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @author jruchaud <ruchaud(a)codelutin.com>
+ * @since 2.0
+ */
+public abstract class AbstractParserXmlMojo extends AbstractI18nParserMojo {
+
+ /** Taille du buffer pour les lectures/écritures */
+ protected static final int BUFFER_SIZE = 8 * 1024;
+
+ /** available rules to detect i18n keys in xml files. */
+ protected String rules;
+
+ /** XPath factory used to detect i18n keys in xml files. */
+ protected XPathFactory factory;
+
+ /** Document builder factory to load xml files. */
+ protected DocumentBuilderFactory documentBuilderFactory;
+
+ /**
+ * Extra rules files to use for detecting i18n keys in xml validation files.
+ * <p/>
+ * <b>Note : </b> If the {@code coreRulesFile} is not defined, then you must
+ * fill this parameter.
+ *
+ * @since 2.0
+ */
+ @Parameter
+ protected String[] userRulesFiles;
+
+ /**
+ * Defines namespaces mapping if needed.
+ * <p/>
+ * Example :
+ * <pre>
+ * <namespaces>
+ * <s>http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd</s>
+ * </namespaces>
+ * </pre>
+ *
+ * @since 2.0
+ */
+ @Parameter
+ protected Map<String, String> namespaces;
+
+ protected abstract String getCoreRuleFile();
+
+ protected abstract XmlFileParser newXmlFileParser(XPath xpath,
+ DocumentBuilder builder);
+
+ /**
+ * Obtain the list of files which define rules to apply.
+ *
+ * @return the list of path to rule files to used.
+ */
+ protected List<String> getRulefiles() {
+ List<String> result = new ArrayList<String>();
+
+ // load optional core rule file
+ String s = getCoreRuleFile();
+ if (!StringUtils.isEmpty(s)) {
+ result.add(s);
+ }
+
+ // load user rile files
+ String[] userFiles = getUserRuleFiles();
+ if (userFiles != null) {
+ for (String f : userFiles) {
+ if (!StringUtils.isEmpty(f)) {
+ result.add(f);
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public void init() throws Exception {
+ super.init();
+ factory = XPathFactory.newInstance();
+
+ List<String> files = getRulefiles();
+
+ if (files.isEmpty()) {
+
+ // no rules file defined
+ throw new MojoFailureException("No rules files defined, fill the coreRulesFile or userRulesFiles parameters");
+ }
+
+ rules = loadRules(files);
+
+ documentBuilderFactory = DocumentBuilderFactory.newInstance();
+ documentBuilderFactory.setNamespaceAware(true);
+ documentBuilderFactory.setValidating(false);
+ documentBuilderFactory.setCoalescing(false);
+ documentBuilderFactory.setIgnoringComments(true);
+ }
+
+ public final String[] getUserRuleFiles() {
+ return userRulesFiles;
+ }
+
+ @Override
+ public final FileParser newFileParser() {
+
+ DocumentBuilder builder;
+ try {
+ // never forget this!
+ builder = documentBuilderFactory.newDocumentBuilder();
+
+ } catch (ParserConfigurationException ex) {
+ throw new IllegalStateException(
+ "could not load DocumentBuilder for reason " +
+ ex.getMessage(), ex);
+ }
+ XPath xpath = factory.newXPath();
+
+ return newXmlFileParser(xpath, builder);
+ }
+
+ protected String loadRules(List<String> files) {
+
+ List<String> rules = new ArrayList<String>();
+
+ boolean verbose = !isSilent() && isVerbose();
+
+ for (String file : files) {
+
+ getLog().info("Load rules file " + file);
+
+ try {
+ String fileRules = loadRulesFile(file);
+ rules.add(fileRules);
+
+ if (verbose) {
+ getLog().info("Rules for file [" + file + "] : " + fileRules);
+ }
+
+ } catch (IOException e) {
+ throw new ParserException(e);
+ }
+ }
+
+ String result = StringUtils.join(rules, " | ");
+ if (verbose) {
+ getLog().info("Loaded rules : " + result);
+ }
+ return result;
+ }
+
+ protected String loadRulesFile(String fileRules) throws IOException {
+ File f = new File(fileRules);
+
+ InputStream inputStream;
+ if (f.exists()) {
+
+ // load from a file
+ try {
+ inputStream = new FileInputStream(f);
+ } catch (FileNotFoundException e) {
+ throw new ParserException(e);
+ }
+ } else {
+
+ // load from classpath
+ ClassLoader classLoader = getClass().getClassLoader();
+ inputStream = classLoader.getResourceAsStream(fileRules);
+ }
+ if (inputStream == null) {
+ throw new ParserException(
+ "could not found file of rules : " + fileRules);
+ }
+
+ inputStream = new BufferedInputStream(inputStream);
+
+ try {
+ // Lecture
+ String readInputStream;
+ readInputStream = readInputStream(inputStream);
+ return readInputStream;
+ } catch (IOException e) {
+ throw new ParserException(e);
+ } finally {
+ inputStream.close();
+ }
+ }
+
+ /**
+ * Permet la lecture d'un InputStream et Suppressions.
+ *
+ * @param in le flux entrant
+ * @return le contenu du flux
+ * @throws IOException si problème de lecture dans flux entrant
+ */
+ private String readInputStream(InputStream in) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ BufferedReader reader = new BufferedReader(
+ new InputStreamReader(in, encoding));
+
+ try {
+ String line;
+ while ((line = reader.readLine()) != null) {
+ line = line.trim();
+ if (line.startsWith("#")) {
+
+ // comment line
+ continue;
+ }
+ sb.append(" ").append(line);
+ }
+ } finally {
+ reader.close();
+ }
+ // Suppression des espaces au début et à la fin
+ String txt = sb.toString().trim();
+
+ // contruction du xpath avec des ou
+ txt = txt.replaceAll("\\s+", " | ");
+
+ // suppression des ou de début et de fin
+ txt = txt.replaceAll("(^ \\| )|( \\| $)", "");
+ return txt;
+ }
+
+ public static abstract class XmlFileParser extends AbstractFileParser {
+
+ private final XPath xpath;
+
+ private final String rules;
+
+ private final DocumentBuilder builder;
+
+ private final Map<String, String> namespaces;
+
+ private final Map<String, String> namespaces2;
+
+ private final boolean verbose;
+
+ /**
+ * Fonction d'extraction de la chaine
+ *
+ * @param i18nString le clef i18n
+ * @return la chaine
+ */
+ public abstract String extract(String i18nString);
+
+ public XmlFileParser(Log log,
+ String encoding,
+ SortedProperties oldParser,
+ boolean showTouchedFiles,
+ String rules,
+ XPath xpath,
+ DocumentBuilder builder,
+ Map<String, String> namespaces,
+ boolean verbose) {
+ super(log, encoding, oldParser, showTouchedFiles);
+ this.xpath = xpath;
+ this.rules = rules;
+ this.builder = builder;
+ this.verbose = verbose;
+
+ if (namespaces != null && !namespaces.isEmpty()) {
+ this.namespaces = namespaces;
+ namespaces2 = new TreeMap<String, String>();
+ for (Map.Entry<String, String> e : namespaces.entrySet()) {
+ namespaces2.put(e.getValue(), e.getKey());
+ }
+ NamespaceContext ctx = new NamespaceContext() {
+ public String getNamespaceURI(String prefix) {
+ return XmlFileParser.this.namespaces.get(prefix);
+ }
+
+ @Override
+ public String getPrefix(String namespaceURI) {
+ return namespaces2.get(namespaceURI);
+ }
+
+ @Override
+ public Iterator<?> getPrefixes(String namespaceURI) {
+ return null;
+ }
+ };
+ xpath.setNamespaceContext(ctx);
+ } else {
+ namespaces2 = null;
+ this.namespaces = null;
+ }
+ }
+
+ /**
+ * To prepare the file (if any thing to be done before scanning it).
+ *
+ * @param file the incoming file
+ * @return the real file to process
+ * @throws IOException if any IO problem while preparing file
+ * @since 2.0
+ */
+ @Override
+ public File prepareFile(File file) throws IOException {
+
+ // by default, do nothing
+ return file;
+ }
+
+ @Override
+ public void parseFile(File file) throws IOException {
+
+ File fileToProcess = prepareFile(file);
+ if (fileToProcess == null) {
+
+ // this case means not to treate the file
+ if (verbose) {
+ getLog().info("Skip file " + file);
+ }
+ return;
+ }
+
+ try {
+
+ // Recherche des clés à partir d'un xpath
+ if (verbose) {
+ getLog().info("Start parsing file " + fileToProcess);
+ }
+ Document doc = builder.parse(fileToProcess.getAbsolutePath());
+ XPathExpression expression = xpath.compile(rules);
+ NodeList list = (NodeList)
+ expression.evaluate(doc, XPathConstants.NODESET);
+ if (verbose) {
+ getLog().info("Detected nodes [" + file + "] : " + list.getLength());
+ }
+ for (int index = 0; index < list.getLength(); index++) {
+ Node node = list.item(index);
+
+ parseLine(fileToProcess, node.getTextContent());
+ }
+ } catch (Exception e) {
+ throw new ParserException(e);
+ }
+ }
+
+ @Override
+ public void parseLine(File file, String key) throws IOException {
+
+ key = extract(key);
+ if (key != null) {
+ setTouched(true);
+ registerKey(key);
+ }
+ }
+ }
+}
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,276 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 CodeLutin, Tony Chemit
- * %%
- * 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.parser.impl;
-
-import org.apache.maven.plugin.logging.Log;
-import org.nuiton.i18n.plugin.parser.AbstractFileParser;
-import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
-import org.nuiton.i18n.plugin.parser.FileParser;
-import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
-import org.nuiton.i18n.plugin.parser.ParserException;
-import org.nuiton.i18n.plugin.parser.SourceEntry;
-import org.nuiton.io.FileUpdater;
-import org.nuiton.io.MirroredFileUpdater;
-import org.nuiton.io.SortedProperties;
-import org.nuiton.processor.ProcessorUtil;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * To detect from GWT java files new I18n keys, says content of patterns :
- * <ul>
- * <li>{@code @Key("XXX")}</li>
- * <li>{@code @LocalizableResource.Key("XXX")}</li>
- * <li>{@code @com.google.gwt.i18n.client.LocalizableResource.Key("XXX")}</li>
- * </ul>
- * <b>Note: </b> this goal must always be invoked before the {@code process-resources}
- * phase, otherwise all files will be considered as uptodate.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @goal parserGWTJava
- * @phase generate-resources
- * @since 2.1
- */
-public class ParserGWTJavaMojo extends AbstractI18nParserMojo {
-
- /**
- * Root directory of the default entry.
- *
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/java"
- */
- protected File defaultBasedir;
-
- /**
- * Default included files to process (ant-like expression).
- *
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/*.java"
- */
- protected String defaultIncludes;
-
- /**
- * Defines the file name of the getter where to put detected i18n keys
- * while getter phase.
- *
- * @parameter expression="${i18n.outputGetter}" default-value="gwt-java.getter"
- * @since 2.0
- */
- protected String outputGetter;
-
- /**
- * Where to generated temporary processed files.
- *
- * @parameter expression="${i18n.workdir}" default-value="${basedir}/target/i18n-workdir"
- * @since 2.0
- */
- protected File workdir;
-
- protected MirroredFileUpdater entryUpdater;
-
- @Override
- public String[] getDefaultIncludes() {
- return new String[]{defaultIncludes};
- }
-
- @Override
- public String[] getDefaultExcludes() {
- return I18nSourceEntry.EMPTY_STRING_ARRAY;
- }
-
- @Override
- public File getDefaultBasedir() {
- return defaultBasedir;
- }
-
- @Override
- protected boolean onEnterEntry(I18nSourceEntry entry) {
- boolean b = super.onEnterEntry(entry);
- if (!b) {
-
- // no skipped entry
- // keep the file updater
- entryUpdater = (MirroredFileUpdater) entry.getUpdater();
- }
- return b;
- }
-
- @Override
- public FileUpdater newFileUpdater(SourceEntry entry) {
- return new MirroredFileUpdater("", "", entry.getBasedir(), workdir) {
-
- @Override
- public File getMirrorFile(File f) {
- String file =
- f.getAbsolutePath().substring(prefixSourceDirecotory);
- return new File(destinationDirectory + File.separator + file);
- }
- };
- }
-
- @Override
- protected String getOutGetter() {
- return outputGetter;
- }
-
- @Override
- public FileParser newFileParser() {
-
- return new GWTJavaFileParser(getLog(),
- encoding,
- oldParser,
- isShowTouchedFiles()
- );
- }
-
- protected class GWTJavaFileParser extends AbstractFileParser {
-
-
- public GWTJavaFileParser(Log log,
- String encoding,
- SortedProperties oldParser,
- boolean showTouchedFiles) {
- super(log, encoding, oldParser, showTouchedFiles);
- }
-
-
- protected File prepareFile(File file) throws IOException {
-
- // clean the jsp to make it xml
-
- File result = entryUpdater.getMirrorFile(file);
- if (isVerbose()) {
- getLog().info("Will process [" + file + "] to " + result);
- }
- try {
- createDirectoryIfNecessary(result.getParentFile());
- } catch (IOException e) {
- // don't care about it...
- }
- GWTJavaProcessor processor = new GWTJavaProcessor();
- processor.setVerbose(isVerbose());
- processor.process(file, result, getEncoding());
- return result;
- }
-
- @Override
- public void parseFile(File file) throws IOException {
-
- // clean the jsp to make it xml
-
- File processedFile = prepareFile(file);
-
- // process file to obtain
- String line = null;
- LineNumberReader lnr = new LineNumberReader(new InputStreamReader(
- new FileInputStream(processedFile), getEncoding()));
- try {
- while ((line = lnr.readLine()) != null) {
- parseLine(processedFile, line);
- }
- } catch (Exception e) {
- if (line != null) {
- getLog().error(
- "could not parse line (" + lnr.getLineNumber() + ") '"
- + line + "' of file " + file);
- }
- throw new ParserException(e);
- } finally {
- lnr.close();
- }
- }
-
- @Override
- public void parseLine(File file, String line) throws IOException {
-
- String key = line.trim();
-
- if (key.isEmpty()) {
- // no key detected on this line
- return;
- }
-
- // one key found in file, so file is marked as touched
- setTouched(true);
- // Found a i18n key, register it.
- if (getLog().isDebugEnabled()) {
- getLog().debug(file.getName() + " detected key = " + key);
- }
- registerKey(key);
- }
- }
-
- /**
- * To Extract i18n keys from GWT java files.
- * <p/>
- * Says keep content only of those patterns :
- * <ul>
- * <li>{@code @Key("XXX")}</li>
- * <li>{@code @LocalizableResource.Key("XXX")}</li>
- * <li>{@code @com.google.gwt.i18n.client.LocalizableResource.Key("XXX")}</li>
- * </ul>
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.1
- */
- public static class GWTJavaProcessor extends ProcessorHelper.AbstractParserProcessor {
-
- protected ProcessorUtil.FragmentExtractor filter1 =
- new ProcessorUtil.FragmentExtractor(
- "@Key(\"",
- "\")"
- );
-
- protected ProcessorUtil.FragmentExtractor filter2 =
- new ProcessorUtil.FragmentExtractor(
- "@LocalizableResource.Key(\"",
- "\")"
- );
-
- protected ProcessorUtil.FragmentExtractor filter3 =
- new ProcessorUtil.FragmentExtractor(
- "@com.google.gwt.i18n.client.LocalizableResource.Key(\"",
- "\")"
- );
-
-
- @Override
- public void process(File filein,
- File fileout,
- String encoding) throws IOException {
-
- Set<String> keys = new HashSet<String>();
- extractKeys(filter1, filein, encoding, verbose, keys);
- extractKeys(filter2, filein, encoding, verbose, keys);
- extractKeys(filter3, filein, encoding, verbose, keys);
- saveKeysToFile(fileout, keys);
- }
-
- }
-}
\ No newline at end of file
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java (from rev 1960, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,278 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 CodeLutin, Tony Chemit
+ * %%
+ * 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.parser.impl;
+
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.parser.AbstractFileParser;
+import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
+import org.nuiton.i18n.plugin.parser.FileParser;
+import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
+import org.nuiton.i18n.plugin.parser.ParserException;
+import org.nuiton.i18n.plugin.parser.SourceEntry;
+import org.nuiton.io.FileUpdater;
+import org.nuiton.io.MirroredFileUpdater;
+import org.nuiton.io.SortedProperties;
+import org.nuiton.processor.ProcessorUtil;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * To detect from GWT java files new I18n keys, says content of patterns :
+ * <ul>
+ * <li>{@code @Key("XXX")}</li>
+ * <li>{@code @LocalizableResource.Key("XXX")}</li>
+ * <li>{@code @com.google.gwt.i18n.client.LocalizableResource.Key("XXX")}</li>
+ * </ul>
+ * <b>Note: </b> this goal must always be invoked before the {@code process-resources}
+ * phase, otherwise all files will be considered as uptodate.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+@Mojo(name = "parserGWTJava", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+public class ParserGWTJavaMojo extends AbstractI18nParserMojo {
+
+ public static final String DEFAULT_INCLUDES = "**/*.java";
+
+ /** Root directory of the default entry. */
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/java")
+ protected File defaultBasedir;
+
+ /**
+ * Default included files to process (ant-like expression).
+ * <p/>
+ * <strong>Note:</strong> default value is **\/*.java
+ */
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
+
+ /**
+ * Defines the file name of the getter where to put detected i18n keys
+ * while getter phase.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.outputGetter", defaultValue = "gwt-java.getter")
+ protected String outputGetter;
+
+ /**
+ * Where to generated temporary processed files.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.workdir", defaultValue = "${basedir}/target/i18n-workdir")
+ protected File workdir;
+
+ protected MirroredFileUpdater entryUpdater;
+
+ @Override
+ public String[] getDefaultIncludes() {
+ return new String[]{defaultIncludes};
+ }
+
+ @Override
+ public String[] getDefaultExcludes() {
+ return I18nSourceEntry.EMPTY_STRING_ARRAY;
+ }
+
+ @Override
+ public File getDefaultBasedir() {
+ return defaultBasedir;
+ }
+
+ @Override
+ protected boolean onEnterEntry(I18nSourceEntry entry) {
+ boolean b = super.onEnterEntry(entry);
+ if (!b) {
+
+ // no skipped entry
+ // keep the file updater
+ entryUpdater = (MirroredFileUpdater) entry.getUpdater();
+ }
+ return b;
+ }
+
+ @Override
+ public FileUpdater newFileUpdater(SourceEntry entry) {
+ return new MirroredFileUpdater("", "", entry.getBasedir(), workdir) {
+
+ @Override
+ public File getMirrorFile(File f) {
+ String file =
+ f.getAbsolutePath().substring(prefixSourceDirecotory);
+ return new File(destinationDirectory + File.separator + file);
+ }
+ };
+ }
+
+ @Override
+ protected String getOutGetter() {
+ return outputGetter;
+ }
+
+ @Override
+ public FileParser newFileParser() {
+
+ return new GWTJavaFileParser(getLog(),
+ encoding,
+ oldParser,
+ isShowTouchedFiles()
+ );
+ }
+
+ protected class GWTJavaFileParser extends AbstractFileParser {
+
+
+ public GWTJavaFileParser(Log log,
+ String encoding,
+ SortedProperties oldParser,
+ boolean showTouchedFiles) {
+ super(log, encoding, oldParser, showTouchedFiles);
+ }
+
+
+ protected File prepareFile(File file) throws IOException {
+
+ // clean the jsp to make it xml
+
+ File result = entryUpdater.getMirrorFile(file);
+ if (isVerbose()) {
+ getLog().info("Will process [" + file + "] to " + result);
+ }
+ try {
+ createDirectoryIfNecessary(result.getParentFile());
+ } catch (IOException e) {
+ // don't care about it...
+ }
+ GWTJavaProcessor processor = new GWTJavaProcessor();
+ processor.setVerbose(isVerbose());
+ processor.process(file, result, getEncoding());
+ return result;
+ }
+
+ @Override
+ public void parseFile(File file) throws IOException {
+
+ // clean the jsp to make it xml
+
+ File processedFile = prepareFile(file);
+
+ // process file to obtain
+ String line = null;
+ LineNumberReader lnr = new LineNumberReader(new InputStreamReader(
+ new FileInputStream(processedFile), getEncoding()));
+ try {
+ while ((line = lnr.readLine()) != null) {
+ parseLine(processedFile, line);
+ }
+ } catch (Exception e) {
+ if (line != null) {
+ getLog().error(
+ "could not parse line (" + lnr.getLineNumber() + ") '"
+ + line + "' of file " + file);
+ }
+ throw new ParserException(e);
+ } finally {
+ lnr.close();
+ }
+ }
+
+ @Override
+ public void parseLine(File file, String line) throws IOException {
+
+ String key = line.trim();
+
+ if (key.isEmpty()) {
+ // no key detected on this line
+ return;
+ }
+
+ // one key found in file, so file is marked as touched
+ setTouched(true);
+ // Found a i18n key, register it.
+ if (getLog().isDebugEnabled()) {
+ getLog().debug(file.getName() + " detected key = " + key);
+ }
+ registerKey(key);
+ }
+ }
+
+ /**
+ * To Extract i18n keys from GWT java files.
+ * <p/>
+ * Says keep content only of those patterns :
+ * <ul>
+ * <li>{@code @Key("XXX")}</li>
+ * <li>{@code @LocalizableResource.Key("XXX")}</li>
+ * <li>{@code @com.google.gwt.i18n.client.LocalizableResource.Key("XXX")}</li>
+ * </ul>
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+ public static class GWTJavaProcessor extends ProcessorHelper.AbstractParserProcessor {
+
+ protected ProcessorUtil.FragmentExtractor filter1 =
+ new ProcessorUtil.FragmentExtractor(
+ "@Key(\"",
+ "\")"
+ );
+
+ protected ProcessorUtil.FragmentExtractor filter2 =
+ new ProcessorUtil.FragmentExtractor(
+ "@LocalizableResource.Key(\"",
+ "\")"
+ );
+
+ protected ProcessorUtil.FragmentExtractor filter3 =
+ new ProcessorUtil.FragmentExtractor(
+ "@com.google.gwt.i18n.client.LocalizableResource.Key(\"",
+ "\")"
+ );
+
+
+ @Override
+ public void process(File filein,
+ File fileout,
+ String encoding) throws IOException {
+
+ Set<String> keys = new HashSet<String>();
+ extractKeys(filter1, filein, encoding, verbose, keys);
+ extractKeys(filter2, filein, encoding, verbose, keys);
+ extractKeys(filter3, filein, encoding, verbose, keys);
+ saveKeysToFile(fileout, keys);
+ }
+
+ }
+}
\ No newline at end of file
Deleted: trunk/i18n-maven-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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,180 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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.parser.impl;
-
-import org.apache.maven.plugin.logging.Log;
-import org.nuiton.i18n.plugin.parser.AbstractFileParser;
-import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
-import org.nuiton.i18n.plugin.parser.FileParser;
-import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
-import org.nuiton.i18n.plugin.parser.ParserException;
-import org.nuiton.i18n.plugin.parser.SourceEntry;
-import org.nuiton.io.FileUpdater;
-import org.nuiton.io.FileUpdaterHelper;
-import org.nuiton.io.SortedProperties;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * To parse java files to detect new i18n keys.
- * <p/>
- * <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(a)codelutin.com>
- * @author tchemit <tchemit(a)codelutin.com>
- * @goal parserJava
- * @phase generate-resources
- */
-public class ParserJavaMojo extends AbstractI18nParserMojo {
-
- /**
- * Root directory of the default entry.
- *
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/java"
- */
- protected File defaultBasedir;
-
- /**
- * Default included files to process (ant-like expression).
- *
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/*.java"
- */
- protected String defaultIncludes;
-
- /**
- * Defines the file name of the getter where to put detected i18n keys
- * while getter phase.
- *
- * @parameter expression="${i18n.outputGetter}" default-value="java.getter"
- * @since 2.0
- */
- protected String outputGetter;
-
- @Override
- public String[] getDefaultIncludes() {
- return new String[]{defaultIncludes};
- }
-
- @Override
- public String[] getDefaultExcludes() {
- return I18nSourceEntry.EMPTY_STRING_ARRAY;
- }
-
- @Override
- public File getDefaultBasedir() {
- return defaultBasedir;
- }
-
- @Override
- public FileUpdater newFileUpdater(SourceEntry entry) {
- return FileUpdaterHelper.newJavaFileUpdater(entry.getBasedir(), cp);
- }
-
- @Override
- protected String getOutGetter() {
- return outputGetter;
- }
-
- @Override
- public FileParser newFileParser() {
-
- return new JavaFileParser(getLog(),
- encoding,
- oldParser,
- isShowTouchedFiles()
- );
- }
-
- protected static class JavaFileParser extends AbstractFileParser {
-
- /**
- * Pattern used to detect i18n keys.
- *
- * @since 2.3
- */
- protected final Pattern i18nPattern =
- Pattern.compile("(?:^_\\(\\s*\\\"|[^l]_\\(\\s*\\\"|l_\\([^,]+\\s*,\\s*\\\")(.*?)\"");
-
- public JavaFileParser(Log log,
- String encoding,
- SortedProperties oldParser,
- boolean showTouchedFiles) {
- super(log, encoding, oldParser, showTouchedFiles);
- }
-
- public Pattern getI18nPattern() {
- return i18nPattern;
- }
-
- @Override
- public void parseFile(File file) throws IOException {
- String line = null;
- LineNumberReader lnr = new LineNumberReader(new InputStreamReader(
- new FileInputStream(file), getEncoding()));
- try {
- while ((line = lnr.readLine()) != null) {
- parseLine(file, line);
- }
- } catch (Exception e) {
- if (line != null) {
- getLog().error(
- "could not parse line (" + lnr.getLineNumber() + ") '"
- + line + "' of file " + file);
- }
- throw new ParserException(e);
- } finally {
- lnr.close();
- }
- }
-
- @Override
- public void parseLine(File file, String line) throws IOException {
-
- Matcher matcher = i18nPattern.matcher(line);
-
- while (matcher.find()) {
-
- String key = matcher.group(1);
- if (getLog().isDebugEnabled()) {
- getLog().debug(file.getName() + " detected key = " + key);
- }
- // one key found in file, so file is marked as touched
- setTouched(true);
-
- // register key
- registerKey(key);
- }
- }
- }
-
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java (from rev 1960, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,182 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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.parser.impl;
+
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.parser.AbstractFileParser;
+import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
+import org.nuiton.i18n.plugin.parser.FileParser;
+import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
+import org.nuiton.i18n.plugin.parser.ParserException;
+import org.nuiton.i18n.plugin.parser.SourceEntry;
+import org.nuiton.io.FileUpdater;
+import org.nuiton.io.FileUpdaterHelper;
+import org.nuiton.io.SortedProperties;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * To parse java files to detect new i18n keys.
+ * <p/>
+ * <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(a)codelutin.com>
+ * @author tchemit <tchemit(a)codelutin.com>
+ */
+@Mojo(name = "parserJava", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+public class ParserJavaMojo extends AbstractI18nParserMojo {
+
+ public static final String DEFAULT_INCLUDES = "**/*.java";
+
+ /** Root directory of the default entry. */
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/java")
+ protected File defaultBasedir;
+
+ /**
+ * Default included files to process (ant-like expression).
+ * <p/>
+ * <strong>Note:</strong> default value is **\/*.java
+ */
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
+
+ /**
+ * Defines the file name of the getter where to put detected i18n keys
+ * while getter phase.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.outputGetter", defaultValue = "java.getter")
+ protected String outputGetter;
+
+ @Override
+ public String[] getDefaultIncludes() {
+ return new String[]{defaultIncludes};
+ }
+
+ @Override
+ public String[] getDefaultExcludes() {
+ return I18nSourceEntry.EMPTY_STRING_ARRAY;
+ }
+
+ @Override
+ public File getDefaultBasedir() {
+ return defaultBasedir;
+ }
+
+ @Override
+ public FileUpdater newFileUpdater(SourceEntry entry) {
+ return FileUpdaterHelper.newJavaFileUpdater(entry.getBasedir(), cp);
+ }
+
+ @Override
+ protected String getOutGetter() {
+ return outputGetter;
+ }
+
+ @Override
+ public FileParser newFileParser() {
+
+ return new JavaFileParser(getLog(),
+ encoding,
+ oldParser,
+ isShowTouchedFiles()
+ );
+ }
+
+ protected static class JavaFileParser extends AbstractFileParser {
+
+ /**
+ * Pattern used to detect i18n keys.
+ *
+ * @since 2.3
+ */
+ protected final Pattern i18nPattern =
+ Pattern.compile("(?:^_\\(\\s*\\\"|[^l]_\\(\\s*\\\"|l_\\([^,]+\\s*,\\s*\\\")(.*?)\"");
+
+ public JavaFileParser(Log log,
+ String encoding,
+ SortedProperties oldParser,
+ boolean showTouchedFiles) {
+ super(log, encoding, oldParser, showTouchedFiles);
+ }
+
+ public Pattern getI18nPattern() {
+ return i18nPattern;
+ }
+
+ @Override
+ public void parseFile(File file) throws IOException {
+ String line = null;
+ LineNumberReader lnr = new LineNumberReader(new InputStreamReader(
+ new FileInputStream(file), getEncoding()));
+ try {
+ while ((line = lnr.readLine()) != null) {
+ parseLine(file, line);
+ }
+ } catch (Exception e) {
+ if (line != null) {
+ getLog().error(
+ "could not parse line (" + lnr.getLineNumber() + ") '"
+ + line + "' of file " + file);
+ }
+ throw new ParserException(e);
+ } finally {
+ lnr.close();
+ }
+ }
+
+ @Override
+ public void parseLine(File file, String line) throws IOException {
+
+ Matcher matcher = i18nPattern.matcher(line);
+
+ while (matcher.find()) {
+
+ String key = matcher.group(1);
+ if (getLog().isDebugEnabled()) {
+ getLog().debug(file.getName() + " detected key = " + key);
+ }
+ // one key found in file, so file is marked as touched
+ setTouched(true);
+
+ // register key
+ registerKey(key);
+ }
+ }
+ }
+
+}
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,308 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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.parser.impl;
-
-import org.apache.commons.lang.StringUtils;
-import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
-import org.nuiton.i18n.plugin.parser.SourceEntry;
-import org.nuiton.io.FileUpdater;
-import org.nuiton.io.MirroredFileUpdater;
-import org.nuiton.plugin.PluginHelper;
-import org.nuiton.processor.ProcessorUtil;
-import org.nuiton.processor.filters.DefaultFilter;
-import org.nuiton.processor.filters.Filter;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.xpath.XPath;
-import java.io.File;
-import java.io.IOException;
-
-/**
- * Find i18n keys from jsp 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.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @goal parserJsp
- * @phase generate-resources
- * @since 2.0
- */
-public class ParserJspMojo extends AbstractParserXmlMojo {
-
- /**
- * Root directory of the default entry.
- *
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/webapp"
- * @required
- */
- protected File defaultBasedir;
-
- /**
- * Default included files to process (ant-like expression).
- *
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/**.jsp"
- */
- protected String defaultIncludes;
-
- /**
- * Defines the core rules file used to detect i18n keys in jsp files.
- * <p/>
- * <b>Note :</b> If you do not want to use it, set it to empty and fill the
- * {@link #userRulesFiles} parameter.
- *
- * @parameter expression="${i18n.coreRuleFile}"
- * @since 2.0
- */
- protected String coreRuleFile;
-
- /**
- * Defines the file name of the getter where to put detected i18n keys
- * while getter phase.
- *
- * @parameter expression="${i18n.outputGetter}" default-value="jsp.getter"
- * @since 2.0
- */
- protected String outputGetter;
-
- /**
- * Where to generated temporary processed files.
- *
- * @parameter expression="${i18n.workdir}" default-value="${basedir}/target/i18n-workdir"
- * @since 2.0
- */
- protected File workdir;
-
- @Override
- public String[] getDefaultIncludes() {
- return new String[]{defaultIncludes};
- }
-
- @Override
- public String[] getDefaultExcludes() {
- return I18nSourceEntry.EMPTY_STRING_ARRAY;
- }
-
- @Override
- public File getDefaultBasedir() {
- return defaultBasedir;
- }
-
- MirroredFileUpdater entryUpdater;
-
- @Override
- protected boolean onEnterEntry(I18nSourceEntry entry) {
- boolean b = super.onEnterEntry(entry);
- if (!b) {
-
- // no skipped entry
- // keep the file updater
- entryUpdater = (MirroredFileUpdater) entry.getUpdater();
- }
- return b;
- }
-
- @Override
- public FileUpdater newFileUpdater(SourceEntry entry) {
- return new MirroredFileUpdater("", "", entry.getBasedir(), workdir) {
-
- @Override
- public File getMirrorFile(File f) {
- String file =
- f.getAbsolutePath().substring(prefixSourceDirecotory);
- return new File(destinationDirectory + File.separator + file + "~");
- }
- };
- }
-
- @Override
- protected String getOutGetter() {
- return outputGetter;
- }
-
- @Override
- protected String getCoreRuleFile() {
- return coreRuleFile;
- }
-
- protected XmlFileParser newXmlFileParser(final XPath xpath,
- final DocumentBuilder builder) {
-
- return new XmlFileParser(getLog(),
- encoding,
- oldParser,
- showTouchedFiles,
- rules,
- xpath,
- builder,
- namespaces,
- isVerbose()) {
-
- @Override
- public File prepareFile(File file) throws IOException {
-
- // clean the jsp to make it xml
-
- File result = entryUpdater.getMirrorFile(file);
- createDirectoryIfNecessary(result.getParentFile());
- JspFileProcessor processor = new JspFileProcessor();
- processor.process(file, result, getEncoding());
- String resultFileContent =
- PluginHelper.readAsString(result, getEncoding());
- resultFileContent = resultFileContent.trim();
-
- if (StringUtils.isBlank(resultFileContent)) {
-
- // nothing to scan inside this file
- result = null;
- } else {
-
- if (resultFileContent.startsWith("<html") ||
- resultFileContent.startsWith("<HTML") ||
- resultFileContent.startsWith("<?xml")
- ) {
-
- // document should be well-formed...
-
- } else {
- // to be sure, document is well formed, add a start and end tag
- resultFileContent = "<div>\n" + resultFileContent + "\n</div>";
-
- PluginHelper.writeString(result, resultFileContent, getEncoding());
- }
-
- }
-
- return result;
- }
-
- @Override
- public String extract(String i18nString) {
- String s = null;
- if (!StringUtils.isEmpty(i18nString.trim())) {
- s = i18nString.trim();
- }
- if (getLog().isDebugEnabled()) {
- getLog().debug(i18nString + " = " + s);
- }
- return s;
- }
-
- };
- }
-
- /**
- * To transform jsp files to valid xml files.
- * <p/>
- * Says :
- * <ul>
- * <li>Remove jsp directive</li>
- * <li>Remove jsp comment</li>
- * <li>Remove any tags in attributes (used for example in struts)</li>
- * <li>? Other thing</li>
- * </ul>
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.0
- */
- public static class JspFileProcessor extends ProcessorHelper.AbstractParserProcessor {
-
- protected ProcessorHelper.FragmentRemover remover1 =
- new ProcessorHelper.FragmentRemover(
- "<" + "%" + "-" + "-",
- "-" + "-" + "%" + ">"
- );
-
- protected ProcessorHelper.FragmentRemover remover2 =
- new ProcessorHelper.FragmentRemover(
- "<" + "%",
- "%" + ">"
- );
-
- protected ProcessorHelper.FragmentRemover remover3 =
- new ProcessorHelper.FragmentRemover(
- "<" + "!" + "-" + "-",
- "-" + "-" + ">"
- );
-
- public JspFileProcessor() {
- setInputFilter(
- new Filter[]{
- remover1,
- remover2,
- remover3,
- new JspAttributeWithTagFilter()
- }
- );
- }
-
- /**
- * @param filein the source file to process
- * @param fileout the output file to generate
- * @param encoding encoding used to read and write files
- * @throws IOException if any io problems while processing
- * @since 1.0.4
- */
- @Override
- public void process(File filein,
- File fileout,
- String encoding) throws IOException {
- ProcessorUtil.doProcess(this, filein, fileout, encoding);
- }
-
- /**
- * To remove in attributes any sub tags inside it (used for example in
- * struts) from jsp files.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.0
- */
- public static class JspAttributeWithTagFilter extends DefaultFilter {
-
- private String header = "=" + "\"" + "<";
-
- private String footer = "\"" + "/" + ">" + "\"";
-
- @Override
- protected String performInFilter(String ch) {
- return "=\"\"";
- }
-
- @Override
- protected String performOutFilter(String ch) {
- return ch;
- }
-
- protected String getHeader() {
- return header;
- }
-
- protected String getFooter() {
- return footer;
- }
- }
- }
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java (from rev 1960, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,315 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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.parser.impl;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
+import org.nuiton.i18n.plugin.parser.SourceEntry;
+import org.nuiton.io.FileUpdater;
+import org.nuiton.io.MirroredFileUpdater;
+import org.nuiton.plugin.PluginHelper;
+import org.nuiton.processor.ProcessorUtil;
+import org.nuiton.processor.filters.DefaultFilter;
+import org.nuiton.processor.filters.Filter;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.xpath.XPath;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Find i18n keys from jsp 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.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0
+ */
+@Mojo(name = "parserJsp", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+public class ParserJspMojo extends AbstractParserXmlMojo {
+
+ public static final String DEFAULT_INCLUDES = "**/*.jsp";
+
+ /**
+ * Root directory of the default entry.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/webapp", required = true)
+ protected File defaultBasedir;
+
+ /**
+ * Default included files to process (ant-like expression).
+ * <p/>
+ * <strong>Note:</strong> default value is **\/*.jsp
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
+
+ /**
+ * Defines the core rules file used to detect i18n keys in jsp files.
+ * <p/>
+ * <b>Note :</b> If you do not want to use it, set it to empty and fill the
+ * {@link #userRulesFiles} parameter.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.coreRuleFile")
+ protected String coreRuleFile;
+
+ /**
+ * Defines the file name of the getter where to put detected i18n keys
+ * while getter phase.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.outputGetter", defaultValue = "jsp.getter", required = true)
+ protected String outputGetter;
+
+ /**
+ * Where to generated temporary processed files.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.workdir", defaultValue = "${basedir}/target/i18n-workdir", required = true)
+ protected File workdir;
+
+ @Override
+ public String[] getDefaultIncludes() {
+ return new String[]{defaultIncludes};
+ }
+
+ @Override
+ public String[] getDefaultExcludes() {
+ return I18nSourceEntry.EMPTY_STRING_ARRAY;
+ }
+
+ @Override
+ public File getDefaultBasedir() {
+ return defaultBasedir;
+ }
+
+ MirroredFileUpdater entryUpdater;
+
+ @Override
+ protected boolean onEnterEntry(I18nSourceEntry entry) {
+ boolean b = super.onEnterEntry(entry);
+ if (!b) {
+
+ // no skipped entry
+ // keep the file updater
+ entryUpdater = (MirroredFileUpdater) entry.getUpdater();
+ }
+ return b;
+ }
+
+ @Override
+ public FileUpdater newFileUpdater(SourceEntry entry) {
+ return new MirroredFileUpdater("", "", entry.getBasedir(), workdir) {
+
+ @Override
+ public File getMirrorFile(File f) {
+ String file =
+ f.getAbsolutePath().substring(prefixSourceDirecotory);
+ return new File(destinationDirectory + File.separator + file + "~");
+ }
+ };
+ }
+
+ @Override
+ protected String getOutGetter() {
+ return outputGetter;
+ }
+
+ @Override
+ protected String getCoreRuleFile() {
+ return coreRuleFile;
+ }
+
+ protected XmlFileParser newXmlFileParser(final XPath xpath,
+ final DocumentBuilder builder) {
+
+ return new XmlFileParser(getLog(),
+ encoding,
+ oldParser,
+ showTouchedFiles,
+ rules,
+ xpath,
+ builder,
+ namespaces,
+ isVerbose()) {
+
+ @Override
+ public File prepareFile(File file) throws IOException {
+
+ // clean the jsp to make it xml
+
+ File result = entryUpdater.getMirrorFile(file);
+ createDirectoryIfNecessary(result.getParentFile());
+ JspFileProcessor processor = new JspFileProcessor();
+ processor.process(file, result, getEncoding());
+ String resultFileContent =
+ PluginHelper.readAsString(result, getEncoding());
+ resultFileContent = resultFileContent.trim();
+
+ if (StringUtils.isBlank(resultFileContent)) {
+
+ // nothing to scan inside this file
+ result = null;
+ } else {
+
+ if (resultFileContent.startsWith("<html") ||
+ resultFileContent.startsWith("<HTML") ||
+ resultFileContent.startsWith("<?xml")
+ ) {
+
+ // document should be well-formed...
+
+ } else {
+ // to be sure, document is well formed, add a start and end tag
+ resultFileContent = "<div>\n" + resultFileContent + "\n</div>";
+
+ PluginHelper.writeString(result, resultFileContent, getEncoding());
+ }
+
+ }
+
+ return result;
+ }
+
+ @Override
+ public String extract(String i18nString) {
+ String s = null;
+ if (!StringUtils.isEmpty(i18nString.trim())) {
+ s = i18nString.trim();
+ }
+ if (getLog().isDebugEnabled()) {
+ getLog().debug(i18nString + " = " + s);
+ }
+ return s;
+ }
+
+ };
+ }
+
+ /**
+ * To transform jsp files to valid xml files.
+ * <p/>
+ * Says :
+ * <ul>
+ * <li>Remove jsp directive</li>
+ * <li>Remove jsp comment</li>
+ * <li>Remove any tags in attributes (used for example in struts)</li>
+ * <li>? Other thing</li>
+ * </ul>
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0
+ */
+ public static class JspFileProcessor extends ProcessorHelper.AbstractParserProcessor {
+
+ protected ProcessorHelper.FragmentRemover remover1 =
+ new ProcessorHelper.FragmentRemover(
+ "<" + "%" + "-" + "-",
+ "-" + "-" + "%" + ">"
+ );
+
+ protected ProcessorHelper.FragmentRemover remover2 =
+ new ProcessorHelper.FragmentRemover(
+ "<" + "%",
+ "%" + ">"
+ );
+
+ protected ProcessorHelper.FragmentRemover remover3 =
+ new ProcessorHelper.FragmentRemover(
+ "<" + "!" + "-" + "-",
+ "-" + "-" + ">"
+ );
+
+ public JspFileProcessor() {
+ setInputFilter(
+ new Filter[]{
+ remover1,
+ remover2,
+ remover3,
+ new JspAttributeWithTagFilter()
+ }
+ );
+ }
+
+ /**
+ * @param filein the source file to process
+ * @param fileout the output file to generate
+ * @param encoding encoding used to read and write files
+ * @throws IOException if any io problems while processing
+ * @since 1.0.4
+ */
+ @Override
+ public void process(File filein,
+ File fileout,
+ String encoding) throws IOException {
+ ProcessorUtil.doProcess(this, filein, fileout, encoding);
+ }
+
+ /**
+ * To remove in attributes any sub tags inside it (used for example in
+ * struts) from jsp files.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0
+ */
+ public static class JspAttributeWithTagFilter extends DefaultFilter {
+
+ private String header = "=" + "\"" + "<";
+
+ private String footer = "\"" + "/" + ">" + "\"";
+
+ @Override
+ protected String performInFilter(String ch) {
+ return "=\"\"";
+ }
+
+ @Override
+ protected String performOutFilter(String ch) {
+ return ch;
+ }
+
+ protected String getHeader() {
+ return header;
+ }
+
+ protected String getFooter() {
+ return footer;
+ }
+ }
+ }
+}
Deleted: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,287 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2011 CodeLutin, Tony Chemit
- * %%
- * 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.parser.impl;
-
-import org.apache.maven.plugin.logging.Log;
-import org.nuiton.i18n.plugin.parser.AbstractFileParser;
-import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
-import org.nuiton.i18n.plugin.parser.FileParser;
-import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
-import org.nuiton.i18n.plugin.parser.ParserException;
-import org.nuiton.i18n.plugin.parser.SourceEntry;
-import org.nuiton.io.FileUpdater;
-import org.nuiton.io.MirroredFileUpdater;
-import org.nuiton.io.SortedProperties;
-import org.nuiton.processor.ProcessorUtil;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * To parse Tapestry templates to detect new I18n keys, says content of patterns :
- * {@code ${message:XXX}} and {@code ${format:XXX=...}}.
- * <p/>
- * <p/>
- * <b>Note: </b> this goal must always be invoked before the {@code process-resources}
- * phase, otherwise all files will be considered as uptodate.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @goal parserTapestry
- * @phase generate-resources
- * @since 2.1
- */
-public class ParserTapestryMojo extends AbstractI18nParserMojo {
-
- /**
- * Root directory of the default entry.
- *
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/webapp"
- */
- protected File defaultBasedir;
-
- /**
- * Default included files to process (ant-like expression).
- *
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/*.tml"
- */
- protected String defaultIncludes;
-
- /**
- * Defines the file name of the getter where to put detected i18n keys
- * while getter phase.
- *
- * @parameter expression="${i18n.outputGetter}" default-value="tapestry.getter"
- * @since 2.0
- */
- protected String outputGetter;
-
- /**
- * Where to generated temporary processed files.
- *
- * @parameter expression="${i18n.workdir}" default-value="${basedir}/target/i18n-workdir"
- * @since 2.0
- */
- protected File workdir;
-
- protected MirroredFileUpdater entryUpdater;
-
- @Override
- public String[] getDefaultIncludes() {
- return new String[]{defaultIncludes};
- }
-
- @Override
- public String[] getDefaultExcludes() {
- return I18nSourceEntry.EMPTY_STRING_ARRAY;
- }
-
- @Override
- public File getDefaultBasedir() {
- return defaultBasedir;
- }
-
- @Override
- protected boolean onEnterEntry(I18nSourceEntry entry) {
- boolean b = super.onEnterEntry(entry);
- if (!b) {
-
- // no skipped entry
- // keep the file updater
- entryUpdater = (MirroredFileUpdater) entry.getUpdater();
- }
- return b;
- }
-
- @Override
- public FileUpdater newFileUpdater(SourceEntry entry) {
- return new MirroredFileUpdater("", "", entry.getBasedir(), workdir) {
-
- @Override
- public File getMirrorFile(File f) {
- String file =
- f.getAbsolutePath().substring(prefixSourceDirecotory);
- return new File(destinationDirectory + File.separator + file);
- }
- };
- }
-
- @Override
- protected String getOutGetter() {
- return outputGetter;
- }
-
- @Override
- public FileParser newFileParser() {
-
- return new TapestryFileParser(getLog(),
- encoding,
- oldParser,
- isShowTouchedFiles()
- );
- }
-
- protected class TapestryFileParser extends AbstractFileParser {
-
-
- public TapestryFileParser(Log log,
- String encoding,
- SortedProperties oldParser,
- boolean showTouchedFiles) {
- super(log, encoding, oldParser, showTouchedFiles);
- }
-
-
- protected File prepareFile(File file) throws IOException {
-
- // clean the jsp to make it xml
-
- File result = entryUpdater.getMirrorFile(file);
- if (isVerbose()) {
- getLog().info("Will process [" + file + "] to " + result);
- }
- try {
- createDirectoryIfNecessary(result.getParentFile());
- } catch (IOException e) {
- // don't care about it...
- }
- TapestryFileProcessor processor = new TapestryFileProcessor();
- processor.setVerbose(isVerbose());
- processor.process(file, result, getEncoding());
- return result;
- }
-
- @Override
- public void parseFile(File file) throws IOException {
-
- // clean the jsp to make it xml
-
- File processedFile = prepareFile(file);
-
- // process file to obtain
- String line = null;
- LineNumberReader lnr = new LineNumberReader(new InputStreamReader(
- new FileInputStream(processedFile), getEncoding()));
- try {
- while ((line = lnr.readLine()) != null) {
- parseLine(processedFile, line);
- }
- } catch (Exception e) {
- if (line != null) {
- getLog().error(
- "could not parse line (" + lnr.getLineNumber() + ") '"
- + line + "' of file " + file);
- }
- throw new ParserException(e);
- } finally {
- lnr.close();
- }
- }
-
- @Override
- public void parseLine(File file, String line) throws IOException {
-
- String key = line.trim();
-
- if (key.isEmpty()) {
- // no key detected on this line
- return;
- }
-
- // one key found in file, so file is marked as touched
- setTouched(true);
- // Found a i18n key, register it.
- if (getLog().isDebugEnabled()) {
- getLog().debug(file.getName() + " detected key = " + key);
- }
- registerKey(key);
- }
- }
-
- /**
- * To Extract i18n keys from tapestry template files.
- * <p/>
- * Says :
- * <ul>
- * <li>Remove all xml comments</li>
- * <li>Keep content of {@code ${message:XXX}}</li>
- * <li>Keep content of {@code ${format:XXX}}}</li>
- * </ul>
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 2.1
- */
- public static class TapestryFileProcessor extends ProcessorHelper.AbstractParserProcessor {
-
- protected ProcessorHelper.FragmentRemover remover1 =
- new ProcessorHelper.FragmentRemover(
- "<" + "!" + "-" + "-",
- "-" + "-" + ">"
- );
-
- protected ProcessorUtil.FragmentExtractor extractor1 =
- new ProcessorUtil.FragmentExtractor(
- "$" + "{" + "m" + "e" + "s" + "s" + "a" + "g" + "e" + ":",
- "}"
- );
-
- protected ProcessorUtil.FragmentExtractor extractor2 =
- new ProcessorUtil.FragmentExtractor(
- "$" + "{" + "f" + "o" + "r" + "m" + "a" + "t" + ":",
- "}") {
-
- @Override
- protected String performInFilter(String ch) {
- int i = ch.indexOf('=');
- if (verbose) {
- log.info("Detected key " + ch);
- }
- if (i == -1) {
- return "";
- }
- return ch.substring(0, i) + "\n";
- }
- };
-
-
- public void process(File filein,
- File fileout,
- String encoding) throws IOException {
-
- // remove comment fragments
- File fileTemp = new File(fileout.getAbsolutePath() + "-no-comment");
- removefragments(remover1, filein, fileTemp, encoding, false);
-
- Set<String> keys = new HashSet<String>();
- extractKeys(extractor1, fileTemp, encoding, verbose, keys);
- extractKeys(extractor2, fileTemp, encoding, verbose, keys);
- saveKeysToFile(fileout, keys);
- }
- }
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java (from rev 1960, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,295 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2011 CodeLutin, Tony Chemit
+ * %%
+ * 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.parser.impl;
+
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.parser.AbstractFileParser;
+import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
+import org.nuiton.i18n.plugin.parser.FileParser;
+import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
+import org.nuiton.i18n.plugin.parser.ParserException;
+import org.nuiton.i18n.plugin.parser.SourceEntry;
+import org.nuiton.io.FileUpdater;
+import org.nuiton.io.MirroredFileUpdater;
+import org.nuiton.io.SortedProperties;
+import org.nuiton.processor.ProcessorUtil;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * To parse Tapestry templates to detect new I18n keys, says content of patterns :
+ * {@code ${message:XXX}} and {@code ${format:XXX=...}}.
+ * <p/>
+ * <p/>
+ * <b>Note: </b> this goal must always be invoked before the {@code process-resources}
+ * phase, otherwise all files will be considered as uptodate.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+@Mojo(name = "parserTapestry", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+public class ParserTapestryMojo extends AbstractI18nParserMojo {
+
+ public static final String DEFAULT_INCLUDES = "**/*.tml";
+
+ /**
+ * Root directory of the default entry.
+ *
+ * @since 2.1
+ */
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/webapp", required = true)
+ protected File defaultBasedir;
+
+ /**
+ * Default included files to process (ant-like expression).
+ *
+ * <strong>Note:</strong> default value is **\/*.tml
+ *
+ * @since 2.1
+ */
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
+
+ /**
+ * Defines the file name of the getter where to put detected i18n keys
+ * while getter phase.
+ *
+ * @since 2.1
+ */
+ @Parameter(property = "i18n.outputGetter", defaultValue = "tapestry.getter", required = true)
+ protected String outputGetter;
+
+ /**
+ * Where to generated temporary processed files.
+ *
+ * @since 2.1
+ */
+ @Parameter(property = "i18n.workdir", defaultValue = "${basedir}/target/i18n-workdir")
+ protected File workdir;
+
+ protected MirroredFileUpdater entryUpdater;
+
+ @Override
+ public String[] getDefaultIncludes() {
+ return new String[]{defaultIncludes};
+ }
+
+ @Override
+ public String[] getDefaultExcludes() {
+ return I18nSourceEntry.EMPTY_STRING_ARRAY;
+ }
+
+ @Override
+ public File getDefaultBasedir() {
+ return defaultBasedir;
+ }
+
+ @Override
+ protected boolean onEnterEntry(I18nSourceEntry entry) {
+ boolean b = super.onEnterEntry(entry);
+ if (!b) {
+
+ // no skipped entry
+ // keep the file updater
+ entryUpdater = (MirroredFileUpdater) entry.getUpdater();
+ }
+ return b;
+ }
+
+ @Override
+ public FileUpdater newFileUpdater(SourceEntry entry) {
+ return new MirroredFileUpdater("", "", entry.getBasedir(), workdir) {
+
+ @Override
+ public File getMirrorFile(File f) {
+ String file =
+ f.getAbsolutePath().substring(prefixSourceDirecotory);
+ return new File(destinationDirectory + File.separator + file);
+ }
+ };
+ }
+
+ @Override
+ protected String getOutGetter() {
+ return outputGetter;
+ }
+
+ @Override
+ public FileParser newFileParser() {
+
+ return new TapestryFileParser(getLog(),
+ encoding,
+ oldParser,
+ isShowTouchedFiles()
+ );
+ }
+
+ protected class TapestryFileParser extends AbstractFileParser {
+
+
+ public TapestryFileParser(Log log,
+ String encoding,
+ SortedProperties oldParser,
+ boolean showTouchedFiles) {
+ super(log, encoding, oldParser, showTouchedFiles);
+ }
+
+
+ protected File prepareFile(File file) throws IOException {
+
+ // clean the jsp to make it xml
+
+ File result = entryUpdater.getMirrorFile(file);
+ if (isVerbose()) {
+ getLog().info("Will process [" + file + "] to " + result);
+ }
+ try {
+ createDirectoryIfNecessary(result.getParentFile());
+ } catch (IOException e) {
+ // don't care about it...
+ }
+ TapestryFileProcessor processor = new TapestryFileProcessor();
+ processor.setVerbose(isVerbose());
+ processor.process(file, result, getEncoding());
+ return result;
+ }
+
+ @Override
+ public void parseFile(File file) throws IOException {
+
+ // clean the jsp to make it xml
+
+ File processedFile = prepareFile(file);
+
+ // process file to obtain
+ String line = null;
+ LineNumberReader lnr = new LineNumberReader(new InputStreamReader(
+ new FileInputStream(processedFile), getEncoding()));
+ try {
+ while ((line = lnr.readLine()) != null) {
+ parseLine(processedFile, line);
+ }
+ } catch (Exception e) {
+ if (line != null) {
+ getLog().error(
+ "could not parse line (" + lnr.getLineNumber() + ") '"
+ + line + "' of file " + file);
+ }
+ throw new ParserException(e);
+ } finally {
+ lnr.close();
+ }
+ }
+
+ @Override
+ public void parseLine(File file, String line) throws IOException {
+
+ String key = line.trim();
+
+ if (key.isEmpty()) {
+ // no key detected on this line
+ return;
+ }
+
+ // one key found in file, so file is marked as touched
+ setTouched(true);
+ // Found a i18n key, register it.
+ if (getLog().isDebugEnabled()) {
+ getLog().debug(file.getName() + " detected key = " + key);
+ }
+ registerKey(key);
+ }
+ }
+
+ /**
+ * To Extract i18n keys from tapestry template files.
+ * <p/>
+ * Says :
+ * <ul>
+ * <li>Remove all xml comments</li>
+ * <li>Keep content of {@code ${message:XXX}}</li>
+ * <li>Keep content of {@code ${format:XXX}}}</li>
+ * </ul>
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.1
+ */
+ public static class TapestryFileProcessor extends ProcessorHelper.AbstractParserProcessor {
+
+ protected ProcessorHelper.FragmentRemover remover1 =
+ new ProcessorHelper.FragmentRemover(
+ "<" + "!" + "-" + "-",
+ "-" + "-" + ">"
+ );
+
+ protected ProcessorUtil.FragmentExtractor extractor1 =
+ new ProcessorUtil.FragmentExtractor(
+ "$" + "{" + "m" + "e" + "s" + "s" + "a" + "g" + "e" + ":",
+ "}"
+ );
+
+ protected ProcessorUtil.FragmentExtractor extractor2 =
+ new ProcessorUtil.FragmentExtractor(
+ "$" + "{" + "f" + "o" + "r" + "m" + "a" + "t" + ":",
+ "}") {
+
+ @Override
+ protected String performInFilter(String ch) {
+ int i = ch.indexOf('=');
+ if (verbose) {
+ log.info("Detected key " + ch);
+ }
+ if (i == -1) {
+ return "";
+ }
+ return ch.substring(0, i) + "\n";
+ }
+ };
+
+
+ public void process(File filein,
+ File fileout,
+ String encoding) throws IOException {
+
+ // remove comment fragments
+ File fileTemp = new File(fileout.getAbsolutePath() + "-no-comment");
+ removefragments(remover1, filein, fileTemp, encoding, false);
+
+ Set<String> keys = new HashSet<String>();
+ extractKeys(extractor1, fileTemp, encoding, verbose, keys);
+ extractKeys(extractor2, fileTemp, encoding, verbose, keys);
+ saveKeysToFile(fileout, keys);
+ }
+ }
+}
Deleted: trunk/i18n-maven-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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,220 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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.parser.impl;
-
-import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
-import org.nuiton.i18n.plugin.parser.SourceEntry;
-import org.nuiton.io.FileUpdater;
-import org.nuiton.io.MirroredFileUpdater;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.xpath.XPath;
-import java.io.File;
-import java.io.IOException;
-import java.net.SocketTimeoutException;
-import java.net.URL;
-import java.net.URLConnection;
-
-/**
- * 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.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @goal parserValidation
- * @phase generate-resources
- */
-public class ParserValidationMojo extends AbstractParserXmlMojo {
-
- final URL xworksResource = getClass().getResource("/xwork-validator-1.0.2.dtd");
-
- /**
- * Root directory of the default entry.
- *
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/resources"
- * @required
- */
- protected File defaultBasedir;
-
- /**
- * Default included files to process (ant-like expression).
- *
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/**-validation.xml"
- */
- protected String defaultIncludes;
-
- /**
- * Defines the core rules file used to detect i18n keys in xml validation
- * files.
- * <p/>
- * <b>Note :</b> If you do not want to use it, set it to empty and fill the
- * {@link #userRulesFiles} parameter.
- *
- * @parameter expression="${i18n.coreRuleFile}" default-value="validation.rules"
- * @since 2.0
- */
- protected String coreRuleFile;
-
- /**
- * Always use the local xowrks dtd to increase performance.
- *
- * @parameter expression="${i18n.useLocalResolver}" default-value="true"
- * @since 1.6.0
- */
- protected boolean useLocalResolver;
-
- /**
- * 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
- */
- protected String outputGetter;
-
-
- @Override
- public String[] getDefaultIncludes() {
- return new String[]{defaultIncludes};
- }
-
- @Override
- public String[] getDefaultExcludes() {
- return I18nSourceEntry.EMPTY_STRING_ARRAY;
- }
-
- @Override
- public File getDefaultBasedir() {
- return defaultBasedir;
- }
-
- @Override
- public FileUpdater newFileUpdater(SourceEntry entry) {
- return new MirroredFileUpdater("", "", entry.getBasedir(), cp) {
-
- @Override
- public File getMirrorFile(File f) {
- String file =
- f.getAbsolutePath().substring(prefixSourceDirecotory);
- return new File(destinationDirectory + File.separator + file);
- }
- };
- }
-
- @Override
- protected String getOutGetter() {
- return outputGetter;
- }
-
- @Override
- protected String getCoreRuleFile() {
- return coreRuleFile;
- }
-
- protected XmlFileParser newXmlFileParser(final XPath xpath,
- final DocumentBuilder builder) {
-
- // add cached entity resolver
- builder.setEntityResolver(getEntityResolver());
-
- return new XmlFileParser(getLog(),
- encoding,
- oldParser,
- showTouchedFiles,
- rules,
- xpath,
- builder,
- namespaces,
- isVerbose()) {
- @Override
- public String extract(String i18nString) {
- String s = null;
- if (!i18nString.trim().isEmpty()) {
- s = i18nString.trim();
- int end = s.indexOf("##");
- if (end > 0) {
- // remove params from key
- s = s.substring(0, end);
- }
- }
- if (getLog().isDebugEnabled()) {
- getLog().debug(i18nString + " = " + s);
- }
- return s;
- }
- };
- }
-
- protected EntityResolver getEntityResolver() {
-
- return new EntityResolver() {
-
- public static final String XWORK_PUBLIC_ID =
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN";
-
- boolean useLocal = useLocalResolver;
-
- @Override
- public InputSource resolveEntity(String publicId,
- String systemId) throws IOException {
- if (getLog().isDebugEnabled()) {
- getLog().debug("publicID:" + publicId + ", systemId:" +
- systemId);
- }
- if (XWORK_PUBLIC_ID.equals(publicId)) {
- if (!useLocal) {
- URL uri = new URL(systemId);
- if (verbose) {
- getLog().info("try to connect to " + uri);
- }
- URLConnection openConnection = uri.openConnection();
- openConnection.setUseCaches(true);
- openConnection.setConnectTimeout(1000);
- try {
- openConnection.connect();
- return new InputSource(
- openConnection.getInputStream());
- } catch (SocketTimeoutException e) {
- useLocal = true;
- } catch (IOException e) {
- useLocal = true;
- }
- }
-
- // use directly local resource
- InputSource inputSource =
- new InputSource(xworksResource.openStream());
- return inputSource;
- }
- // use the default behaviour
- return null;
- }
- };
- }
-}
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java (from rev 1960, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,221 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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.parser.impl;
+
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
+import org.nuiton.i18n.plugin.parser.SourceEntry;
+import org.nuiton.io.FileUpdater;
+import org.nuiton.io.MirroredFileUpdater;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.xpath.XPath;
+import java.io.File;
+import java.io.IOException;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.net.URLConnection;
+
+/**
+ * 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.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ */
+@Mojo(name = "parserValidation", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+public class ParserValidationMojo extends AbstractParserXmlMojo {
+
+ public static final String DEFAULT_INCLUDES = "**/*-validation.xml";
+
+ final URL xworksResource = getClass().getResource("/xwork-validator-1.0.2.dtd");
+
+ /** Root directory of the default entry. */
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/resources", required = true)
+ protected File defaultBasedir;
+
+ /**
+ * Default included files to process (ant-like expression).
+ * <p/>
+ * <strong>Note:</strong> default value is **\/**-validation.xml
+ */
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
+
+ /**
+ * Defines the core rules file used to detect i18n keys in xml validation
+ * files.
+ * <p/>
+ * <b>Note :</b> If you do not want to use it, set it to empty and fill the
+ * {@link #userRulesFiles} parameter.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.coreRuleFile", defaultValue = "validation.rules", required = true)
+ protected String coreRuleFile;
+
+ /**
+ * Always use the local xowrks dtd to increase performance.
+ *
+ * @since 1.6.0
+ */
+ @Parameter(property = "i18n.useLocalResolver", defaultValue = "true")
+ protected boolean useLocalResolver;
+
+ /**
+ * Defines the file name of the getter where to put detected i18n keys
+ * while getter phase.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.outputGetter", defaultValue = "validation.getter", required = true)
+ protected String outputGetter;
+
+
+ @Override
+ public String[] getDefaultIncludes() {
+ return new String[]{defaultIncludes};
+ }
+
+ @Override
+ public String[] getDefaultExcludes() {
+ return I18nSourceEntry.EMPTY_STRING_ARRAY;
+ }
+
+ @Override
+ public File getDefaultBasedir() {
+ return defaultBasedir;
+ }
+
+ @Override
+ public FileUpdater newFileUpdater(SourceEntry entry) {
+ return new MirroredFileUpdater("", "", entry.getBasedir(), cp) {
+
+ @Override
+ public File getMirrorFile(File f) {
+ String file =
+ f.getAbsolutePath().substring(prefixSourceDirecotory);
+ return new File(destinationDirectory + File.separator + file);
+ }
+ };
+ }
+
+ @Override
+ protected String getOutGetter() {
+ return outputGetter;
+ }
+
+ @Override
+ protected String getCoreRuleFile() {
+ return coreRuleFile;
+ }
+
+ protected XmlFileParser newXmlFileParser(final XPath xpath,
+ final DocumentBuilder builder) {
+
+ // add cached entity resolver
+ builder.setEntityResolver(getEntityResolver());
+
+ return new XmlFileParser(getLog(),
+ encoding,
+ oldParser,
+ showTouchedFiles,
+ rules,
+ xpath,
+ builder,
+ namespaces,
+ isVerbose()) {
+ @Override
+ public String extract(String i18nString) {
+ String s = null;
+ if (!i18nString.trim().isEmpty()) {
+ s = i18nString.trim();
+ int end = s.indexOf("##");
+ if (end > 0) {
+ // remove params from key
+ s = s.substring(0, end);
+ }
+ }
+ if (getLog().isDebugEnabled()) {
+ getLog().debug(i18nString + " = " + s);
+ }
+ return s;
+ }
+ };
+ }
+
+ protected EntityResolver getEntityResolver() {
+
+ return new EntityResolver() {
+
+ public static final String XWORK_PUBLIC_ID =
+ "-//Apache Struts//XWork Validator 1.0.3//EN";
+
+ boolean useLocal = useLocalResolver;
+
+ @Override
+ public InputSource resolveEntity(String publicId,
+ String systemId) throws IOException {
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("publicID:" + publicId + ", systemId:" +
+ systemId);
+ }
+ if (XWORK_PUBLIC_ID.equals(publicId)) {
+ if (!useLocal) {
+ URL uri = new URL(systemId);
+ if (verbose) {
+ getLog().info("try to connect to " + uri);
+ }
+ URLConnection openConnection = uri.openConnection();
+ openConnection.setUseCaches(true);
+ openConnection.setConnectTimeout(1000);
+ try {
+ openConnection.connect();
+ return new InputSource(
+ openConnection.getInputStream());
+ } catch (SocketTimeoutException e) {
+ useLocal = true;
+ } catch (IOException e) {
+ useLocal = true;
+ }
+ }
+
+ // use directly local resource
+ InputSource inputSource =
+ new InputSource(xworksResource.openStream());
+ return inputSource;
+ }
+ // use the default behaviour
+ return null;
+ }
+ };
+ }
+}
Deleted: trunk/i18n-maven-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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,149 +0,0 @@
-/*
- * #%L
- * I18n :: Maven Plugin
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
- * %%
- * 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.parser.impl;
-
-import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
-import org.nuiton.i18n.plugin.parser.SourceEntry;
-import org.nuiton.io.FileUpdater;
-import org.nuiton.io.MirroredFileUpdater;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.xpath.XPath;
-import java.io.File;
-
-/**
- * To obtain i18n keys from xml files using the {@code userRulesFiles} (and
- * an optional {@code coreRuleFile} if any serves your purpose).
- * <p/>
- * <b>Note: </b> this goal must always be invoked before the
- * {@code process-resources} phase, otherwise all files will be considered as
- * uptodate.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @goal parserXml
- * @phase generate-resources
- * @since 2.0
- */
-public class ParserXmlUserMojo extends AbstractParserXmlMojo {
-
- /**
- * Default directory where to look for files.
- *
- * @parameter expression="${i18n.xmlBasedir}" default-value="${basedir}/src/main/resources"
- * @required
- * @since 2.0
- */
- protected File basedir;
-
- /**
- * Defines files to parse.
- *
- * @parameter expression="${i18n.xmlIncludes}"
- * @required
- * @since 2.0
- */
- protected String includes;
-
- /**
- * Defines an optional files which contain xpath rules to obtain i18n
- * keys in xml files and is defined in plugin.
- *
- * @parameter expression="${i18n.coreRuleFiles}"
- * @since 2.0
- */
- protected String coreRuleFile;
-
- /**
- * Defines the file name of the getter where to put detected i18n keys while getter phase.
- *
- * @parameter expression="${i18n.outputGetter}" default-value="xmlUser.getter"
- * @since 2.0
- */
- protected String outputGetter;
-
- @Override
- public String[] getDefaultIncludes() {
- return new String[]{includes};
- }
-
- @Override
- public String[] getDefaultExcludes() {
- return I18nSourceEntry.EMPTY_STRING_ARRAY;
- }
-
- @Override
- public File getDefaultBasedir() {
- return basedir;
- }
-
- @Override
- protected String getCoreRuleFile() {
- return coreRuleFile;
- }
-
- @Override
- protected XmlFileParser newXmlFileParser(XPath xpath, DocumentBuilder builder) {
- XmlFileParser fileParser = new XmlFileParser(getLog(),
- encoding,
- oldParser,
- showTouchedFiles,
- rules,
- xpath,
- builder,
- namespaces,
- isVerbose()) {
- @Override
- public String extract(String i18nString) {
- String s = null;
- if (!i18nString.trim().isEmpty()) {
- s = i18nString.trim();
- }
- if (getLog().isDebugEnabled()) {
- getLog().debug(i18nString + " = " + s);
- }
- return s;
- }
- };
- return fileParser;
- }
-
- @Override
- protected String getOutGetter() {
- return outputGetter;
- }
-
- @Override
- public FileUpdater newFileUpdater(SourceEntry entry) {
- return new MirroredFileUpdater("", "", entry.getBasedir(), cp) {
-
- @Override
- public File getMirrorFile(File f) {
- String file =
- f.getAbsolutePath().substring(prefixSourceDirecotory);
- return new File(destinationDirectory + File.separator + file);
- }
- };
- }
-}
\ No newline at end of file
Copied: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java (from rev 1958, trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java)
===================================================================
--- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java (rev 0)
+++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,149 @@
+/*
+ * #%L
+ * I18n :: Maven Plugin
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2007 - 2010 CodeLutin, Tony Chemit
+ * %%
+ * 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.parser.impl;
+
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
+import org.nuiton.i18n.plugin.parser.SourceEntry;
+import org.nuiton.io.FileUpdater;
+import org.nuiton.io.MirroredFileUpdater;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.xpath.XPath;
+import java.io.File;
+
+/**
+ * To obtain i18n keys from xml files using the {@code userRulesFiles} (and
+ * an optional {@code coreRuleFile} if any serves your purpose).
+ * <p/>
+ * <b>Note: </b> this goal must always be invoked before the
+ * {@code process-resources} phase, otherwise all files will be considered as
+ * uptodate.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0
+ */
+@Mojo(name = "parserXml", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+public class ParserXmlUserMojo extends AbstractParserXmlMojo {
+
+ /**
+ * Default directory where to look for files.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.xmlBasedir", defaultValue = "${basedir}/src/main/resources", required = true)
+ protected File basedir;
+
+ /**
+ * Defines files to parse.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.xmlIncludes", required = true)
+ protected String includes;
+
+ /**
+ * Defines an optional files which contain xpath rules to obtain i18n
+ * keys in xml files and is defined in plugin.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.coreRuleFiles")
+ protected String coreRuleFile;
+
+ /**
+ * Defines the file name of the getter where to put detected i18n keys while getter phase.
+ *
+ * @since 2.0
+ */
+ @Parameter(property = "i18n.outputGetter", defaultValue = "xmlUser.getter", required = true)
+ protected String outputGetter;
+
+ @Override
+ public String[] getDefaultIncludes() {
+ return new String[]{includes};
+ }
+
+ @Override
+ public String[] getDefaultExcludes() {
+ return I18nSourceEntry.EMPTY_STRING_ARRAY;
+ }
+
+ @Override
+ public File getDefaultBasedir() {
+ return basedir;
+ }
+
+ @Override
+ protected String getCoreRuleFile() {
+ return coreRuleFile;
+ }
+
+ @Override
+ protected XmlFileParser newXmlFileParser(XPath xpath, DocumentBuilder builder) {
+ XmlFileParser fileParser = new XmlFileParser(getLog(),
+ encoding,
+ oldParser,
+ showTouchedFiles,
+ rules,
+ xpath,
+ builder,
+ namespaces,
+ isVerbose()) {
+ @Override
+ public String extract(String i18nString) {
+ String s = null;
+ if (!i18nString.trim().isEmpty()) {
+ s = i18nString.trim();
+ }
+ if (getLog().isDebugEnabled()) {
+ getLog().debug(i18nString + " = " + s);
+ }
+ return s;
+ }
+ };
+ return fileParser;
+ }
+
+ @Override
+ protected String getOutGetter() {
+ return outputGetter;
+ }
+
+ @Override
+ public FileUpdater newFileUpdater(SourceEntry entry) {
+ return new MirroredFileUpdater("", "", entry.getBasedir(), cp) {
+
+ @Override
+ public File getMirrorFile(File f) {
+ String file =
+ f.getAbsolutePath().substring(prefixSourceDirecotory);
+ return new File(destinationDirectory + File.separator + file);
+ }
+ };
+ }
+}
\ No newline at end of file
Copied: trunk/i18n-maven-plugin/src/main/resources/xwork-validator-1.0.3.dtd (from rev 1960, trunk/maven-i18n-plugin/src/main/resources/xwork-validator-1.0.3.dtd)
===================================================================
--- trunk/i18n-maven-plugin/src/main/resources/xwork-validator-1.0.3.dtd (rev 0)
+++ trunk/i18n-maven-plugin/src/main/resources/xwork-validator-1.0.3.dtd 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ XWork Validators DTD.
+ Used the following DOCTYPE.
+
+ <!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+-->
+
+
+<!ELEMENT validators (field|validator)+>
+
+<!ELEMENT field (field-validator+)>
+<!ATTLIST field
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT field-validator (param*, message)>
+<!ATTLIST field-validator
+ type CDATA #REQUIRED
+ short-circuit (true|false) "false"
+>
+
+<!ELEMENT validator (param*, message)>
+<!ATTLIST validator
+ type CDATA #REQUIRED
+ short-circuit (true|false) "false"
+>
+
+<!ELEMENT param (#PCDATA)>
+<!ATTLIST param
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT message (#PCDATA|param)*>
+<!ATTLIST message
+ key CDATA #IMPLIED
+>
+
+
Modified: trunk/i18n-maven-plugin/src/site/apt/usages.apt
===================================================================
--- trunk/maven-i18n-plugin/src/site/apt/usages.apt 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/site/apt/usages.apt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -83,7 +83,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<goals>
@@ -103,7 +103,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<configuration>
<entries>
<entry>
@@ -132,7 +132,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<configuration>
<treateDefaultEntry>true</treateDefaultEntry>
<entries>
@@ -176,7 +176,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<goals>
@@ -201,7 +201,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<goals>
@@ -218,7 +218,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<goals>
Modified: trunk/i18n-maven-plugin/src/site/en/apt/usages.apt
===================================================================
--- trunk/maven-i18n-plugin/src/site/en/apt/usages.apt 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/site/en/apt/usages.apt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -83,7 +83,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<goals>
@@ -103,7 +103,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<configuration>
<entries>
<entry>
@@ -132,7 +132,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<configuration>
<treateDefaultEntry>true</treateDefaultEntry>
<entries>
@@ -176,7 +176,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<goals>
@@ -201,7 +201,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<goals>
@@ -218,7 +218,7 @@
-----------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<goals>
Deleted: trunk/i18n-maven-plugin/src/site/site_en.xml
===================================================================
--- trunk/maven-i18n-plugin/src/site/site_en.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/site/site_en.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,136 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- #%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%
- -->
-
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- <href>index.html</href>
- </bannerLeft>
-
- <bannerRight>
- <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src>
- <href>http://www.codelutin.com</href>
- </bannerRight>
-
- <skin>
- <groupId>org.apache.maven.skins</groupId>
- <artifactId>maven-fluido-skin</artifactId>
- <version>1.2.1</version>
- </skin>
-
- <custom>
- <fluidoSkin>
- <topBarEnabled>true</topBarEnabled>
- <googleSearch/>
- <sideBarEnabled>false</sideBarEnabled>
- <searchEnabled>true</searchEnabled>
- <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
- </fluidoSkin>
- </custom>
-
- <publishDate position="right" format="dd/MM/yyyy"/>
- <version position="right"/>
-
- <poweredBy>
- <logo href="http://maven.apache.org" name="Maven"
- img="${project.url}/images/logos/maven-feather.png"/>
- </poweredBy>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="index.html"/>
- </breadcrumbs>
-
- <links>
- <item name="[fr" href="../index.html"/>
- <item name="en]" href="index.html"/>
- </links>
-
- <menu name="Project Parent">
- <item name="I18n" href="../../en/index.html"/>
- </menu>
-
- <menu name="User">
- <item name="Home" href="index.html"/>
- <item name="Usages" href="usages.html"/>
- <item name="Parser Goals" href="plugin-info.html">
- <item name="parserJava" href="parserJava-mojo.html"/>
- <item name="parserXml" href="parserXml-mojo.html"/>
- <item name="parserJsp" href="parserJsp-mojo.html"/>
- <item name="parserGWTJava" href="parserGWTJava-mojo.html"/>
- <item name="parserTapestry" href="parserTapestry-mojo.html"/>
- <item name="parserValidation" href="parserValidation-mojo.html"/>
- <item name="get" href="get-mojo.html"/>
- <item name="gen" href="gen-mojo.html"/>
- </item>
- <item name="Bundle Goals" href="plugin-info.html">
- <item name="collect-i18n-artifacts"
- href="collect-i18n-artifacts-mojo.html"/>
- <item name="bundle" href="bundle-mojo.html"/>
- <item name="tapestry-bundle" href="tapestry-bundle-mojo.html"/>
- </item>
- <item name="Other Goals" href="plugin-info.html">
- <item name="help" href="help-mojo.html"/>
- </item>
- </menu>
-
- <menu name="Downloads">
- <item
- href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}.jar"
- name="Librairie (jar)"/>
- <item
- href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar"
- name="Javadoc (jar)"/>
- <item
- href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar"
- name="Sources (jar)"/>
- </menu>
-
- <menu ref="reports"/>
-
- <footer>
-
- <script type="text/javascript"
- src="http://maven-site.nuiton.org/public/js/maven-site-nuiton.org.js">
- </script>
-
- <div id='projectMetas'
- projectversion='${project.version}'
- platform='${project.platform}'
- projectid='${project.projectId}'
- scm='${project.scm.connection}'
- scmwebeditorenabled='${project.scmwebeditorEnabled}'
- scmwebeditorurl='${project.scmwebeditorUrl}'
- siteSourcesType='${project.siteSourcesType}'
- piwikEnabled='${project.piwikEnabled}'
- piwikId='${project.piwikId}'>
- </div>
- </footer>
-
- </body>
-</project>
Copied: trunk/i18n-maven-plugin/src/site/site_en.xml (from rev 1958, trunk/maven-i18n-plugin/src/site/site_en.xml)
===================================================================
--- trunk/i18n-maven-plugin/src/site/site_en.xml (rev 0)
+++ trunk/i18n-maven-plugin/src/site/site_en.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%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%
+ -->
+
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ <href>index.html</href>
+ </bannerLeft>
+
+ <bannerRight>
+ <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src>
+ <href>http://www.codelutin.com</href>
+ </bannerRight>
+
+ <skin>
+ <groupId>org.apache.maven.skins</groupId>
+ <artifactId>maven-fluido-skin</artifactId>
+ <version>1.2.1</version>
+ </skin>
+
+ <custom>
+ <fluidoSkin>
+ <topBarEnabled>true</topBarEnabled>
+ <googleSearch/>
+ <sideBarEnabled>false</sideBarEnabled>
+ <searchEnabled>true</searchEnabled>
+ <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
+ </fluidoSkin>
+ </custom>
+
+ <publishDate position="right" format="dd/MM/yyyy"/>
+ <version position="right"/>
+
+ <poweredBy>
+ <logo href="http://maven.apache.org" name="Maven"
+ img="${project.url}/images/logos/maven-feather.png"/>
+ </poweredBy>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </breadcrumbs>
+
+ <links>
+ <item name="[fr" href="../index.html"/>
+ <item name="en]" href="index.html"/>
+ </links>
+
+ <menu name="Project Parent">
+ <item name="I18n" href="../../en/index.html"/>
+ </menu>
+
+ <menu name="User">
+ <item name="Home" href="index.html"/>
+ <item name="Usages" href="usages.html"/>
+ <item name="Parser Goals" href="plugin-info.html">
+ <item name="parserJava" href="parserJava-mojo.html"/>
+ <item name="parserXml" href="parserXml-mojo.html"/>
+ <item name="parserJsp" href="parserJsp-mojo.html"/>
+ <item name="parserGWTJava" href="parserGWTJava-mojo.html"/>
+ <item name="parserTapestry" href="parserTapestry-mojo.html"/>
+ <item name="parserValidation" href="parserValidation-mojo.html"/>
+ <item name="get" href="get-mojo.html"/>
+ <item name="gen" href="gen-mojo.html"/>
+ </item>
+ <item name="Bundle Goals" href="plugin-info.html">
+ <item name="collect-i18n-artifacts"
+ href="collect-i18n-artifacts-mojo.html"/>
+ <item name="bundle" href="bundle-mojo.html"/>
+ <item name="tapestry-bundle" href="tapestry-bundle-mojo.html"/>
+ </item>
+ <item name="Other Goals" href="plugin-info.html">
+ <item name="help" href="help-mojo.html"/>
+ </item>
+ </menu>
+
+ <menu name="Downloads">
+ <item
+ href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}.jar"
+ name="Librairie (jar)"/>
+ <item
+ href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar"
+ name="Javadoc (jar)"/>
+ <item
+ href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar"
+ name="Sources (jar)"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ <footer>
+
+ <script type="text/javascript"
+ src="http://maven-site.nuiton.org/public/js/maven-site-nuiton.org.js">
+ </script>
+
+ <div id='projectMetas'
+ projectversion='${project.version}'
+ platform='${project.platform}'
+ projectid='${project.projectId}'
+ scm='${project.scm.developerConnection}'
+ scmwebeditorenabled='${project.scmwebeditorEnabled}'
+ scmwebeditorurl='${project.scmwebeditorUrl}'
+ siteSourcesType='${project.siteSourcesType}'
+ piwikEnabled='${project.piwikEnabled}'
+ piwikId='${project.piwikId}'>
+ </div>
+ </footer>
+
+ </body>
+</project>
Deleted: trunk/i18n-maven-plugin/src/site/site_fr.xml
===================================================================
--- trunk/maven-i18n-plugin/src/site/site_fr.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/i18n-maven-plugin/src/site/site_fr.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- #%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%
- -->
-
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- <href>index.html</href>
- </bannerLeft>
-
- <bannerRight>
- <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src>
- <href>http://www.codelutin.com</href>
- </bannerRight>
-
- <skin>
- <groupId>org.apache.maven.skins</groupId>
- <artifactId>maven-fluido-skin</artifactId>
- <version>1.2.1</version>
- </skin>
-
- <custom>
- <fluidoSkin>
- <topBarEnabled>true</topBarEnabled>
- <googleSearch/>
- <sideBarEnabled>false</sideBarEnabled>
- <searchEnabled>true</searchEnabled>
- <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
- </fluidoSkin>
- </custom>
-
- <publishDate position="right" format="dd/MM/yyyy"/>
- <version position="right"/>
-
- <poweredBy>
- <logo href="http://maven.apache.org" name="Maven"
- img="${project.url}/images/logos/maven-feather.png"/>
- </poweredBy>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="index.html"/>
- </breadcrumbs>
-
- <links>
- <item name="[fr" href="index.html"/>
- <item name="en]" href="en/index.html"/>
- </links>
-
- <menu ref="parent"/>
-
- <menu name="Utilisateur">
- <item name="Introduction" href="index.html"/>
- <item name="Usages" href="usages.html"/>
- <item name="Parser Goals" href="plugin-info.html">
- <item name="parserJava" href="parserJava-mojo.html"/>
- <item name="parserXml" href="parserXml-mojo.html"/>
- <item name="parserJsp" href="parserJsp-mojo.html"/>
- <item name="parserTapestry" href="parserTapestry-mojo.html"/>
- <item name="parserGWTJava" href="parserGWTJava-mojo.html"/>
- <item name="parserValidation" href="parserValidation-mojo.html"/>
- <item name="get" href="get-mojo.html"/>
- <item name="gen" href="gen-mojo.html"/>
- </item>
- <item name="Bundle Goals" href="plugin-info.html">
- <item name="collect-i18n-artifacts"
- href="collect-i18n-artifacts-mojo.html"/>
- <item name="bundle" href="bundle-mojo.html"/>
- <item name="tapestry-bundle" href="tapestry-bundle-mojo.html"/>
- </item>
- <item name="Other Goals" href="plugin-info.html">
- <item name="help" href="help-mojo.html"/>
- </item>
- </menu>
-
- <menu name="Téléchargement">
- <item
- href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}.jar"
- name="Librairie (jar)"/>
- <item
- href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar"
- name="Javadoc (jar)"/>
- <item
- href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar"
- name="Sources (jar)"/>
- </menu>
-
- <menu ref="reports"/>
-
- <footer>
-
- <script type="text/javascript"
- src="http://maven-site.nuiton.org/public/js/maven-site-nuiton.org.js">
- </script>
-
- <div id='projectMetas'
- projectversion='${project.version}'
- platform='${project.platform}'
- projectid='${project.projectId}'
- scm='${project.scm.connection}'
- scmwebeditorenabled='${project.scmwebeditorEnabled}'
- scmwebeditorurl='${project.scmwebeditorUrl}'
- siteSourcesType='${project.siteSourcesType}'
- piwikEnabled='${project.piwikEnabled}'
- piwikId='${project.piwikId}'>
- </div>
- </footer>
-
- </body>
-</project>
Copied: trunk/i18n-maven-plugin/src/site/site_fr.xml (from rev 1958, trunk/maven-i18n-plugin/src/site/site_fr.xml)
===================================================================
--- trunk/i18n-maven-plugin/src/site/site_fr.xml (rev 0)
+++ trunk/i18n-maven-plugin/src/site/site_fr.xml 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%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%
+ -->
+
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ <href>index.html</href>
+ </bannerLeft>
+
+ <bannerRight>
+ <src>http://www.codelutin.com/images/lutinorange-codelutin.png</src>
+ <href>http://www.codelutin.com</href>
+ </bannerRight>
+
+ <skin>
+ <groupId>org.apache.maven.skins</groupId>
+ <artifactId>maven-fluido-skin</artifactId>
+ <version>1.2.1</version>
+ </skin>
+
+ <custom>
+ <fluidoSkin>
+ <topBarEnabled>true</topBarEnabled>
+ <googleSearch/>
+ <sideBarEnabled>false</sideBarEnabled>
+ <searchEnabled>true</searchEnabled>
+ <sourceLineNumbersEnabled>true</sourceLineNumbersEnabled>
+ </fluidoSkin>
+ </custom>
+
+ <publishDate position="right" format="dd/MM/yyyy"/>
+ <version position="right"/>
+
+ <poweredBy>
+ <logo href="http://maven.apache.org" name="Maven"
+ img="${project.url}/images/logos/maven-feather.png"/>
+ </poweredBy>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html"/>
+ </breadcrumbs>
+
+ <links>
+ <item name="[fr" href="index.html"/>
+ <item name="en]" href="en/index.html"/>
+ </links>
+
+ <menu ref="parent"/>
+
+ <menu name="Utilisateur">
+ <item name="Introduction" href="index.html"/>
+ <item name="Usages" href="usages.html"/>
+ <item name="Parser Goals" href="plugin-info.html">
+ <item name="parserJava" href="parserJava-mojo.html"/>
+ <item name="parserXml" href="parserXml-mojo.html"/>
+ <item name="parserJsp" href="parserJsp-mojo.html"/>
+ <item name="parserTapestry" href="parserTapestry-mojo.html"/>
+ <item name="parserGWTJava" href="parserGWTJava-mojo.html"/>
+ <item name="parserValidation" href="parserValidation-mojo.html"/>
+ <item name="get" href="get-mojo.html"/>
+ <item name="gen" href="gen-mojo.html"/>
+ </item>
+ <item name="Bundle Goals" href="plugin-info.html">
+ <item name="collect-i18n-artifacts"
+ href="collect-i18n-artifacts-mojo.html"/>
+ <item name="bundle" href="bundle-mojo.html"/>
+ <item name="tapestry-bundle" href="tapestry-bundle-mojo.html"/>
+ </item>
+ <item name="Other Goals" href="plugin-info.html">
+ <item name="help" href="help-mojo.html"/>
+ </item>
+ </menu>
+
+ <menu name="Téléchargement">
+ <item
+ href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}.jar"
+ name="Librairie (jar)"/>
+ <item
+ href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}-javadoc.jar"
+ name="Javadoc (jar)"/>
+ <item
+ href="${repository.home.url}/org/nuiton/i18n/${project.artifactId}/${project.version}/${project.build.finalName}-sources.jar"
+ name="Sources (jar)"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ <footer>
+
+ <script type="text/javascript"
+ src="http://maven-site.nuiton.org/public/js/maven-site-nuiton.org.js">
+ </script>
+
+ <div id='projectMetas'
+ projectversion='${project.version}'
+ platform='${project.platform}'
+ projectid='${project.projectId}'
+ scm='${project.scm.developerConnection}'
+ scmwebeditorenabled='${project.scmwebeditorEnabled}'
+ scmwebeditorurl='${project.scmwebeditorUrl}'
+ siteSourcesType='${project.siteSourcesType}'
+ piwikEnabled='${project.piwikEnabled}'
+ piwikId='${project.piwikId}'>
+ </div>
+ </footer>
+
+ </body>
+</project>
Copied: trunk/i18n-maven-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java (from rev 1960, trunk/maven-i18n-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java)
===================================================================
--- trunk/i18n-maven-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java (rev 0)
+++ trunk/i18n-maven-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java 2012-07-09 13:12:35 UTC (rev 1961)
@@ -0,0 +1,43 @@
+package org.nuiton.i18n.plugin.parser;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.i18n.plugin.parser.impl.ParserJavaMojo;
+import org.nuiton.i18n.plugin.parser.impl.ParserValidationMojo;
+
+import java.io.File;
+
+/**
+ * Tests the {@link SourceEntry}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4.3
+ */
+public class SourceEntryTest {
+
+ @Test
+ public void testGetIncludedFiles() throws Exception {
+ SourceEntry entry = new SourceEntry();
+ File basedir = new File(".");
+
+ File defaultBasedir = new File(basedir, "src" + File.separator + "test" + File.separator + "java");
+ File defaultBasedir2 = new File(basedir, "src" + File.separator + "test" + File.separator + "resources");
+
+ String[] includedFiles;
+
+ includedFiles = entry.getIncludedFiles(defaultBasedir,
+ new String[]{ParserJavaMojo.DEFAULT_INCLUDES},
+ I18nSourceEntry.EMPTY_STRING_ARRAY);
+ Assert.assertNotNull(includedFiles);
+ Assert.assertTrue(includedFiles.length > 0);
+
+
+ includedFiles = entry.getIncludedFiles(defaultBasedir2,
+ new String[]{ParserValidationMojo.DEFAULT_INCLUDES},
+ I18nSourceEntry.EMPTY_STRING_ARRAY);
+ Assert.assertNotNull(includedFiles);
+ Assert.assertTrue(includedFiles.length > 0);
+
+
+ }
+}
Modified: trunk/src/site/apt/gwt.apt
===================================================================
--- trunk/src/site/apt/gwt.apt 2012-07-09 12:53:13 UTC (rev 1960)
+++ trunk/src/site/apt/gwt.apt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -147,7 +147,7 @@
--------------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<id>scan-gwt-sources</id>
Modified: trunk/src/site/apt/index.apt
===================================================================
--- trunk/src/site/apt/index.apt 2012-07-09 12:53:13 UTC (rev 1960)
+++ trunk/src/site/apt/index.apt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -50,7 +50,15 @@
- {{{./ant-i18n-task/index.html}I18n Ant task}} (ce module a été désactivé depuis la version 2.0)
+Quoi de neuf dans la version 2.5
+* Renommage du plugin en i18n-maven-plugin.
+
+ Le plugin a été renommé de <maven-i18n-plugin> en <i18n-maven-plugin>.
+
+ Pensez à mettre à jour vos pom.
+
+
Quoi de neuf dans la version 2.4
* Meilleure utilisation des encodings
Modified: trunk/src/site/apt/library.apt.vm
===================================================================
--- trunk/src/site/apt/library.apt.vm 2012-07-09 12:53:13 UTC (rev 1960)
+++ trunk/src/site/apt/library.apt.vm 2012-07-09 13:12:35 UTC (rev 1961)
@@ -47,7 +47,7 @@
-------------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>${projet.version}</version>
<executions>
<execution>
Modified: trunk/src/site/en/apt/gwt.apt
===================================================================
--- trunk/src/site/en/apt/gwt.apt 2012-07-09 12:53:13 UTC (rev 1960)
+++ trunk/src/site/en/apt/gwt.apt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -135,7 +135,7 @@
--------------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<executions>
<execution>
<id>scan-gwt-sources</id>
Modified: trunk/src/site/en/apt/index.apt
===================================================================
--- trunk/src/site/en/apt/index.apt 2012-07-09 12:53:13 UTC (rev 1960)
+++ trunk/src/site/en/apt/index.apt 2012-07-09 13:12:35 UTC (rev 1961)
@@ -85,6 +85,14 @@
another one, using a different syntax from the one used by translations will
not work properly.
+What's new in 2.5 version
+
+* Plugin module renamed to i18n-maven-plugin.
+
+ the i18n maven plugin was renamed from <maven-i18n-plugin> to <i18n-maven-plugin>.
+
+ Think to update your poms.
+
What's new in 2.3 version
Version 2.3 improves a lot performance on detection of java file i18n keys
Modified: trunk/src/site/en/apt/library.apt.vm
===================================================================
--- trunk/src/site/en/apt/library.apt.vm 2012-07-09 12:53:13 UTC (rev 1960)
+++ trunk/src/site/en/apt/library.apt.vm 2012-07-09 13:12:35 UTC (rev 1961)
@@ -45,7 +45,7 @@
-------------------------------------------------------------------------------
<plugin>
<groupId>org.nuiton.i18n</groupId>
- <artifactId>maven-i18n-plugin</artifactId>
+ <artifactId>i18n-maven-plugin</artifactId>
<version>${project.version}</version>
<executions>
<execution>
1
0
Author: tchemit
Date: 2012-07-09 14:53:13 +0200 (Mon, 09 Jul 2012)
New Revision: 1960
Url: http://nuiton.org/repositories/revision/i18n/1960
Log:
refs #928 (fix default includes) + improve its
Added:
trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/goals.txt
trunk/maven-i18n-plugin/src/it/ano-1494/migrate/goals.txt
trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/goals.txt
trunk/maven-i18n-plugin/src/it/ano-672/goals.txt
trunk/maven-i18n-plugin/src/it/evo-1507/goals.txt
trunk/maven-i18n-plugin/src/it/parsers/newProject/goals.txt
trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/goals.txt
trunk/maven-i18n-plugin/src/main/resources/xwork-validator-1.0.3.dtd
trunk/maven-i18n-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java
trunk/maven-i18n-plugin/src/test/resources/
trunk/maven-i18n-plugin/src/test/resources/MyBean-validation.xml
Removed:
trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/invoker.properties
trunk/maven-i18n-plugin/src/it/ano-1494/migrate/invoker.properties
trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/invoker.properties
trunk/maven-i18n-plugin/src/it/ano-672/invoker.properties
trunk/maven-i18n-plugin/src/it/evo-1507/invoker.properties
trunk/maven-i18n-plugin/src/it/parsers/newProject/invoker.properties
trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/invoker.properties
Modified:
trunk/maven-i18n-plugin/pom.xml
trunk/maven-i18n-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.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/parser/AbstractI18nParserMojo.java
trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.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/ParserJspMojo.java
trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java
trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java
Modified: trunk/maven-i18n-plugin/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/pom.xml 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/pom.xml 2012-07-09 12:53:13 UTC (rev 1960)
@@ -260,8 +260,8 @@
<id>run-its</id>
<activation>
<property>
- <name>performRelease</name>
- <value>true</value>
+ <name>maven.test.skip</name>
+ <value>!true</value>
</property>
</activation>
<build>
@@ -278,7 +278,6 @@
</localRepositoryPath>
<settingsFile>src/it/settings.xml</settingsFile>
<cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
- <debug>${maven.verbose}</debug>
</configuration>
<executions>
<execution>
Added: trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/goals.txt
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/goals.txt (rev 0)
+++ trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/goals.txt 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1 @@
+clean compile
\ No newline at end of file
Deleted: trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/invoker.properties 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/ano-1494/iso-8859-1/invoker.properties 2012-07-09 12:53:13 UTC (rev 1960)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean compile -Dlog4j.configuration=file:src/test/resources/log4j.properties
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Added: trunk/maven-i18n-plugin/src/it/ano-1494/migrate/goals.txt
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/migrate/goals.txt (rev 0)
+++ trunk/maven-i18n-plugin/src/it/ano-1494/migrate/goals.txt 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1 @@
+clean compile -Dlog4j.configuration=file:src/main/resources/log4j.properties
\ No newline at end of file
Deleted: trunk/maven-i18n-plugin/src/it/ano-1494/migrate/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/migrate/invoker.properties 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/ano-1494/migrate/invoker.properties 2012-07-09 12:53:13 UTC (rev 1960)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean compile -Dlog4j.configuration=file:src/test/resources/log4j.properties
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Added: trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/goals.txt
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/goals.txt (rev 0)
+++ trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/goals.txt 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1 @@
+clean test
\ No newline at end of file
Deleted: trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/invoker.properties 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/ano-1494/utf-8/invoker.properties 2012-07-09 12:53:13 UTC (rev 1960)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean test -Dlog4j.configuration=file:src/test/resources/log4j.properties
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Added: trunk/maven-i18n-plugin/src/it/ano-672/goals.txt
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-672/goals.txt (rev 0)
+++ trunk/maven-i18n-plugin/src/it/ano-672/goals.txt 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1 @@
+clean test
\ No newline at end of file
Deleted: trunk/maven-i18n-plugin/src/it/ano-672/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/ano-672/invoker.properties 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/ano-672/invoker.properties 2012-07-09 12:53:13 UTC (rev 1960)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean test
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Added: trunk/maven-i18n-plugin/src/it/evo-1507/goals.txt
===================================================================
--- trunk/maven-i18n-plugin/src/it/evo-1507/goals.txt (rev 0)
+++ trunk/maven-i18n-plugin/src/it/evo-1507/goals.txt 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1 @@
+clean test
\ No newline at end of file
Deleted: trunk/maven-i18n-plugin/src/it/evo-1507/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/evo-1507/invoker.properties 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/evo-1507/invoker.properties 2012-07-09 12:53:13 UTC (rev 1960)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean test
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Added: trunk/maven-i18n-plugin/src/it/parsers/newProject/goals.txt
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/newProject/goals.txt (rev 0)
+++ trunk/maven-i18n-plugin/src/it/parsers/newProject/goals.txt 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1 @@
+clean compile
\ No newline at end of file
Deleted: trunk/maven-i18n-plugin/src/it/parsers/newProject/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/newProject/invoker.properties 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/parsers/newProject/invoker.properties 2012-07-09 12:53:13 UTC (rev 1960)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean compile
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/maven-i18n-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/parsers/newProject/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-07-09 12:53:13 UTC (rev 1960)
@@ -25,8 +25,8 @@
-->
<!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="field1">
Added: trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/goals.txt
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/goals.txt (rev 0)
+++ trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/goals.txt 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1 @@
+clean compile
\ No newline at end of file
Deleted: trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/invoker.properties
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/invoker.properties 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/invoker.properties 2012-07-09 12:53:13 UTC (rev 1960)
@@ -1,45 +0,0 @@
-###
-# #%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%
-###
-# A comma or space separated list of goals/phases to execute, may
-# specify an empty list to execute the default goal of the IT project
-invoker.goals=clean compile
-
-# Optionally, a list of goals to run during further invocations of Maven
-#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
-
-# A comma or space separated list of profiles to activate
-#invoker.profiles=run-all run-once
-
-# The value for the environment variable MAVEN_OPTS
-#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
-
-# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
-invoker.failureBehavior=fail-at-end
-
-# The expected result of the build, possible values are "success" (default) and "failure"
-#invoker.buildResult=success
-
-# A boolean value controlling the -N flag, defaults to "false"
-#invoker.nonRecursive=false
Modified: trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml
===================================================================
--- trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml 2012-07-09 12:53:13 UTC (rev 1960)
@@ -25,8 +25,8 @@
-->
<!DOCTYPE validators PUBLIC
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
- "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<validator type="required">
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 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2012-07-09 12:53:13 UTC (rev 1960)
@@ -80,7 +80,7 @@
protected String bundles;
/** Directory where to find project i18n files. */
- @Parameter(property = "i18n.src", defaultValue = "\"${basedir}/src/main/resources/i18n", required = true)
+ @Parameter(property = "i18n.src", defaultValue = "${basedir}/src/main/resources/i18n", required = true)
protected File src;
/** Directory where to generate i18n files. */
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 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2012-07-09 12:53:13 UTC (rev 1960)
@@ -207,7 +207,7 @@
if (skip) {
if (!silent && verbose) {
- getLog().info("skip - " + entry.getSkipMessage());
+ getLog().info("skip [" + entry + "] - " + entry.getSkipMessage());
}
continue;
}
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2012-07-09 12:53:13 UTC (rev 1960)
@@ -63,6 +63,8 @@
@Mojo(name = "parserGWTJava", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserGWTJavaMojo extends AbstractI18nParserMojo {
+ public static final String DEFAULT_INCLUDES = "**/*.java";
+
/** Root directory of the default entry. */
@Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/java")
protected File defaultBasedir;
@@ -72,9 +74,8 @@
* <p/>
* <strong>Note:</strong> default value is **\/*.java
*/
-// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/*.java", required = true)
- @Parameter(property = "i18n.defaultIncludes")
- protected String defaultIncludes = "**\\/*.java";
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
/**
* Defines the file name of the getter where to put detected i18n keys
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 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2012-07-09 12:53:13 UTC (rev 1960)
@@ -59,6 +59,8 @@
@Mojo(name = "parserJava", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserJavaMojo extends AbstractI18nParserMojo {
+ public static final String DEFAULT_INCLUDES = "**/*.java";
+
/** Root directory of the default entry. */
@Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/java")
protected File defaultBasedir;
@@ -68,9 +70,8 @@
* <p/>
* <strong>Note:</strong> default value is **\/*.java
*/
-// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/*.java", required = true)
- @Parameter(property = "i18n.defaultIncludes")
- protected String defaultIncludes = "**\\/*.java";
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
/**
* Defines the file name of the getter where to put detected i18n keys
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2012-07-09 12:53:13 UTC (rev 1960)
@@ -55,6 +55,8 @@
@Mojo(name = "parserJsp", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserJspMojo extends AbstractParserXmlMojo {
+ public static final String DEFAULT_INCLUDES = "**/*.jsp";
+
/**
* Root directory of the default entry.
*
@@ -66,13 +68,12 @@
/**
* Default included files to process (ant-like expression).
* <p/>
- * <strong>Note:</strong> default value is **\/**.jsp
+ * <strong>Note:</strong> default value is **\/*.jsp
*
* @since 2.0
*/
-// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/**.jsp", required = true)
- @Parameter(property = "i18n.defaultIncludes")
- protected String defaultIncludes = "**\\/**.jsp";
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
/**
* Defines the core rules file used to detect i18n keys in jsp files.
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2012-07-09 12:53:13 UTC (rev 1960)
@@ -61,6 +61,8 @@
@Mojo(name = "parserTapestry", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserTapestryMojo extends AbstractI18nParserMojo {
+ public static final String DEFAULT_INCLUDES = "**/*.tml";
+
/**
* Root directory of the default entry.
*
@@ -76,9 +78,8 @@
*
* @since 2.1
*/
-// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/*.tml", required = true)
- @Parameter(property = "i18n.defaultIncludes")
- protected String defaultIncludes ="**\\/*.tml";
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
/**
* Defines the file name of the getter where to put detected i18n keys
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 2012-07-09 12:52:24 UTC (rev 1959)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java 2012-07-09 12:53:13 UTC (rev 1960)
@@ -54,19 +54,21 @@
@Mojo(name = "parserValidation", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserValidationMojo extends AbstractParserXmlMojo {
+ public static final String DEFAULT_INCLUDES = "**/*-validation.xml";
+
final URL xworksResource = getClass().getResource("/xwork-validator-1.0.2.dtd");
/** Root directory of the default entry. */
@Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/resources", required = true)
protected File defaultBasedir;
- /** Default included files to process (ant-like expression).
- *
+ /**
+ * Default included files to process (ant-like expression).
+ * <p/>
* <strong>Note:</strong> default value is **\/**-validation.xml
- * */
-// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/**-validation.xml", required = true)
- @Parameter(property = "i18n.defaultIncludes")
- protected String defaultIncludes ="**\\/**-validation.xml";
+ */
+ @Parameter(property = "i18n.defaultIncludes", defaultValue = DEFAULT_INCLUDES, required = true)
+ protected String defaultIncludes;
/**
* Defines the core rules file used to detect i18n keys in xml validation
@@ -175,7 +177,7 @@
return new EntityResolver() {
public static final String XWORK_PUBLIC_ID =
- "-//OpenSymphony Group//XWork Validator 1.0.2//EN";
+ "-//Apache Struts//XWork Validator 1.0.3//EN";
boolean useLocal = useLocalResolver;
Added: trunk/maven-i18n-plugin/src/main/resources/xwork-validator-1.0.3.dtd
===================================================================
--- trunk/maven-i18n-plugin/src/main/resources/xwork-validator-1.0.3.dtd (rev 0)
+++ trunk/maven-i18n-plugin/src/main/resources/xwork-validator-1.0.3.dtd 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ XWork Validators DTD.
+ Used the following DOCTYPE.
+
+ <!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+-->
+
+
+<!ELEMENT validators (field|validator)+>
+
+<!ELEMENT field (field-validator+)>
+<!ATTLIST field
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT field-validator (param*, message)>
+<!ATTLIST field-validator
+ type CDATA #REQUIRED
+ short-circuit (true|false) "false"
+>
+
+<!ELEMENT validator (param*, message)>
+<!ATTLIST validator
+ type CDATA #REQUIRED
+ short-circuit (true|false) "false"
+>
+
+<!ELEMENT param (#PCDATA)>
+<!ATTLIST param
+ name CDATA #REQUIRED
+>
+
+<!ELEMENT message (#PCDATA|param)*>
+<!ATTLIST message
+ key CDATA #IMPLIED
+>
+
+
Added: trunk/maven-i18n-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java
===================================================================
--- trunk/maven-i18n-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java (rev 0)
+++ trunk/maven-i18n-plugin/src/test/java/org/nuiton/i18n/plugin/parser/SourceEntryTest.java 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1,43 @@
+package org.nuiton.i18n.plugin.parser;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.i18n.plugin.parser.impl.ParserJavaMojo;
+import org.nuiton.i18n.plugin.parser.impl.ParserValidationMojo;
+
+import java.io.File;
+
+/**
+ * Tests the {@link SourceEntry}.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.4.3
+ */
+public class SourceEntryTest {
+
+ @Test
+ public void testGetIncludedFiles() throws Exception {
+ SourceEntry entry = new SourceEntry();
+ File basedir = new File(".");
+
+ File defaultBasedir = new File(basedir, "src" + File.separator + "test" + File.separator + "java");
+ File defaultBasedir2 = new File(basedir, "src" + File.separator + "test" + File.separator + "resources");
+
+ String[] includedFiles;
+
+ includedFiles = entry.getIncludedFiles(defaultBasedir,
+ new String[]{ParserJavaMojo.DEFAULT_INCLUDES},
+ I18nSourceEntry.EMPTY_STRING_ARRAY);
+ Assert.assertNotNull(includedFiles);
+ Assert.assertTrue(includedFiles.length > 0);
+
+
+ includedFiles = entry.getIncludedFiles(defaultBasedir2,
+ new String[]{ParserValidationMojo.DEFAULT_INCLUDES},
+ I18nSourceEntry.EMPTY_STRING_ARRAY);
+ Assert.assertNotNull(includedFiles);
+ Assert.assertTrue(includedFiles.length > 0);
+
+
+ }
+}
Copied: trunk/maven-i18n-plugin/src/test/resources/MyBean-validation.xml (from rev 1957, trunk/maven-i18n-plugin/src/it/parsers/withNewKeys/src/main/resources/org/nuiton/i18n/test/MyBean-validation.xml)
===================================================================
--- trunk/maven-i18n-plugin/src/test/resources/MyBean-validation.xml (rev 0)
+++ trunk/maven-i18n-plugin/src/test/resources/MyBean-validation.xml 2012-07-09 12:53:13 UTC (rev 1960)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ #%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%
+ -->
+
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <validator type="required">
+ <message>validationGetter.key3</message>
+ </validator>
+
+ <field name="field1">
+
+ <field-validator type="required">
+ <message>validationGetter.key1</message>
+ </field-validator>
+
+ </field>
+
+ <field name="field2">
+
+ <field-validator type="required">
+ <message>validationGetter.key2##${parm1}</message>
+ </field-validator>
+
+ </field>
+
+</validators>
1
0
Author: tchemit
Date: 2012-07-09 14:52:24 +0200 (Mon, 09 Jul 2012)
New Revision: 1959
Url: http://nuiton.org/repositories/revision/i18n/1959
Log:
fix site scm url
Modified:
trunk/nuiton-i18n/src/site/site_en.xml
trunk/nuiton-i18n/src/site/site_fr.xml
Modified: trunk/nuiton-i18n/src/site/site_en.xml
===================================================================
--- trunk/nuiton-i18n/src/site/site_en.xml 2012-07-09 10:17:13 UTC (rev 1958)
+++ trunk/nuiton-i18n/src/site/site_en.xml 2012-07-09 12:52:24 UTC (rev 1959)
@@ -103,7 +103,7 @@
projectversion='${project.version}'
platform='${project.platform}'
projectid='${project.projectId}'
- scm='${project.scm.connection}'
+ scm='${project.scm.developerConnection}'
scmwebeditorenabled='${project.scmwebeditorEnabled}'
scmwebeditorurl='${project.scmwebeditorUrl}'
siteSourcesType='${project.siteSourcesType}'
Modified: trunk/nuiton-i18n/src/site/site_fr.xml
===================================================================
--- trunk/nuiton-i18n/src/site/site_fr.xml 2012-07-09 10:17:13 UTC (rev 1958)
+++ trunk/nuiton-i18n/src/site/site_fr.xml 2012-07-09 12:52:24 UTC (rev 1959)
@@ -101,7 +101,7 @@
projectversion='${project.version}'
platform='${project.platform}'
projectid='${project.projectId}'
- scm='${project.scm.connection}'
+ scm='${project.scm.developerConnection}'
scmwebeditorenabled='${project.scmwebeditorEnabled}'
scmwebeditorurl='${project.scmwebeditorUrl}'
siteSourcesType='${project.siteSourcesType}'
1
0
r1958 - in trunk: . maven-i18n-plugin maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl maven-i18n-plugin/src/site src/site
by tchemit@users.nuiton.org 09 Jul '12
by tchemit@users.nuiton.org 09 Jul '12
09 Jul '12
Author: tchemit
Date: 2012-07-09 12:17:13 +0200 (Mon, 09 Jul 2012)
New Revision: 1958
Url: http://nuiton.org/repositories/revision/i18n/1958
Log:
fixes #2175: Updates to mavenpom 3.3.4
fixes #928: Use maven-plugin-plugin 3 api
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/AbstractI18nBundleMojo.java
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/AvailableConverterMojo.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/parser/AbstractI18nParserMojo.java
trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java
trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.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/ParserJspMojo.java
trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.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
trunk/maven-i18n-plugin/src/site/site_en.xml
trunk/maven-i18n-plugin/src/site/site_fr.xml
trunk/pom.xml
trunk/src/site/site_en.xml
trunk/src/site/site_fr.xml
Modified: trunk/maven-i18n-plugin/pom.xml
===================================================================
--- trunk/maven-i18n-plugin/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/pom.xml 2012-07-09 10:17:13 UTC (rev 1958)
@@ -94,6 +94,12 @@
<artifactId>maven-plugin-api</artifactId>
</dependency>
+ <!-- dependencies to mojo annotations -->
+ <dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ </dependency>
+
<!-- FIXME si on ne le rajoute pas, on se retrouve avec la version 1.1 qui ne convient pas -->
<dependency>
<groupId>org.codehaus.plexus</groupId>
@@ -147,10 +153,14 @@
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
+ <configuration>
+ <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
+ </configuration>
<executions>
<execution>
<goals>
<goal>helpmojo</goal>
+ <goal>descriptor</goal>
</goals>
</execution>
</executions>
@@ -175,6 +185,29 @@
<plugins>
<plugin>
+ <artifactId>maven-project-info-reports-plugin</artifactId>
+ <version>${projectInfoReportsPluginVersion}</version>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>project-team</report>
+ <report>mailing-list</report>
+ <report>cim</report>
+ <report>issue-tracking</report>
+ <report>license</report>
+ <report>scm</report>
+ <report>dependencies</report>
+ <report>dependency-convergence</report>
+ <report>plugin-management</report>
+ <report>plugins</report>
+ <report>dependency-management</report>
+ <report>summary</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+
+ <plugin>
<artifactId>maven-plugin-plugin</artifactId>
<version>${pluginPluginVersion}</version>
</plugin>
@@ -190,6 +223,34 @@
<version>${plexusPluginVersion}</version>
</plugin>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>${javadocPluginVersion}</version>
+ <configuration>
+ <quiet>true</quiet>
+ <tagletArtifacts>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>${pluginPluginVersion}</version>
+ </tagletArtifact>
+ <tagletArtifact>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-javadoc</artifactId>
+ <version>1.5.5</version>
+ </tagletArtifact>
+ </tagletArtifacts>
+ </configuration>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>javadoc</report>
+ <report>test-javadoc</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+
</plugins>
</reporting>
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -25,6 +25,8 @@
package org.nuiton.i18n.plugin;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.nuiton.i18n.I18nUtil;
import org.nuiton.plugin.AbstractPlugin;
@@ -55,20 +57,17 @@
/**
* Dependance du projet.
*
- * @parameter default-value="${project}"
- * @required
* @since 1.0.2
*/
+ @Component
protected MavenProject project;
/**
* 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
*/
+ @Parameter(property = "i18n.artifactId", defaultValue = "${project.artifactId}", readonly = true)
protected String artifactId;
/**
@@ -76,34 +75,20 @@
* <p/>
* Example :
* <pre>fr_FR,en_GB</pre>
- *
- * @parameter expression="${i18n.bundles}" default-value="fr_FR,en_GB"
- * @required
*/
+ @Parameter(property = "i18n.bundles", defaultValue = "fr_FR,en_GB", required = true)
protected String bundles;
- /**
- * Directory where to find project i18n files.
- *
- * @parameter expression="${i18n.src}" default-value="${basedir}/src/main/resources/i18n"
- * @required
- */
+ /** Directory where to find project i18n files. */
+ @Parameter(property = "i18n.src", defaultValue = "\"${basedir}/src/main/resources/i18n", required = true)
protected File src;
- /**
- * Directory where to generate i18n files.
- *
- * @parameter expression="${i18n.out}" default-value="${basedir}/target/generated-sources/i18n"
- * @required
- */
+ /** Directory where to generate i18n files. */
+ @Parameter(property = "i18n.out", defaultValue = "${basedir}/target/generated-sources/i18n", required = true)
protected File out;
- /**
- * Encoding used to load and store properties.
- *
- * @parameter expression="${i18n.encoding}" default-value="${project.build.sourceEncoding}"
- * @required
- */
+ /** Encoding used to load and store properties. */
+ @Parameter(property = "i18n.encoding", defaultValue = "${project.build.sourceEncoding}", required = true)
protected String encoding;
/**
@@ -111,26 +96,24 @@
* <p/>
* <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"
*/
+ @Parameter(property = "i18n.genSrc", defaultValue = "true")
protected boolean genSrc;
/**
* Verbose flag.
* <p/>
* <b>Note :</b> if not setted, we used the {@code maven.verbose} property.
- *
- * @parameter expression="${i18n.verbose}" default-value="${maven.verbose}"
*/
+ @Parameter(property = "i18n.verbose", defaultValue = "${maven.verbose}")
protected boolean verbose;
/**
* Silent flag to see only errors in console.
*
- * @parameter expression="${i18n.silent}" default-value="false"
* @since 1.0.0-rc-5
*/
+ @Parameter(property = "i18n.silent", defaultValue = "false")
protected boolean silent;
/**
@@ -138,9 +121,8 @@
* <p/>
* <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"
*/
+ @Parameter(property = "i18n.strictMode", defaultValue = "false")
protected boolean strictMode;
/** locales to process */
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -25,6 +25,10 @@
package org.nuiton.i18n.plugin;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.io.SortedProperties;
import java.io.File;
@@ -36,19 +40,17 @@
*
* @author jruchaud <ruchaud(a)codelutin.com>
* @author chemit <chemit(a)codelutin.com>
- * @goal gen
- * @phase generate-resources
- * @execute goal=get
*/
+@Mojo(name = "gen", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
+@Execute(goal = "get")
public class GenerateMojo extends AbstractI18nMojo {
/**
* A flag to check that bundles are complete (no missing i18n translations).
*
- * @parameter expression="${i18n.checkBundle}" default-value="true"
- * @required
* @since 1.0.0
*/
+ @Parameter(property = "i18n.checkBundle", defaultValue = "true", required = true)
protected boolean checkBundle;
/**
@@ -56,28 +58,25 @@
* <p/>
* <b>Note :</b> Need the {@link #checkBundle} to be activated).
*
- * @parameter expression="${i18n.showEmpty}" default-value="false"
- * @required
* @since 1.0.0
*/
+ @Parameter(property = "i18n.showEmpty", defaultValue = "false", required = true)
protected boolean showEmpty;
/**
* To keep a backup of old i18n bundles (suffiex by a {@code ~}).
* <p/>
* <b>Note: </b> By default, this property is not active.
- *
- * @parameter expression="${i18n.keepBackup}" default-value="false"
*/
+ @Parameter(property = "i18n.keepBackup", defaultValue = "false")
protected boolean keepBackup;
/**
* To keep generated getter files.
* <p/>
* <b>Note: </b> By default, this property is not active.
- *
- * @parameter expression="${i18n.keepGetters}" default-value="false"
*/
+ @Parameter(property = "i18n.keepGetters", defaultValue = "false")
protected boolean keepGetters;
@Override
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -25,6 +25,9 @@
package org.nuiton.i18n.plugin;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.codehaus.plexus.util.DirectoryScanner;
import org.nuiton.io.SortedProperties;
import org.nuiton.plugin.PluginHelper;
@@ -37,18 +40,16 @@
* Recupere les différents fichiers des parsers en un fichier de proprietes.
*
* @author julien
- * @goal get
- * @phase generate-resources
*/
+@Mojo(name = "get", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class GetterMojo extends AbstractI18nMojo {
/**
* To keep generated getter files.
* <p/>
* <b>Note: </b> By default, this property is not active.
- *
- * @parameter expression="${i18n.keepGetters}" default-value="false"
*/
+ @Parameter(property = "i18n.keepGetters", defaultValue = "false")
protected boolean keepGetters;
protected static final String FROM_GETTERS = "-fromGetters";
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractI18nBundleMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -25,6 +25,7 @@
package org.nuiton.i18n.plugin.bundle;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.AbstractI18nMojo;
import java.io.File;
@@ -41,22 +42,19 @@
public abstract class AbstractI18nBundleMojo extends AbstractI18nMojo {
/**
- * Repertoire ou generer les bundles.
+ * Directory where to generate bundles.
*
- * @parameter expression="${i18n.collectOutputDir}" default-value="${basedir}/target/i18n"
- * @required
* @since 1.0.2
*/
+ @Parameter(property = "i18n.collectOutputDir", defaultValue = "${basedir}/target/i18n", required = true)
protected File collectOutputDir;
/**
- * Nom de base des fichiers qui contient les localisations des bundles.
+ * BAse name of file which contains bundles locations.
*
- * @parameter expression="${i18n.collectOutputName}"
- * default-value="collect-${project.artifactId}-i18n"
- * @required
* @since 1.0.2
*/
+ @Parameter(property = "i18n.collectOutputName", defaultValue = "collect-${project.artifactId}-i18n", required = true)
protected String collectOutputName;
/**
Modified: 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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AbstractMakeI18nBundleMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -27,6 +27,7 @@
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Parameter;
import java.io.File;
import java.io.IOException;
@@ -48,9 +49,9 @@
* <p/>
* If not defined, will use the {@link #encoding} parameter.
*
- * @parameter expression="${i18n.bundleInputEncoding}"
* @since 2.4
*/
+ @Parameter(property = "i18n.bundleInputEncoding")
protected String bundleInputEncoding;
/**
@@ -58,19 +59,18 @@
* <p/>
* If not defined, will use the {@link #encoding} parameter.
*
- * @parameter expression="${i18n.bundleOutputEncoding}"
* @since 2.4
*/
+ @Parameter(property = "i18n.bundleOutputEncoding")
protected String bundleOutputEncoding;
/**
* Root directory where to generate aggregated bundles (this directory will
* be added as resources of the project).
*
- * @parameter expression="${i18n.bundleOutputDir}" default-value="${basedir}/target/generated-sources/resources"
- * @required
* @since 1.0.0
*/
+ @Parameter(property = "i18n.bundleOutputDir", defaultValue = "${basedir}/target/generated-sources/resources", required = true)
protected File bundleOutputDir;
/**
@@ -88,28 +88,26 @@
* directory : foo/bar
* </pre>
*
- * @parameter expression="${i18n.bundleOutputPackage}" default-value="META-INF"
- * @required
* @since 2.3.2
*/
+ @Parameter(property = "i18n.bundleOutputPackage", defaultValue = "META-INF", required = true)
protected String bundleOutputPackage;
/**
* Name of the bundle to generate.
*
- * @parameter expression="${i18n.bundleOutputName}" default-value="${project.artifactId}-i18n"
- * @required
* @since 1.0.2
*/
+ @Parameter(property = "i18n.bundleOutputName", defaultValue = "${project.artifactId}-i18n", required = true)
protected String bundleOutputName;
/**
* A flag to generate a bundle with the first locale defined as a default
* bundle (with no locale specialization).
*
- * @parameter expression="${i18n.generateDefaultLocale}" default-value="false"
* @since 2.1
*/
+ @Parameter(property = "i18n.generateDefaultLocale", defaultValue = "false")
protected boolean generateDefaultLocale;
/**
@@ -117,9 +115,9 @@
* <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
*/
+ @Parameter(property = "i18n.checkBundle", defaultValue = "true")
protected boolean checkBundle;
/**
@@ -127,9 +125,9 @@
* <p/>
* <b>Note :</b> Need the {@link #checkBundle} to be activated).
*
- * @parameter expression="${i18n.showEmpty}" default-value="false"
* @since 1.0.0
*/
+ @Parameter(property = "i18n.showEmpty", defaultValue = "false")
protected boolean showEmpty;
/**
@@ -139,9 +137,9 @@
* <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
*/
+ @Parameter(property = "i18n.failsIfWarning", defaultValue = "false")
protected boolean failsIfWarning;
/** to keep all none translated i18n keys by locale. */
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/AvailableConverterMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -24,6 +24,9 @@
*/
package org.nuiton.i18n.plugin.bundle;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.ResolutionScope;
import org.nuiton.plugin.AbstractAvailableDataMojo;
import java.util.Arrays;
@@ -37,19 +40,20 @@
*
* @author fdesbois <desbois(a)codelutin.com>
* $Id$
- * @goal available-converters
- * @requiresProject true
- * @requiresDirectInvocation true
- * @requiresDependencyResolution test
* @since 2.4
*/
+@Mojo(name = "available-converters",
+ requiresProject = true,
+ requiresDirectInvocation = true,
+ requiresDependencyResolution = ResolutionScope.TEST)
public class AvailableConverterMojo extends AbstractAvailableDataMojo {
/**
* Map of all availables {@link BundleFormatConverter}.
*
- * @component role="org.nuiton.i18n.plugin.bundle.BundleFormatConverter"
+ * @since 2.4
*/
+ @Component(role = BundleFormatConverter.class)
protected Map<String, BundleFormatConverter> bundleFormatConverters;
@Override
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -27,6 +27,12 @@
import org.apache.commons.lang.StringUtils;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.Execute;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
import org.nuiton.i18n.bundle.I18nBundleEntry;
import org.nuiton.i18n.bundle.I18nBundleUtil;
import org.nuiton.i18n.init.DefaultI18nInitializer;
@@ -61,13 +67,13 @@
* This goal permits this using the dependencies graph order of artifacts.
*
* @author tchemit <chemit(a)codelutin.com>
- * @goal bundle
- * @phase generate-resources
- * @execute goal=collect-i18n-artifacts
- * @requiresProject true
- * @requiresDependencyResolution runtime
* @since 0.12
*/
+@Mojo(name = "bundle",
+ defaultPhase = LifecyclePhase.GENERATE_RESOURCES,
+ requiresProject = true,
+ requiresDependencyResolution = ResolutionScope.RUNTIME)
+@Execute(goal = "collect-i18n-artifacts")
public class BundleMojo extends AbstractMakeI18nBundleMojo {
/**
@@ -76,25 +82,25 @@
* 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
*/
+ @Parameter(property = "i18n.generateDefinitionFile", defaultValue = "true")
protected boolean generateDefinitionFile;
/**
* Converter used to change format of bundles.
*
- * @parameter expression="${i18n.bundleFormatConverter}"
* @since 2.4
*/
+ @Parameter(property = "i18n.bundleFormatConverter")
protected String bundleFormatConverter;
/**
* Map of all availables {@link BundleFormatConverter}.
*
- * @component role="org.nuiton.i18n.plugin.bundle.BundleFormatConverter"
* @since 2.4
*/
+ @Component(role = BundleFormatConverter.class)
protected Map<String, BundleFormatConverter> bundleFormatConverters;
/** Format converter to apply if */
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -32,6 +32,11 @@
import org.apache.maven.artifact.resolver.ArtifactCollector;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.shared.dependency.tree.DependencyNode;
import org.apache.maven.shared.dependency.tree.DependencyTreeBuilder;
import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
@@ -55,54 +60,52 @@
* aggregated bundle.
*
* @author tchemit <chemit(a)codelutin.com>
- * @goal collect-i18n-artifacts
- * @phase generate-resources
- * @requiresProject true
- * @requiresDependencyResolution runtime
* @since 1.0.2
*/
+@Mojo(name = "collect-i18n-artifacts",
+ defaultPhase = LifecyclePhase.GENERATE_RESOURCES,
+ requiresProject = true,
+ requiresDependencyResolution = ResolutionScope.RUNTIME)
public class CollectI18nArtifactsMojo extends AbstractI18nBundleMojo {
/**
* Local Repository.
*
- * @parameter expression="${localRepository}"
- * @required
- * @readonly
* @since 1.0.2
*/
+ @Parameter(property = "localRepository", required = true, readonly = true)
protected ArtifactRepository localRepository;
/**
* Dependency tree builder component.
*
- * @component
* @since 1.0.2
*/
+ @Component
protected DependencyTreeBuilder dependencyTreeBuilder;
/**
* Artifact Factory component.
*
- * @component
* @since 1.0.2
*/
+ @Component
protected ArtifactFactory factory;
/**
* Artifact metadata source component.
*
- * @component
* @since 1.0.2
*/
+ @Component
protected ArtifactMetadataSource artifactMetadataSource;
/**
* Artifact collector component.
*
- * @component
* @since 1.0.2
*/
+ @Component
protected ArtifactCollector collector;
I18nArtifact[] i18nArtifacts;
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -25,6 +25,7 @@
package org.nuiton.i18n.plugin.parser;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.AbstractI18nMojo;
import org.nuiton.io.FileUpdater;
import org.nuiton.io.SortedProperties;
@@ -65,25 +66,16 @@
*/
public abstract FileUpdater newFileUpdater(SourceEntry entry);
- /**
- * Build directory (used to know if files in sources are up-to-date).
- *
- * @parameter expression="${i18n.cp}" default-value="${basedir}/target/classes"
- */
+ /** Build directory (used to know if files in sources are up-to-date). */
+ @Parameter(property = "i18n.cp", defaultValue = "${basedir}/target/classes")
protected File cp;
- /**
- * To treate default entry offered by the mojo.
- *
- * @parameter expression="${i18n.treateDefaultEntry}" default-value="true"
- */
+ /** To treat default entry offered by the mojo. */
+ @Parameter(property = "i18n.treateDefaultEntry", defaultValue = "true")
protected boolean treateDefaultEntry;
- /**
- * Source entries (src+includes+excludes) to process.
- *
- * @parameter expression="${i18n.entries}"
- */
+ /** Source entries (src+includes+excludes) to process. */
+ @Parameter(property = "i18n.entries")
protected I18nSourceEntry[] entries;
/**
@@ -92,9 +84,9 @@
* 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
*/
+ @Parameter(property = "i18n.showTouchedFiles", defaultValue = "${maven.verbose}")
protected boolean showTouchedFiles;
/**
@@ -103,17 +95,17 @@
* Note: by default, do not perform backup (but it was here originaly so let
* it possible...)
*
- * @parameter expression="${i18n.backupGetter}" default-value="false"
* @since 1.0.2
*/
+ @Parameter(property = "i18n.backupGetter", defaultValue = "false")
protected boolean backupGetter;
/**
* To force reparse of all sources.
*
- * @parameter expression="${i18n.force}" default-value="false"
* @since 1.2
*/
+ @Parameter(property = "i18n.force", defaultValue = "false")
protected boolean force;
private SortedProperties result;
@@ -229,8 +221,7 @@
entry.getFoudFiles() + " files)");
}
- for (int i = 0, max = files.length; i < max; i++) {
- String file1 = files[i];
+ for (String file1 : files) {
String fileName = entry.getBasedir().getAbsolutePath() +
File.separator + file1;
File file = new File(fileName);
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -28,6 +28,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.parser.AbstractFileParser;
import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
import org.nuiton.i18n.plugin.parser.FileParser;
@@ -86,9 +87,9 @@
* <b>Note : </b> If the {@code coreRulesFile} is not defined, then you must
* fill this parameter.
*
- * @parameter
* @since 2.0
*/
+ @Parameter
protected String[] userRulesFiles;
/**
@@ -101,9 +102,9 @@
* </namespaces>
* </pre>
*
- * @parameter
* @since 2.0
*/
+ @Parameter
protected Map<String, String> namespaces;
protected abstract String getCoreRuleFile();
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -25,6 +25,9 @@
package org.nuiton.i18n.plugin.parser.impl;
import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.parser.AbstractFileParser;
import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
import org.nuiton.i18n.plugin.parser.FileParser;
@@ -55,41 +58,39 @@
* phase, otherwise all files will be considered as uptodate.
*
* @author tchemit <chemit(a)codelutin.com>
- * @goal parserGWTJava
- * @phase generate-resources
* @since 2.1
*/
+@Mojo(name = "parserGWTJava", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserGWTJavaMojo extends AbstractI18nParserMojo {
- /**
- * Root directory of the default entry.
- *
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/java"
- */
+ /** Root directory of the default entry. */
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/java")
protected File defaultBasedir;
/**
* Default included files to process (ant-like expression).
- *
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/*.java"
+ * <p/>
+ * <strong>Note:</strong> default value is **\/*.java
*/
- protected String defaultIncludes;
+// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/*.java", required = true)
+ @Parameter(property = "i18n.defaultIncludes")
+ protected String defaultIncludes = "**\\/*.java";
/**
* Defines the file name of the getter where to put detected i18n keys
* while getter phase.
*
- * @parameter expression="${i18n.outputGetter}" default-value="gwt-java.getter"
* @since 2.0
*/
+ @Parameter(property = "i18n.outputGetter", defaultValue = "gwt-java.getter")
protected String outputGetter;
/**
* Where to generated temporary processed files.
*
- * @parameter expression="${i18n.workdir}" default-value="${basedir}/target/i18n-workdir"
* @since 2.0
*/
+ @Parameter(property = "i18n.workdir", defaultValue = "${basedir}/target/i18n-workdir")
protected File workdir;
protected MirroredFileUpdater entryUpdater;
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -26,6 +26,9 @@
package org.nuiton.i18n.plugin.parser.impl;
import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.parser.AbstractFileParser;
import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
import org.nuiton.i18n.plugin.parser.FileParser;
@@ -52,32 +55,30 @@
*
* @author jruchaud <ruchaud(a)codelutin.com>
* @author tchemit <tchemit(a)codelutin.com>
- * @goal parserJava
- * @phase generate-resources
*/
+@Mojo(name = "parserJava", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserJavaMojo extends AbstractI18nParserMojo {
- /**
- * Root directory of the default entry.
- *
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/java"
- */
+ /** Root directory of the default entry. */
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/java")
protected File defaultBasedir;
/**
* Default included files to process (ant-like expression).
- *
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/*.java"
+ * <p/>
+ * <strong>Note:</strong> default value is **\/*.java
*/
- protected String defaultIncludes;
+// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/*.java", required = true)
+ @Parameter(property = "i18n.defaultIncludes")
+ protected String defaultIncludes = "**\\/*.java";
/**
* Defines the file name of the getter where to put detected i18n keys
* while getter phase.
*
- * @parameter expression="${i18n.outputGetter}" default-value="java.getter"
* @since 2.0
*/
+ @Parameter(property = "i18n.outputGetter", defaultValue = "java.getter")
protected String outputGetter;
@Override
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -26,6 +26,9 @@
package org.nuiton.i18n.plugin.parser.impl;
import org.apache.commons.lang.StringUtils;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
import org.nuiton.i18n.plugin.parser.SourceEntry;
import org.nuiton.io.FileUpdater;
@@ -47,26 +50,29 @@
* phase, otherwise all files will be considered as uptodate.
*
* @author tchemit <chemit(a)codelutin.com>
- * @goal parserJsp
- * @phase generate-resources
* @since 2.0
*/
+@Mojo(name = "parserJsp", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserJspMojo extends AbstractParserXmlMojo {
/**
* Root directory of the default entry.
*
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/webapp"
- * @required
+ * @since 2.0
*/
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/webapp", required = true)
protected File defaultBasedir;
/**
* Default included files to process (ant-like expression).
+ * <p/>
+ * <strong>Note:</strong> default value is **\/**.jsp
*
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/**.jsp"
+ * @since 2.0
*/
- protected String defaultIncludes;
+// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/**.jsp", required = true)
+ @Parameter(property = "i18n.defaultIncludes")
+ protected String defaultIncludes = "**\\/**.jsp";
/**
* Defines the core rules file used to detect i18n keys in jsp files.
@@ -74,26 +80,26 @@
* <b>Note :</b> If you do not want to use it, set it to empty and fill the
* {@link #userRulesFiles} parameter.
*
- * @parameter expression="${i18n.coreRuleFile}"
* @since 2.0
*/
+ @Parameter(property = "i18n.coreRuleFile")
protected String coreRuleFile;
/**
* Defines the file name of the getter where to put detected i18n keys
* while getter phase.
*
- * @parameter expression="${i18n.outputGetter}" default-value="jsp.getter"
* @since 2.0
*/
+ @Parameter(property = "i18n.outputGetter", defaultValue = "jsp.getter", required = true)
protected String outputGetter;
/**
* Where to generated temporary processed files.
*
- * @parameter expression="${i18n.workdir}" default-value="${basedir}/target/i18n-workdir"
* @since 2.0
*/
+ @Parameter(property = "i18n.workdir", defaultValue = "${basedir}/target/i18n-workdir", required = true)
protected File workdir;
@Override
Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java
===================================================================
--- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -25,6 +25,9 @@
package org.nuiton.i18n.plugin.parser.impl;
import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.parser.AbstractFileParser;
import org.nuiton.i18n.plugin.parser.AbstractI18nParserMojo;
import org.nuiton.i18n.plugin.parser.FileParser;
@@ -53,41 +56,45 @@
* phase, otherwise all files will be considered as uptodate.
*
* @author tchemit <chemit(a)codelutin.com>
- * @goal parserTapestry
- * @phase generate-resources
* @since 2.1
*/
+@Mojo(name = "parserTapestry", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserTapestryMojo extends AbstractI18nParserMojo {
/**
* Root directory of the default entry.
*
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/webapp"
+ * @since 2.1
*/
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/webapp", required = true)
protected File defaultBasedir;
/**
* Default included files to process (ant-like expression).
*
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/*.tml"
+ * <strong>Note:</strong> default value is **\/*.tml
+ *
+ * @since 2.1
*/
- protected String defaultIncludes;
+// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/*.tml", required = true)
+ @Parameter(property = "i18n.defaultIncludes")
+ protected String defaultIncludes ="**\\/*.tml";
/**
* Defines the file name of the getter where to put detected i18n keys
* while getter phase.
*
- * @parameter expression="${i18n.outputGetter}" default-value="tapestry.getter"
- * @since 2.0
+ * @since 2.1
*/
+ @Parameter(property = "i18n.outputGetter", defaultValue = "tapestry.getter", required = true)
protected String outputGetter;
/**
* Where to generated temporary processed files.
*
- * @parameter expression="${i18n.workdir}" default-value="${basedir}/target/i18n-workdir"
- * @since 2.0
+ * @since 2.1
*/
+ @Parameter(property = "i18n.workdir", defaultValue = "${basedir}/target/i18n-workdir")
protected File workdir;
protected MirroredFileUpdater entryUpdater;
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -25,6 +25,9 @@
package org.nuiton.i18n.plugin.parser.impl;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
import org.nuiton.i18n.plugin.parser.SourceEntry;
import org.nuiton.io.FileUpdater;
@@ -47,27 +50,23 @@
* phase, otherwise all files will be considered as uptodate.
*
* @author tchemit <chemit(a)codelutin.com>
- * @goal parserValidation
- * @phase generate-resources
*/
+@Mojo(name = "parserValidation", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserValidationMojo extends AbstractParserXmlMojo {
final URL xworksResource = getClass().getResource("/xwork-validator-1.0.2.dtd");
- /**
- * Root directory of the default entry.
- *
- * @parameter expression="${i18n.defaultBasedir}" default-value="${basedir}/src/main/resources"
- * @required
- */
+ /** Root directory of the default entry. */
+ @Parameter(property = "i18n.defaultBasedir", defaultValue = "${basedir}/src/main/resources", required = true)
protected File defaultBasedir;
- /**
- * Default included files to process (ant-like expression).
+ /** Default included files to process (ant-like expression).
*
- * @parameter expression="${i18n.defaultIncludes}" default-value="**\/**-validation.xml"
- */
- protected String defaultIncludes;
+ * <strong>Note:</strong> default value is **\/**-validation.xml
+ * */
+// @Parameter(property = "i18n.defaultIncludes", defaultValue = "**\\/**-validation.xml", required = true)
+ @Parameter(property = "i18n.defaultIncludes")
+ protected String defaultIncludes ="**\\/**-validation.xml";
/**
* Defines the core rules file used to detect i18n keys in xml validation
@@ -76,26 +75,26 @@
* <b>Note :</b> If you do not want to use it, set it to empty and fill the
* {@link #userRulesFiles} parameter.
*
- * @parameter expression="${i18n.coreRuleFile}" default-value="validation.rules"
* @since 2.0
*/
+ @Parameter(property = "i18n.coreRuleFile", defaultValue = "validation.rules", required = true)
protected String coreRuleFile;
/**
* Always use the local xowrks dtd to increase performance.
*
- * @parameter expression="${i18n.useLocalResolver}" default-value="true"
* @since 1.6.0
*/
+ @Parameter(property = "i18n.useLocalResolver", defaultValue = "true")
protected boolean useLocalResolver;
/**
* 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
*/
+ @Parameter(property = "i18n.outputGetter", defaultValue = "validation.getter", required = true)
protected String outputGetter;
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 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java 2012-07-09 10:17:13 UTC (rev 1958)
@@ -24,6 +24,9 @@
*/
package org.nuiton.i18n.plugin.parser.impl;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
import org.nuiton.i18n.plugin.parser.I18nSourceEntry;
import org.nuiton.i18n.plugin.parser.SourceEntry;
import org.nuiton.io.FileUpdater;
@@ -42,45 +45,42 @@
* uptodate.
*
* @author tchemit <chemit(a)codelutin.com>
- * @goal parserXml
- * @phase generate-resources
* @since 2.0
*/
+@Mojo(name = "parserXml", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
public class ParserXmlUserMojo extends AbstractParserXmlMojo {
/**
* Default directory where to look for files.
*
- * @parameter expression="${i18n.xmlBasedir}" default-value="${basedir}/src/main/resources"
- * @required
* @since 2.0
*/
+ @Parameter(property = "i18n.xmlBasedir", defaultValue = "${basedir}/src/main/resources", required = true)
protected File basedir;
/**
* Defines files to parse.
*
- * @parameter expression="${i18n.xmlIncludes}"
- * @required
* @since 2.0
*/
+ @Parameter(property = "i18n.xmlIncludes", required = true)
protected String includes;
/**
* Defines an optional files which contain xpath rules to obtain i18n
* keys in xml files and is defined in plugin.
*
- * @parameter expression="${i18n.coreRuleFiles}"
* @since 2.0
*/
+ @Parameter(property = "i18n.coreRuleFiles")
protected String coreRuleFile;
/**
* Defines the file name of the getter where to put detected i18n keys while getter phase.
*
- * @parameter expression="${i18n.outputGetter}" default-value="xmlUser.getter"
* @since 2.0
*/
+ @Parameter(property = "i18n.outputGetter", defaultValue = "xmlUser.getter", required = true)
protected String outputGetter;
@Override
Modified: trunk/maven-i18n-plugin/src/site/site_en.xml
===================================================================
--- trunk/maven-i18n-plugin/src/site/site_en.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/site/site_en.xml 2012-07-09 10:17:13 UTC (rev 1958)
@@ -123,7 +123,7 @@
projectversion='${project.version}'
platform='${project.platform}'
projectid='${project.projectId}'
- scm='${project.scm.connection}'
+ scm='${project.scm.developerConnection}'
scmwebeditorenabled='${project.scmwebeditorEnabled}'
scmwebeditorurl='${project.scmwebeditorUrl}'
siteSourcesType='${project.siteSourcesType}'
Modified: trunk/maven-i18n-plugin/src/site/site_fr.xml
===================================================================
--- trunk/maven-i18n-plugin/src/site/site_fr.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/maven-i18n-plugin/src/site/site_fr.xml 2012-07-09 10:17:13 UTC (rev 1958)
@@ -121,7 +121,7 @@
projectversion='${project.version}'
platform='${project.platform}'
projectid='${project.projectId}'
- scm='${project.scm.connection}'
+ scm='${project.scm.developerConnection}'
scmwebeditorenabled='${project.scmwebeditorEnabled}'
scmwebeditorurl='${project.scmwebeditorUrl}'
siteSourcesType='${project.siteSourcesType}'
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/pom.xml 2012-07-09 10:17:13 UTC (rev 1958)
@@ -33,7 +33,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmineAndCentral</artifactId>
- <version>3.3.2</version>
+ <version>3.3.4</version>
</parent>
<artifactId>i18n</artifactId>
@@ -150,6 +150,13 @@
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-annotations</artifactId>
+ <version>${pluginPluginVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+
<!-- FIXME si on ne le rajoute pas, on se retrouve avec la version 1.1 qui ne convient pas -->
<dependency>
<groupId>org.codehaus.plexus</groupId>
@@ -221,6 +228,7 @@
<id>extra-modules</id>
<modules>
+ <module>nuiton-i18n-editor</module>
<module>ant-i18n-task</module>
</modules>
</profile>
Modified: trunk/src/site/site_en.xml
===================================================================
--- trunk/src/site/site_en.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/src/site/site_en.xml 2012-07-09 10:17:13 UTC (rev 1958)
@@ -114,7 +114,7 @@
projectversion='${project.version}'
platform='${project.platform}'
projectid='${project.projectId}'
- scm='${project.scm.connection}'
+ scm='${project.scm.developerConnection}'
scmwebeditorenabled='${project.scmwebeditorEnabled}'
scmwebeditorurl='${project.scmwebeditorUrl}'
siteSourcesType='${project.siteSourcesType}'
Modified: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2012-05-30 14:03:24 UTC (rev 1957)
+++ trunk/src/site/site_fr.xml 2012-07-09 10:17:13 UTC (rev 1958)
@@ -110,7 +110,7 @@
projectversion='${project.version}'
platform='${project.platform}'
projectid='${project.projectId}'
- scm='${project.scm.connection}'
+ scm='${project.scm.developerConnection}'
scmwebeditorenabled='${project.scmwebeditorEnabled}'
scmwebeditorurl='${project.scmwebeditorUrl}'
siteSourcesType='${project.siteSourcesType}'
1
0