You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2009/08/29 17:11:42 UTC
svn commit: r809145 -
/maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/
Author: olamy
Date: Sat Aug 29 15:11:41 2009
New Revision: 809145
URL: http://svn.apache.org/viewvc?rev=809145&view=rev
Log:
use a new bean to transport report execution information.
it will help for future (and replace the ugly Map<MavenReport,ClassLoader>
Added:
maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecution.java (with props)
Modified:
maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/AbstractSiteRenderingMojo.java
maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java
maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecutor.java
maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java
maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java
Modified: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/AbstractSiteRenderingMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/AbstractSiteRenderingMojo.java?rev=809145&r1=809144&r2=809145&view=diff
==============================================================================
--- maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/AbstractSiteRenderingMojo.java (original)
+++ maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/AbstractSiteRenderingMojo.java Sat Aug 29 15:11:41 2009
@@ -193,12 +193,12 @@
*/
protected MavenReportExecutor mavenReportExecutor;
- protected Map<MavenReport, ClassLoader> getReports()
+ protected List<MavenReportExecution> getReports()
throws MojoExecutionException
{
if ( this.project.getReporting() == null || this.project.getReporting().getPlugins().isEmpty() )
{
- return Collections.emptyMap();
+ return Collections.emptyList();
}
MavenReportExecutorRequest mavenReportExecutorRequest = new MavenReportExecutorRequest();
mavenReportExecutorRequest.setLocalRepository( localRepository );
@@ -207,17 +207,18 @@
return mavenReportExecutor.buildMavenReports( mavenReportExecutorRequest );
}
- protected Map<MavenReport, ClassLoader> filterReports( Map<MavenReport, ClassLoader> reports )
+ protected List<MavenReportExecution> filterReports( List<MavenReportExecution> reports )
{
- Map<MavenReport, ClassLoader> filteredReports = new HashMap<MavenReport, ClassLoader>();
- for ( MavenReport report : reports.keySet() )
+ List<MavenReportExecution> filteredReports = new ArrayList<MavenReportExecution>();
+ for ( MavenReportExecution mavenReportExecution : reports )
{
// noinspection ErrorNotRethrown,UnusedCatchParameter
+ MavenReport report = mavenReportExecution.getMavenReport();
try
{
if ( report.canGenerateReport() )
{
- filteredReports.put( report, reports.get( report ) );
+ filteredReports.add( mavenReportExecution );
}
}
catch ( AbstractMethodError e )
@@ -229,7 +230,7 @@
getLog().warn(
"Error loading report " + report.getClass().getName()
+ " - AbstractMethodError: canGenerateReport()" );
- filteredReports.put( report, reports.get( report ) );
+ filteredReports.add( mavenReportExecution );
}
}
return filteredReports;
@@ -345,12 +346,16 @@
* @return A map with all reports keyed by filename having the report itself as value. The map will be used to
* populate a menu.
*/
- protected Map locateReports( Map<MavenReport, ClassLoader> reports, Map documents, Locale locale )
+ protected Map<String, MavenReport> locateReports( List<MavenReportExecution> reports, Map documents, Locale locale )
{
- Map reportsByOutputName = new HashMap();
- for ( Iterator i = reports.keySet().iterator(); i.hasNext(); )
+ // copy Collection to prevent ConcurrentModificationException
+ List<MavenReportExecution> filtered = new ArrayList<MavenReportExecution>(reports);
+
+ Map<String, MavenReport> reportsByOutputName = new HashMap<String, MavenReport>();
+ for ( Iterator<MavenReportExecution> iterator = filtered.iterator(); iterator.hasNext(); )
{
- MavenReport report = (MavenReport) i.next();
+ MavenReportExecution mavenReportExecution = iterator.next();
+ MavenReport report = mavenReportExecution.getMavenReport();
String outputName = report.getOutputName() + ".html";
@@ -363,12 +368,12 @@
getLog().info( "Skipped \"" + report.getName( locale ) + "\" report, file \"" + outputName
+ "\" already exists for the " + displayLanguage + " version." );
- i.remove();
+ reports.remove( mavenReportExecution );
}
else
{
RenderingContext renderingContext = new RenderingContext( siteDirectory, outputName );
- ReportDocumentRenderer renderer = new ReportDocumentRenderer( report, renderingContext, getLog(), reports.get( report ) );
+ ReportDocumentRenderer renderer = new ReportDocumentRenderer( mavenReportExecution, renderingContext, getLog() );
documents.put( outputName, renderer );
}
}
@@ -399,7 +404,7 @@
return categories;
}
- protected Map locateDocuments( SiteRenderingContext context, Map<MavenReport, ClassLoader> reports, Locale locale )
+ protected Map locateDocuments( SiteRenderingContext context, List<MavenReportExecution> reports, Locale locale )
throws IOException, RendererException
{
Map documents = siteRenderer.locateDocumentFiles( context );
Modified: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java?rev=809145&r1=809144&r2=809145&view=diff
==============================================================================
--- maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java (original)
+++ maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java Sat Aug 29 15:11:41 2009
@@ -20,9 +20,7 @@
*/
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
import org.apache.maven.artifact.repository.RepositoryRequest;
@@ -63,7 +61,7 @@
@Requirement
protected LifecycleExecutor lifecycleExecutor;
- public Map<MavenReport, ClassLoader> buildMavenReports( MavenReportExecutorRequest mavenReportExecutorRequest )
+ public List<MavenReportExecution> buildMavenReports( MavenReportExecutorRequest mavenReportExecutorRequest )
throws MojoExecutionException
{
@@ -83,7 +81,7 @@
try
{
- Map<MavenReport, ClassLoader> reports = new HashMap<MavenReport, ClassLoader>();
+ List<MavenReportExecution> reports = new ArrayList<MavenReportExecution>();
for ( ReportPlugin reportPlugin : mavenReportExecutorRequest.getProject().getReporting().getPlugins() )
{
@@ -138,7 +136,9 @@
getConfiguredMavenReport( mojoExecution, pluginDescriptor, mavenReportExecutorRequest );
if ( mavenReport != null )
{
- reports.put( mavenReport, pluginDescriptor.getClassRealm() );
+ MavenReportExecution mavenReportExecution =
+ new MavenReportExecution( mavenReport, pluginDescriptor.getClassRealm() );
+ reports.add( mavenReportExecution );
}
}
}
Added: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecution.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecution.java?rev=809145&view=auto
==============================================================================
--- maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecution.java (added)
+++ maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecution.java Sat Aug 29 15:11:41 2009
@@ -0,0 +1,60 @@
+package org.apache.maven.plugins.site;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.reporting.MavenReport;
+
+/**
+ *
+ * @author Olivier Lamy
+ * @since 3.0-beta-1
+ */
+public class MavenReportExecution
+{
+ private MavenReport mavenReport;
+
+ private ClassLoader classLoader;
+
+ public MavenReportExecution( MavenReport mavenReport, ClassLoader classLoader )
+ {
+ this.mavenReport = mavenReport;
+ this.classLoader = classLoader;
+ }
+
+ public MavenReport getMavenReport()
+ {
+ return mavenReport;
+ }
+
+ public void setMavenReport( MavenReport mavenReport )
+ {
+ this.mavenReport = mavenReport;
+ }
+
+ public ClassLoader getClassLoader()
+ {
+ return classLoader;
+ }
+
+ public void setClassLoader( ClassLoader classLoader )
+ {
+ this.classLoader = classLoader;
+ }
+}
Propchange: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecution.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecution.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecutor.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecutor.java?rev=809145&r1=809144&r2=809145&view=diff
==============================================================================
--- maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecutor.java (original)
+++ maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/MavenReportExecutor.java Sat Aug 29 15:11:41 2009
@@ -19,10 +19,9 @@
* under the License.
*/
-import java.util.Map;
+import java.util.List;
import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.reporting.MavenReport;
/**
*
@@ -31,6 +30,8 @@
*/
public interface MavenReportExecutor
{
- Map<MavenReport, ClassLoader> buildMavenReports(MavenReportExecutorRequest mavenReportExecutorRequest)
+ // FIXME create a bean which contains MavenReport, ClassLoader and other stuff
+ // to prevent this and will be more easily extensible
+ List<MavenReportExecution> buildMavenReports(MavenReportExecutorRequest mavenReportExecutorRequest)
throws MojoExecutionException;
}
Modified: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java?rev=809145&r1=809144&r2=809145&view=diff
==============================================================================
--- maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java (original)
+++ maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/ReportDocumentRenderer.java Sat Aug 29 15:11:41 2009
@@ -53,23 +53,20 @@
public class ReportDocumentRenderer
implements DocumentRenderer
{
- private MavenReport report;
+ private MavenReportExecution mavenReportExecution;
private RenderingContext renderingContext;
private Log log;
- private ClassLoader classLoader;
-
- public ReportDocumentRenderer( MavenReport report, RenderingContext renderingContext, Log log, ClassLoader classLoader )
+ public ReportDocumentRenderer( MavenReportExecution mavenReportExecution, RenderingContext renderingContext, Log log)
{
- this.report = report;
+ this.mavenReportExecution = mavenReportExecution;
this.renderingContext = renderingContext;
this.log = log;
- this.classLoader = classLoader;
}
private static class MySink
@@ -148,6 +145,9 @@
throws RendererException, FileNotFoundException
{
Locale locale = siteRenderingContext.getLocale();
+
+ MavenReport report = mavenReportExecution.getMavenReport();
+
String localReportName = report.getName( locale );
log.info( "Generating \"" + localReportName + "\" report." );
@@ -155,7 +155,7 @@
SiteRendererSink sink = new SiteRendererSink( renderingContext );
ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
- Thread.currentThread().setContextClassLoader( this.classLoader );
+ Thread.currentThread().setContextClassLoader( this.mavenReportExecution.getClassLoader() );
try
{
if ( report instanceof MavenMultiPageReport )
@@ -242,6 +242,6 @@
*/
public boolean isExternalReport()
{
- return report.isExternalReport();
+ return mavenReportExecution.getMavenReport().isExternalReport();
}
}
Modified: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteMojo.java?rev=809145&r1=809144&r2=809145&view=diff
==============================================================================
--- maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteMojo.java (original)
+++ maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteMojo.java Sat Aug 29 15:11:41 2009
@@ -77,14 +77,14 @@
throws MojoExecutionException, MojoFailureException
{
- Map<MavenReport, ClassLoader> filteredReports;
+ List<MavenReportExecution> filteredReports;
if ( generateReports )
{
filteredReports = filterReports( getReports() );
}
else
{
- filteredReports = Collections.emptyMap();
+ filteredReports = Collections.emptyList();
}
try
@@ -112,7 +112,7 @@
}
}
- private void renderLocale( Locale locale, Map<MavenReport, ClassLoader> reports )
+ private void renderLocale( Locale locale, List<MavenReportExecution> reports )
throws IOException, RendererException, MojoFailureException, MojoExecutionException
{
SiteRenderingContext context = createSiteRenderingContext( locale );
@@ -125,9 +125,9 @@
File outputDir = getOutputDirectory( locale );
// For external reports
- for ( Iterator i = reports.keySet().iterator(); i.hasNext(); )
+ for ( MavenReportExecution mavenReportExecution : reports )
{
- MavenReport report = (MavenReport) i.next();
+ MavenReport report = mavenReportExecution.getMavenReport();
report.setReportOutputDirectory( outputDir );
}
Modified: maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java?rev=809145&r1=809144&r2=809145&view=diff
==============================================================================
--- maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java (original)
+++ maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/SiteRunMojo.java Sat Aug 29 15:11:41 2009
@@ -151,12 +151,12 @@
// For external reports
project.getReporting().setOutputDirectory( tempWebappDirectory.getAbsolutePath() );
- for ( MavenReport report : getReports().keySet() )
+ for ( MavenReportExecution mavenReportExecution : getReports() )
{
- report.setReportOutputDirectory( tempWebappDirectory );
+ mavenReportExecution.getMavenReport().setReportOutputDirectory( tempWebappDirectory );
}
- Map<MavenReport, ClassLoader> filteredReports = filterReports( getReports() );
+ List<MavenReportExecution> filteredReports = filterReports( getReports() );
List localesList = siteTool.getAvailableLocales( locales );
webapp.setAttribute( DoxiaFilter.LOCALES_LIST_KEY, localesList );