This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch fixes
in repository https://gitbox.apache.org/repos/asf/maven-plugin-tools.git

commit 9d8ef11cf7b33bb2e5a67f55fb2ef87a7f51079e
Author: Michael Osipov <micha...@apache.org>
AuthorDate: Tue May 9 23:51:07 2023 +0200

    [MPLUGIN-472] Use Plexus I18N rather than fiddling with resource bundles 
directly
---
 maven-plugin-report-plugin/pom.xml                 |  12 ++
 .../maven/plugin/plugin/report/PluginReport.java   | 212 +++++++++++----------
 2 files changed, 120 insertions(+), 104 deletions(-)

diff --git a/maven-plugin-report-plugin/pom.xml 
b/maven-plugin-report-plugin/pom.xml
index 7e87d5dd..d5425d28 100644
--- a/maven-plugin-report-plugin/pom.xml
+++ b/maven-plugin-report-plugin/pom.xml
@@ -100,6 +100,18 @@
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
+    <!-- Plexus -->
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-i18n</artifactId>
+      <version>1.0-beta-10</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
 
     <!-- tests -->
     <dependency>
diff --git 
a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
 
b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
index 3816b4c5..525e22e9 100644
--- 
a/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
+++ 
b/maven-plugin-report-plugin/src/main/java/org/apache/maven/plugin/plugin/report/PluginReport.java
@@ -23,13 +23,12 @@ import java.io.IOException;
 import java.io.Reader;
 import java.nio.file.Files;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Optional;
-import java.util.ResourceBundle;
 
+import org.apache.maven.doxia.markup.Markup;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.tools.SiteTool;
 import org.apache.maven.model.Plugin;
@@ -56,6 +55,7 @@ import org.apache.maven.tools.plugin.generator.GeneratorUtils;
 import org.apache.maven.tools.plugin.generator.PluginXdocGenerator;
 import org.apache.maven.tools.plugin.util.PluginUtils;
 import org.codehaus.plexus.configuration.PlexusConfigurationException;
