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

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

commit adce15bb76f02ea0205c0df82dfdbeca795f5611
Author: Michael Osipov <[email protected]>
AuthorDate: Sat Apr 15 20:32:42 2023 +0200

    [MSITE-953] Log statistics about rendered non-Doxia documents
---
 .../apache/maven/plugins/site/render/SiteMojo.java | 58 ++++++++++++++++++++--
 1 file changed, 55 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/site/render/SiteMojo.java 
b/src/main/java/org/apache/maven/plugins/site/render/SiteMojo.java
index a87d4f9b..41c81b92 100644
--- a/src/main/java/org/apache/maven/plugins/site/render/SiteMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/render/SiteMojo.java
@@ -159,16 +159,16 @@ public class SiteMojo extends AbstractSiteRenderingMojo {
         siteRenderer.copyResources(context, outputDir);
 
         // 1. render Doxia documents first
-        List<DocumentRenderer> reportDocuments = 
renderDoxiaDocuments(documents, context, outputDir, false);
+        List<DocumentRenderer> nonDoxiaDocuments = 
renderDoxiaDocuments(documents, context, outputDir, false);
 
-        // 2. then reports
         // prepare external reports
         for (MavenReportExecution mavenReportExecution : reports) {
             MavenReport report = mavenReportExecution.getMavenReport();
             report.setReportOutputDirectory(outputDir);
         }
 
-        siteRenderer.render(reportDocuments, context, outputDir);
+        // 2. then non-Doxia documents (e.g., reports)
+        renderNonDoxiaDocuments(nonDoxiaDocuments, context, outputDir);
 
         if (generateSitemap) {
             getLog().info("Generating Sitemap");
@@ -254,6 +254,58 @@ public class SiteMojo extends AbstractSiteRenderingMojo {
         return nonDoxiaDocuments;
     }
 
+    /**
+     * Render non-Doxia documents (e.g., reports) from the list given
+     *
+     * @param documents a collection of documents containing non-Doxia source 
files
+     */
+    private void renderNonDoxiaDocuments(List<DocumentRenderer> documents, 
SiteRenderingContext context, File outputDir)
+            throws RendererException, IOException {
+        Map<String, Integer> counts = new TreeMap<>();
+
+        for (DocumentRenderer doc : documents) {
+            String type;
+            if (doc instanceof ReportDocumentRenderer) {
+                type = "report";
+            } else if (doc instanceof SitePluginReportDocumentRenderer) {
+                type = "site-plugin-report";
+            } else {
+                type = "other";
+            }
+
+            Integer count = counts.get(type);
+            if (count == null) {
+                count = 1;
+            } else {
+                count++;
+            }
+            counts.put(type, count);
+        }
+
+        if (documents.size() > 0) {
+            MessageBuilder mb = buffer();
+            mb.a("Rendering ");
+            mb.strong(documents.size() + " non-Doxia document" + 
(documents.size() > 1 ? "s" : ""));
+            mb.a(": ");
+
+            boolean first = true;
+            for (Map.Entry<String, Integer> entry : counts.entrySet()) {
+                if (first) {
+                    first = false;
+                } else {
+                    mb.a(", ");
+                }
+                String type = entry.getKey();
+                Integer count = entry.getValue();
+                mb.strong(count + " " + type + (count > 1 ? "s" : ""));
+            }
+
+            getLog().info(mb.toString());
+
+            siteRenderer.render(documents, context, outputDir);
+        }
+    }
+
     private File getOutputDirectory(Locale locale) {
         File file;
         if (!locale.equals(SiteTool.DEFAULT_LOCALE)) {

Reply via email to