You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2014/05/29 23:45:50 UTC

svn commit: r1598416 - /maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java

Author: hboutemy
Date: Thu May 29 21:45:50 2014
New Revision: 1598416

URL: http://svn.apache.org/r1598416
Log:
[MSITE-714] display info on Doxia documents rendered

Modified:
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java?rev=1598416&r1=1598415&r2=1598416&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/SiteMojo.java Thu May 29 21:45:50 2014
@@ -21,13 +21,16 @@ package org.apache.maven.plugins.site;
 
 import java.io.File;
 import java.io.IOException;
-
+import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.TreeMap;
 
 import org.apache.maven.doxia.siterenderer.DocumentRenderer;
+import org.apache.maven.doxia.siterenderer.DoxiaDocumentRenderer;
 import org.apache.maven.doxia.siterenderer.RendererException;
 import org.apache.maven.doxia.siterenderer.SiteRenderingContext;
 import org.apache.maven.plugin.MojoExecutionException;
@@ -161,10 +164,14 @@ public class SiteMojo
             getLog().info( "Validation is switched on, xml input documents will be validated!" );
         }
 
+        File outputDir = getOutputDirectory( locale );
+
         Map<String, DocumentRenderer> documents = locateDocuments( context, reports, locale );
 
-        File outputDir = getOutputDirectory( locale );
+        // 1. render Doxia documents first
+        List<DocumentRenderer> reportDocuments = renderDoxiaDocuments( documents, context, outputDir, false );
 
+        // 2. then reports
         // For external reports
         for ( MavenReportExecution mavenReportExecution : reports )
         {
@@ -172,7 +179,7 @@ public class SiteMojo
             report.setReportOutputDirectory( outputDir );
         }
 
-        siteRenderer.render( documents.values(), context, outputDir );
+        siteRenderer.render( reportDocuments, context, outputDir );
 
         if ( generateSitemap )
         {
@@ -182,13 +189,79 @@ public class SiteMojo
                     .generate( context.getDecoration(), generatedSiteDirectory, locale );
         }
 
-        // Generated docs must be done afterwards as they are often generated by reports
+        // 3. Generated docs must be done afterwards as they are often generated by reports
         context.getSiteDirectories().clear();
         context.addSiteDirectory( generatedSiteDirectory );
 
-        documents = siteRenderer.locateDocumentFiles( context );
+        Map<String, DocumentRenderer> generatedDocuments = siteRenderer.locateDocumentFiles( context );
+
+        renderDoxiaDocuments( generatedDocuments, context, outputDir, true );
+    }
+
+    /**
+     * Renders Doxia documents, but not reports.
+     * @param documents a collection of documents
+     * @return the sublist of documents that are not Doxia parsed
+     */
+    private List<DocumentRenderer> renderDoxiaDocuments( Map<String, DocumentRenderer> documents,
+                                                         SiteRenderingContext context, File outputDir, boolean generated )
+        throws RendererException, IOException
+    {
+        Map<String, DocumentRenderer> doxiaDocuments = new TreeMap<String, DocumentRenderer>();
+        List<DocumentRenderer> nonDoxiaDocuments = new ArrayList<DocumentRenderer>();
+
+        Map<String, Integer> counts = new HashMap<String, Integer>();
+
+        for ( Map.Entry<String, DocumentRenderer> entry: documents.entrySet() )
+        {
+            DocumentRenderer doc = entry.getValue();
+
+            if ( doc instanceof DoxiaDocumentRenderer )
+            {
+                doxiaDocuments.put( entry.getKey(), doc );
+
+                DoxiaDocumentRenderer doxia = (DoxiaDocumentRenderer) doc;
+
+                // count documents per parserId
+                String parserId = doxia.getRenderingContext().getParserId();
+                Integer count = counts.get( parserId );
+                if ( count == null )
+                {
+                    count = 1;
+                }
+                else
+                {
+                    count++;
+                }
+                counts.put( parserId, count );
+            }
+            else
+            {
+                nonDoxiaDocuments.add( doc );
+            }
+        }
+
+        if ( doxiaDocuments.size() > 0 )
+        {
+            StringBuilder sb = new StringBuilder( 15 * counts.size() );
+            for ( Map.Entry<String, Integer> entry: counts.entrySet() )
+            {
+                if ( sb.length() > 0 )
+                {
+                    sb.append( ", " );
+                }
+                sb.append( entry.getValue() );
+                sb.append(' ');
+                sb.append( entry.getKey() );
+            }
+
+            getLog().info( "Rendering " + doxiaDocuments.size() + ( generated ? " generated " : "" )
+                               + " Doxia document" + ( doxiaDocuments.size() > 1 ? "s" : "" ) + ": " + sb.toString() );
+
+            siteRenderer.render( doxiaDocuments.values(), context, outputDir );
+        }
 
-        siteRenderer.render( documents.values(), context, outputDir );
+        return nonDoxiaDocuments;
     }
 
     private File getOutputDirectory( Locale locale )