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 2011/02/20 10:00:55 UTC

svn commit: r1072533 - /maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java

Author: hboutemy
Date: Sun Feb 20 09:00:55 2011
New Revision: 1072533

URL: http://svn.apache.org/viewvc?rev=1072533&view=rev
Log:
o improved javadoc
o simplified code for EXCLUDES
o code cleanup

Modified:
    maven/plugins/branches/maven-site-plugin-3.x/src/main/java/org/apache/maven/plugins/site/DefaultMavenReportExecutor.java

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=1072533&r1=1072532&r2=1072533&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 Sun Feb 20 09:00:55 2011
@@ -22,11 +22,9 @@ package org.apache.maven.plugins.site;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Set;
 import java.util.TreeMap;
 
 import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
@@ -72,7 +70,7 @@ import org.sonatype.aether.util.filter.E
  * <p>
  *   <b>Note</b> if no version is defined in the report plugin the version will be search 
  *   with method {@link #getPluginVersion(ReportPlugin, RepositoryRequest, MavenReportExecutorRequest)}
- *   Steps to find a plugin version stop after each step if a non <code>null</code> has been found
+ *   Steps to find a plugin version stop after each step if a non <code>null</code> value has been found:
  *   <ul>
  *     <li>use the one defined in the reportPlugin configuration</li>
  *     <li>search similar (same groupId and artifactId) mojo in the build/plugins section of the pom</li>
@@ -86,8 +84,8 @@ import org.sonatype.aether.util.filter.E
  *     <li>get {@link PluginDescriptor} from the {@link MavenPluginManager#getPluginDescriptor(Plugin, RepositoryRequest)}</li>
  *     <li>setup a {@link ClassLoader} with the Mojo Site plugin {@link ClassLoader} as parent for the report execution. 
  *       You must note some classes are imported from the current Site Mojo {@link ClassRealm} see {@link #IMPORTS}.
- *       The artifact resolution excludes the following artifacts (with using an {@link ExclusionSetFilter} : 
- *       doxia-site-renderer, doxia-sink-api.
+ *       The artifact resolution excludes the following artifacts (with using an {@link ExclusionSetFilter}: 
+ *       doxia-site-renderer, doxia-sink-api, maven-reporting-api.
  *       done using {@link MavenPluginManager#setupPluginRealm(PluginDescriptor, org.apache.maven.execution.MavenSession, ClassLoader, List, org.apache.maven.artifact.resolver.filter.ArtifactFilter)}
  *     </li>
  *     <li>
@@ -95,7 +93,7 @@ import org.sonatype.aether.util.filter.E
  *     </li>
  *     <li>
  *       verify with {@link LifecycleExecutor#calculateForkedExecutions(MojoExecution, org.apache.maven.execution.MavenSession)}
- *       if any forked execution is needed : if yes executes the forked execution here
+ *       if any forked execution is needed: if yes executes the forked execution here
  *     </li>
  *   </ul>
  * </p>
@@ -126,8 +124,8 @@ public class DefaultMavenReportExecutor
                                                                "org.apache.maven.doxia.sink.Sink",
                                                                "org.apache.maven.doxia.sink.SinkEventAttributes" );
 
-    private static final Set<String> EXCLUDES = new HashSet<String>( Arrays.asList( "doxia-site-renderer",
-                                                                                    "doxia-sink-api", "maven-reporting-api" ) );
+    private static final ExclusionsDependencyFilter EXCLUDES =
+        new ExclusionsDependencyFilter( Arrays.asList( "doxia-site-renderer", "doxia-sink-api", "maven-reporting-api" ) );
 
     public List<MavenReportExecution> buildMavenReports( MavenReportExecutorRequest mavenReportExecutorRequest )
         throws MojoExecutionException
@@ -138,25 +136,22 @@ public class DefaultMavenReportExecutor
         }
         getLog().debug( "DefaultMavenReportExecutor.buildMavenReports()" );
         
-        ExclusionsDependencyFilter exclusionSetFilter = new ExclusionsDependencyFilter( EXCLUDES );
-
         RepositoryRequest repositoryRequest = new DefaultRepositoryRequest();
         repositoryRequest.setLocalRepository( mavenReportExecutorRequest.getLocalRepository() );
         repositoryRequest.setRemoteRepositories( mavenReportExecutorRequest.getProject().getPluginArtifactRepositories() );
 
         MavenSession session = mavenReportExecutorRequest.getMavenSession();
-        
-        List<String> reportPluginKeys = new ArrayList<String>( mavenReportExecutorRequest.getReportPlugins().length );
+        List<String> reportPluginKeys = new ArrayList<String>();
+        List<MavenReportExecution> reports = new ArrayList<MavenReportExecution>();
         
         try
         {
-            List<MavenReportExecution> reports = new ArrayList<MavenReportExecution>();
-
             for ( ReportPlugin reportPlugin : mavenReportExecutorRequest.getReportPlugins() )
             {
                 Plugin plugin = new Plugin();
                 plugin.setGroupId( reportPlugin.getGroupId() );
                 plugin.setArtifactId( reportPlugin.getArtifactId() );
+
                 String pluginKey = reportPlugin.getGroupId() + ":" + reportPlugin.getArtifactId();
                 if ( reportPluginKeys.contains( pluginKey ) )
                 {
@@ -258,7 +253,7 @@ public class DefaultMavenReportExecutor
                     mavenPluginManager.setupPluginRealm( pluginDescriptor,
                                                          mavenReportExecutorRequest.getMavenSession(),
                                                          Thread.currentThread().getContextClassLoader(), IMPORTS,
-                                                         exclusionSetFilter );
+                                                         EXCLUDES );
                     MavenReport mavenReport =
                         getConfiguredMavenReport( mojoExecution, pluginDescriptor, mavenReportExecutorRequest );
 
@@ -453,11 +448,19 @@ public class DefaultMavenReportExecutor
     }
 
     /**
-     * 
-     * @param reportPlugin
-     * @param repositoryRequest
-     * @param mavenReportExecutorRequest
-     * @return the plugin version
+     * Resolve report plugin version. 
+     * Steps to find a plugin version stop after each step if a non <code>null</code> value has been found:
+     * <ol>
+     *   <li>use the one defined in the reportPlugin configuration</li>
+     *   <li>search similar (same groupId and artifactId) mojo in the build/plugins section of the pom</li>
+     *   <li>search similar (same groupId and artifactId) mojo in the build/pluginManagement section of the pom</li>
+     *   <li>ask {@link PluginVersionResolver} to get a version and display a warning as it's not a recommended use</li>  
+     * </ol>
+     *
+     * @param reportPlugin the report plugin to resolve the version
+     * @param repositoryRequest TODO: unused, to be removed?
+     * @param mavenReportExecutorRequest the current report execution context
+     * @return the report plugin version
      * @throws PluginVersionResolutionException
      */
     protected String getPluginVersion( ReportPlugin reportPlugin, RepositoryRequest repositoryRequest,
@@ -465,11 +468,12 @@ public class DefaultMavenReportExecutor
         throws PluginVersionResolutionException
     {
         String reportPluginKey = reportPlugin.getGroupId() + ':' + reportPlugin.getArtifactId();
-
         if ( getLog().isDebugEnabled() )
         {
             getLog().debug( "resolving version for " + reportPluginKey );
         }
+
+        // look for version defined in the reportPlugin configuration
         if ( reportPlugin.getVersion() != null )
         {
             if ( getLog().isDebugEnabled() )
@@ -529,12 +533,7 @@ public class DefaultMavenReportExecutor
         
         PluginVersionRequest pluginVersionRequest =
             new DefaultPluginVersionRequest( plugin, mavenReportExecutorRequest.getMavenSession() );
-        //pluginVersionRequest.setOffline( mavenReportExecutorRequest.getMavenSession().getRequest().isOffline() );
-
-        //pluginVersionRequest.setForceUpdate( mavenReportExecutorRequest.getMavenSession().getRequest().isUpdateSnapshots() );
 
-        pluginVersionRequest.setGroupId( reportPlugin.getGroupId() );
-        pluginVersionRequest.setArtifactId( reportPlugin.getArtifactId() );
         PluginVersionResult result = pluginVersionResolver.resolve( pluginVersionRequest );
         if ( getLog().isDebugEnabled() )
         {
@@ -543,6 +542,13 @@ public class DefaultMavenReportExecutor
         return result.getVersion();
     }
 
+    /**
+     * Search similar (same groupId and artifactId) mojo as a given report plugin.
+     * 
+     * @param reportPlugin the report plugin to search for a similar mojo
+     * @param plugins the candidate mojos 
+     * @return the first similar mojo
+     */
     private Plugin find( ReportPlugin reportPlugin, List<Plugin> plugins )
     {
         if ( plugins == null )
@@ -564,7 +570,7 @@ public class DefaultMavenReportExecutor
      * TODO other stuff to merge ?
      * <p>
      * this method will "merge" some part of the plugin declaration existing in the build section 
-     * to the fake plugin build for report execution :
+     * to the fake plugin build for report execution:
      * <ul>
      *   <li>dependencies</li>
      * </ul>