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();