+import org.codehaus.plexus.i18n.I18N;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.XmlStreamReader;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -120,6 +120,12 @@ public class PluginReport extends AbstractMavenReport {
     @Component
     private RuntimeInformation rtInfo;
 
+    /**
+     * Internationalization component.
+     */
+    @Component
+    private I18N i18n;
+
     /**
      * Path to enhanced plugin descriptor to generate the report from (must 
contain some XHTML values)
      *
@@ -175,7 +181,7 @@ public class PluginReport extends AbstractMavenReport {
 
         // Write the overview
         PluginOverviewRenderer r = new PluginOverviewRenderer(
-                getProject(), requirementsHistories, getSink(), 
pluginDescriptor, locale, hasExtensionsToLoad);
+                getSink(), i18n, locale, getProject(), requirementsHistories, 
pluginDescriptor, hasExtensionsToLoad);
         r.render();
     }
 
@@ -189,20 +195,29 @@ public class PluginReport extends AbstractMavenReport {
         }
     }
 
+    /**
+     * @param locale The locale
+     * @param key The key to search for
+     * @return The text appropriate for the locale.
+     */
+    private String getI18nString(Locale locale, String key) {
+        return i18n.getString("plugin-report", locale, "report.plugin." + key);
+    }
+
     /**
      * {@inheritDoc}
      */
     @Override
-    public String getDescription(Locale locale) {
-        return getBundle(locale).getString("report.plugin.description");
+    public String getName(Locale locale) {
+        return getI18nString(locale, "name");
     }
 
     /**
      * {@inheritDoc}
      */
     @Override
-    public String getName(Locale locale) {
-        return getBundle(locale).getString("report.plugin.name");
+    public String getDescription(Locale locale) {
+        return getI18nString(locale, "description");
     }
 
     /**
@@ -240,62 +255,65 @@ public class PluginReport extends AbstractMavenReport {
         }
     }
 
-    /**
-     * @param locale not null
-     * @return the bundle for this report
-     */
-    protected static ResourceBundle getBundle(Locale locale) {
-        return ResourceBundle.getBundle("plugin-report", locale, 
PluginReport.class.getClassLoader());
-    }
-
     /**
      * Generates an overview page with the list of goals
      * and a link to the goal's page.
      */
     static class PluginOverviewRenderer extends AbstractMavenReportRenderer {
+        private final I18N i18n;
+
+        private final Locale locale;
+
         private final MavenProject project;
 
         private final List<RequirementsHistory> requirementsHistories;
 
         private final PluginDescriptor pluginDescriptor;
 
-        private final Locale locale;
-
         private final boolean hasExtensionsToLoad;
 
         /**
+         * @param sink                  not null
+         * @param i18n                  not null
+         * @param locale                not null
          * @param project               not null
          * @param requirementsHistories not null
-         * @param sink                  not null
          * @param pluginDescriptor      not null
-         * @param locale                not null
          */
         PluginOverviewRenderer(
+                Sink sink,
+                I18N i18n,
+                Locale locale,
                 MavenProject project,
                 List<RequirementsHistory> requirementsHistories,
-                Sink sink,
                 PluginDescriptor pluginDescriptor,
-                Locale locale,
                 boolean hasExtensionsToLoad) {
             super(sink);
 
+            this.i18n = i18n;
+
+            this.locale = locale;
+
             this.project = project;
 
             this.requirementsHistories = requirementsHistories;
 
             this.pluginDescriptor = pluginDescriptor;
 
-            this.locale = locale;
-
             this.hasExtensionsToLoad = hasExtensionsToLoad;
         }
 
-        /**
-         * {@inheritDoc}
-         */
         @Override
         public String getTitle() {
-            return getBundle(locale).getString("report.plugin.title");
+            return getI18nString("title");
+        }
+
+        /**
+         * @param key The key.
+         * @return The translated string.
+         */
+        protected String getI18nString(String key) {
+            return i18n.getString("plugin-report", locale, "report.plugin." + 
key);
         }
 
         /**
@@ -307,17 +325,15 @@ public class PluginReport extends AbstractMavenReport {
 
             if (!(pluginDescriptor.getMojos() != null
                     && pluginDescriptor.getMojos().size() > 0)) {
-                
paragraph(getBundle(locale).getString("report.plugin.goals.nogoal"));
+                paragraph(getI18nString("goals.nogoal"));
                 endSection();
                 return;
             }
 
-            
paragraph(getBundle(locale).getString("report.plugin.goals.intro"));
+            paragraph(getI18nString("goals.intro"));
 
             boolean hasMavenReport = false;
-            for (Iterator<MojoDescriptor> i = 
pluginDescriptor.getMojos().iterator(); i.hasNext(); ) {
-                MojoDescriptor mojo = i.next();
-
+            for (MojoDescriptor mojo : pluginDescriptor.getMojos()) {
                 if (GeneratorUtils.isMavenReport(mojo.getImplementation(), 
project)) {
                     hasMavenReport = true;
                 }
@@ -325,9 +341,9 @@ public class PluginReport extends AbstractMavenReport {
 
             startTable();
 
-            String goalColumnName = 
getBundle(locale).getString("report.plugin.goals.column.goal");
-            String isMavenReport = 
getBundle(locale).getString("report.plugin.goals.column.isMavenReport");
-            String descriptionColumnName = 
getBundle(locale).getString("report.plugin.goals.column.description");
+            String goalColumnName = getI18nString("goals.column.goal");
+            String isMavenReport = getI18nString("goals.column.isMavenReport");
+            String descriptionColumnName = 
getI18nString("goals.column.description");
             if (hasMavenReport) {
                 tableHeader(new String[] {goalColumnName, isMavenReport, 
descriptionColumnName});
             } else {
@@ -348,25 +364,20 @@ public class PluginReport extends AbstractMavenReport {
 
                 String description;
                 if (StringUtils.isNotEmpty(mojo.getDeprecated())) {
-                    description = "<strong>" + 
getBundle(locale).getString("report.plugin.goal.deprecated")
-                            + "</strong> " + mojo.getDeprecated();
+                    description = "<strong>" + 
getI18nString("goal.deprecated") + "</strong> " + mojo.getDeprecated();
                 } else if (StringUtils.isNotEmpty(mojo.getDescription())) {
                     description = mojo.getDescription();
                 } else {
-                    description = 
getBundle(locale).getString("report.plugin.goal.nodescription");
+                    description = getI18nString("goal.nodescription");
                 }
 
                 sink.tableRow();
                 tableCell(createLinkPatternedText(goalName, 
goalDocumentationLink));
                 if (hasMavenReport) {
                     if (GeneratorUtils.isMavenReport(mojo.getImplementation(), 
project)) {
-                        sink.tableCell();
-                        
sink.text(getBundle(locale).getString("report.plugin.isReport"));
-                        sink.tableCell_();
+                        tableCell(getI18nString("isReport"));
                     } else {
-                        sink.tableCell();
-                        
sink.text(getBundle(locale).getString("report.plugin.isNotReport"));
-                        sink.tableCell_();
+                        tableCell(getI18nString("isNotReport"));
                     }
                 }
                 tableCell(description, true);
@@ -375,25 +386,22 @@ public class PluginReport extends AbstractMavenReport {
 
             endTable();
 
-            
startSection(getBundle(locale).getString("report.plugin.systemrequirements"));
+            startSection(getI18nString("systemrequirements"));
 
-            
paragraph(getBundle(locale).getString("report.plugin.systemrequirements.intro"));
+            paragraph(getI18nString("systemrequirements.intro"));
 
             startTable();
 
             String maven = discoverMavenRequirement(project, pluginDescriptor);
             sink.tableRow();
-            
tableCell(getBundle(locale).getString("report.plugin.systemrequirements.maven"));
-            tableCell(
-                    (maven != null
-                            ? maven
-                            : 
getBundle(locale).getString("report.plugin.systemrequirements.nominimum")));
+            tableCell(getI18nString("systemrequirements.maven"));
+            tableCell((maven != null ? maven : 
getI18nString("systemrequirements.nominimum")));
             sink.tableRow_();
 
             String jdk = discoverJdkRequirement(project, pluginDescriptor);
             sink.tableRow();
-            
tableCell(getBundle(locale).getString("report.plugin.systemrequirements.jdk"));
-            tableCell((jdk != null ? jdk : 
getBundle(locale).getString("report.plugin.systemrequirements.nominimum")));
+            tableCell(getI18nString("systemrequirements.jdk"));
+            tableCell((jdk != null ? jdk : 
getI18nString("systemrequirements.nominimum")));
             sink.tableRow_();
 
             endTable();
@@ -412,14 +420,14 @@ public class PluginReport extends AbstractMavenReport {
                 return;
             }
 
-            
startSection(getBundle(locale).getString("report.plugin.systemrequirements.history"));
-            
paragraph(getBundle(locale).getString("report.plugin.systemrequirements.history.intro"));
+            startSection(getI18nString("systemrequirements.history"));
+            paragraph(getI18nString("systemrequirements.history.intro"));
 
             startTable();
             tableHeader(new String[] {
-                
getBundle(locale).getString("report.plugin.systemrequirements.history.version"),
-                
getBundle(locale).getString("report.plugin.systemrequirements.history.maven"),
-                
getBundle(locale).getString("report.plugin.systemrequirements.history.jdk")
+                getI18nString("systemrequirements.history.version"),
+                getI18nString("systemrequirements.history.maven"),
+                getI18nString("systemrequirements.history.jdk")
             });
 
             requirementsHistories.forEach(requirementsHistory -> {
@@ -440,90 +448,86 @@ public class PluginReport extends AbstractMavenReport {
          * @param hasMavenReport If the plugin has a report or not
          */
         private void renderUsageSection(boolean hasMavenReport) {
-            startSection(getBundle(locale).getString("report.plugin.usage"));
+            startSection(getI18nString("usage"));
 
             // Configuration
-            sink.paragraph();
-            text(getBundle(locale).getString("report.plugin.usage.intro"));
-            sink.paragraph_();
+            paragraph(getI18nString("usage.intro"));
 
             StringBuilder sb = new StringBuilder();
-            sb.append("<project>").append('\n');
-            sb.append("  ...").append('\n');
-            sb.append("  <build>").append('\n');
-            sb.append("    <!-- " + 
getBundle(locale).getString("report.plugin.usage.pluginManagement") + " -->")
-                    .append('\n');
-            sb.append("    <pluginManagement>").append('\n');
-            sb.append("      <plugins>").append('\n');
-            sb.append("        <plugin>").append('\n');
+            sb.append("<project>").append(Markup.EOL);
+            sb.append("  ...").append(Markup.EOL);
+            sb.append("  <build>").append(Markup.EOL);
+            sb.append("    <!-- " + getI18nString("usage.pluginManagement") + 
" -->")
+                    .append(Markup.EOL);
+            sb.append("    <pluginManagement>").append(Markup.EOL);
+            sb.append("      <plugins>").append(Markup.EOL);
+            sb.append("        <plugin>").append(Markup.EOL);
             sb.append("          <groupId>")
                     .append(pluginDescriptor.getGroupId())
                     .append("</groupId>")
-                    .append('\n');
+                    .append(Markup.EOL);
             sb.append("          <artifactId>")
                     .append(pluginDescriptor.getArtifactId())
                     .append("</artifactId>")
-                    .append('\n');
+                    .append(Markup.EOL);
             sb.append("          <version>")
                     .append(pluginDescriptor.getVersion())
                     .append("</version>")
-                    .append('\n');
+                    .append(Markup.EOL);
             if (hasExtensionsToLoad) {
-                sb.append("          
<extensions>true</extensions>").append('\n');
+                sb.append("          
<extensions>true</extensions>").append(Markup.EOL);
             }
-            sb.append("        </plugin>").append('\n');
-            sb.append("        ...").append('\n');
-            sb.append("      </plugins>").append('\n');
-            sb.append("    </pluginManagement>").append('\n');
-            sb.append("    <!-- " + 
getBundle(locale).getString("report.plugin.usage.plugins") + " -->")
-                    .append('\n');
-            sb.append("    <plugins>").append('\n');
-            sb.append("      <plugin>").append('\n');
+            sb.append("        </plugin>").append(Markup.EOL);
+            sb.append("        ...").append(Markup.EOL);
+            sb.append("      </plugins>").append(Markup.EOL);
+            sb.append("    </pluginManagement>").append(Markup.EOL);
+            sb.append("    <!-- " + getI18nString("usage.plugins") + " 
-->").append(Markup.EOL);
+            sb.append("    <plugins>").append(Markup.EOL);
+            sb.append("      <plugin>").append(Markup.EOL);
             sb.append("        <groupId>")
                     .append(pluginDescriptor.getGroupId())
                     .append("</groupId>")
-                    .append('\n');
+                    .append(Markup.EOL);
             sb.append("        <artifactId>")
                     .append(pluginDescriptor.getArtifactId())
                     .append("</artifactId>")
-                    .append('\n');
-            sb.append("      </plugin>").append('\n');
-            sb.append("      ...").append('\n');
-            sb.append("    </plugins>").append('\n');
-            sb.append("  </build>").append('\n');
+                    .append(Markup.EOL);
+            sb.append("      </plugin>").append(Markup.EOL);
+            sb.append("      ...").append(Markup.EOL);
+            sb.append("    </plugins>").append(Markup.EOL);
+            sb.append("  </build>").append(Markup.EOL);
 
             if (hasMavenReport) {
-                sb.append("  ...").append('\n');
-                sb.append("  <!-- " + 
getBundle(locale).getString("report.plugin.usage.reporting") + " -->")
-                        .append('\n');
-                sb.append("  <reporting>").append('\n');
-                sb.append("    <plugins>").append('\n');
-                sb.append("      <plugin>").append('\n');
+                sb.append("  ...").append(Markup.EOL);
+                sb.append("  <!-- " + getI18nString("usage.reporting") + " 
-->").append(Markup.EOL);
+                sb.append("  <reporting>").append(Markup.EOL);
+                sb.append("    <plugins>").append(Markup.EOL);
+                sb.append("      <plugin>").append(Markup.EOL);
                 sb.append("        <groupId>")
                         .append(pluginDescriptor.getGroupId())
                         .append("</groupId>")
-                        .append('\n');
+                        .append(Markup.EOL);
                 sb.append("        <artifactId>")
                         .append(pluginDescriptor.getArtifactId())
                         .append("</artifactId>")
-                        .append('\n');
+                        .append(Markup.EOL);
                 sb.append("        <version>")
                         .append(pluginDescriptor.getVersion())
                         .append("</version>")
-                        .append('\n');
-                sb.append("      </plugin>").append('\n');
-                sb.append("      ...").append('\n');
-                sb.append("    </plugins>").append('\n');
-                sb.append("  </reporting>").append('\n');
+                        .append(Markup.EOL);
+                sb.append("      </plugin>").append(Markup.EOL);
+                sb.append("      ...").append(Markup.EOL);
+                sb.append("    </plugins>").append(Markup.EOL);
+                sb.append("  </reporting>").append(Markup.EOL);
             }
 
-            sb.append("  ...").append('\n');
-            sb.append("</project>").append('\n');
+            sb.append("  ...").append(Markup.EOL);
+            sb.append("</project>");
 
             verbatimText(sb.toString());
 
             sink.paragraph();
-            
linkPatternedText(getBundle(locale).getString("report.plugin.configuration.end"));
+            linkPatternedText(getI18nString("configuration.end"));
             sink.paragraph_();
 
             endSection();

Reply via email to