public void renderDocument( Writer writer, Renderer renderer, SiteRenderingContext siteRenderingContext )
throws RendererException, FileNotFoundException
{
Locale locale = siteRenderingContext.getLocale();
MavenReport report = mavenReportExecution.getMavenReport();
String localReportName = report.getName( locale );
log.info( "Generating \"" + localReportName + "\" report." );
MySinkFactory sf = new MySinkFactory( renderingContext );
SiteRendererSink sink = new SiteRendererSink( renderingContext );
ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader( this.mavenReportExecution.getClassLoader() );
try
{
if ( report instanceof MavenMultiPageReport )
{
( (MavenMultiPageReport) report ).generate( sink, sf, locale );
}
else
{
report.generate( sink, locale );
}
}
catch ( MavenReportException e )
{
throw new RendererException( "Error rendering Maven report: " + e.getMessage(), e );
}
catch ( LinkageError e )
{
StringBuilder stringBuilder =
new StringBuilder( " an issue has occured with report " + report.getClass().getName() );
stringBuilder.append( ", skip LinkageError " + e.getMessage() + ", please report an issue to maven dev team" );
log.warn( stringBuilder.toString(), e );
}
finally
{
Thread.currentThread().setContextClassLoader( originalClassLoader );
sink.close();
}
if ( !report.isExternalReport() )
{
try
{
List sinks = sf.sinks();