This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch MSITE-220
in repository https://gitbox.apache.org/repos/asf/maven-site-plugin.git

commit 21a5b339ef4f11a9b254b1b9c690f3e8f00e484d
Author: Michael Osipov <micha...@apache.org>
AuthorDate: Sun Jan 15 00:56:48 2023 +0100

    [MSITE-220] site:run mojo will not display Javadoc or JXR report results
    
    This closes #122
---
 .../apache/maven/plugins/site/run/DoxiaFilter.java   | 20 ++++++++++++--------
 .../apache/maven/plugins/site/run/SiteRunMojo.java   |  4 +++-
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java 
b/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java
index 7a11e2a8..8853984e 100644
--- a/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java
+++ b/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java
@@ -37,7 +37,10 @@ import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 
+import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -50,6 +53,8 @@ import java.util.Map;
 public class DoxiaFilter
     implements Filter
 {
+    public static final String OUTPUT_DIRECTORY_KEY = "outputDirectory";
+
     public static final String SITE_RENDERER_KEY = "siteRenderer";
 
     public static final String I18N_DOXIA_CONTEXTS_KEY = "i18nDoxiaContexts";
@@ -58,6 +63,8 @@ public class DoxiaFilter
 
     private ServletContext servletContext;
 
+    private File outputDirectory;
+
     private Renderer siteRenderer;
 
     private Map<String, DoxiaBean> i18nDoxiaContexts;
@@ -72,6 +79,8 @@ public class DoxiaFilter
     {
         servletContext = filterConfig.getServletContext();
 
+        outputDirectory = (File) servletContext.getAttribute( 
OUTPUT_DIRECTORY_KEY );
+
         siteRenderer = (Renderer) servletContext.getAttribute( 
SITE_RENDERER_KEY );
 
         i18nDoxiaContexts = (Map<String, DoxiaBean>) 
servletContext.getAttribute( I18N_DOXIA_CONTEXTS_KEY );
@@ -154,14 +163,9 @@ public class DoxiaFilter
                     ReportDocumentRenderer reportDocumentRenderer = 
(ReportDocumentRenderer) renderer;
                     if ( reportDocumentRenderer.isExternalReport() )
                     {
-                        try
-                        {
-                            filterChain.doFilter( servletRequest, 
servletResponse );
-                        }
-                        catch ( Exception e )
-                        {
-                            throw new ServletException( e );
-                        }
+                        Path externalReportFile = 
outputDirectory.toPath().resolve( renderer.getOutputName() );
+                        servletResponse.reset();
+                        Files.copy( externalReportFile, 
servletResponse.getOutputStream() );
                     }
                 }
 
diff --git a/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java 
b/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java
index 811e791a..e324a2fd 100644
--- a/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java
+++ b/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java
@@ -25,6 +25,7 @@ import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo;
 import org.apache.maven.reporting.exec.MavenReportExecution;
 import org.codehaus.plexus.util.IOUtil;
@@ -49,7 +50,7 @@ import java.util.Map;
  * @author <a href="mailto:br...@apache.org";>Brett Porter</a>
  *
  */
-@Mojo( name = "run", aggregator = true, requiresReports = true )
+@Mojo( name = "run", requiresDependencyResolution = ResolutionScope.TEST, 
requiresReports = true )
 public class SiteRunMojo
     extends AbstractSiteRenderingMojo
 {
@@ -122,6 +123,7 @@ public class SiteRunMojo
         WebAppContext webapp = new WebAppContext();
         webapp.setContextPath( "/" );
         webapp.setResourceBase( tempWebappDirectory.getAbsolutePath() );
+        webapp.setAttribute( DoxiaFilter.OUTPUT_DIRECTORY_KEY, 
tempWebappDirectory );
         webapp.setAttribute( DoxiaFilter.SITE_RENDERER_KEY, siteRenderer );
         webapp.getInitParams().put( 
"org.mortbay.jetty.servlet.Default.useFileMappedBuffer", "false" );
 

Reply via email to