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 2010/07/05 23:11:35 UTC
svn commit: r960703 -
/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java
Author: hboutemy
Date: Mon Jul 5 21:11:34 2010
New Revision: 960703
URL: http://svn.apache.org/viewvc?rev=960703&view=rev
Log:
[MSITE-490] fixed MavenMultiPageReport API detection
Modified:
maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java
Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java?rev=960703&r1=960702&r2=960703&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java Mon Jul 5 21:11:34 2010
@@ -40,6 +40,8 @@ import java.io.IOException;
import java.io.OutputStream;
import java.io.Writer;
import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Locale;
import java.util.List;
@@ -153,11 +155,7 @@ public class ReportDocumentRenderer
try
{
- if ( report instanceof MavenMultiPageReport )
- {
- ( (MavenMultiPageReport) report ).generate( sink, sf, locale );
- }
- else
+ if ( !generateMultiPage( locale, sf, sink ) )
{
try
{
@@ -216,6 +214,42 @@ public class ReportDocumentRenderer
}
}
+ private boolean generateMultiPage( Locale locale, SinkFactory sf, Sink sink )
+ throws MavenReportException
+ {
+ try
+ {
+ // MavenMultiPageReport is not in Maven Core, then the class is different in site plugin and in each report
+ // plugin: only reflection can let us invoke its method
+ Method generate =
+ report.getClass().getMethod( "generate", Sink.class, SinkFactory.class, Locale.class );
+
+ generate.invoke( report, sink, sf, locale );
+
+ return true;
+ }
+ catch ( SecurityException se )
+ {
+ return false;
+ }
+ catch ( NoSuchMethodException nsme )
+ {
+ return false;
+ }
+ catch ( IllegalArgumentException iae )
+ {
+ throw new MavenReportException( "error while invoking generate", iae );
+ }
+ catch ( IllegalAccessException iae )
+ {
+ throw new MavenReportException( "error while invoking generate", iae );
+ }
+ catch ( InvocationTargetException ite )
+ {
+ throw new MavenReportException( "error while invoking generate", ite );
+ }
+ }
+
public String getOutputName()
{
return renderingContext.getOutputName();