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 )