code simplification

git-svn-id: https://svn.apache.org/repos/asf/maven/shared/trunk@1465271 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java b/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java
index 41ec9e5..ff6f4b5 100644
--- a/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java
+++ b/src/main/java/org/apache/maven/reporting/exec/DefaultMavenReportExecutor.java
@@ -22,12 +22,13 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 
-import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
 import org.apache.maven.artifact.repository.RepositoryRequest;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.lifecycle.LifecycleExecutor;
@@ -67,7 +68,7 @@
  * </p>
  * <p>
  *   <b>Note</b> if no version is defined in the report plugin, the version will be searched
- *   with method {@link #getPluginVersion(ReportPlugin, MavenReportExecutorRequest)}
+ *   with method {@link #resolvePluginVersion(ReportPlugin, MavenReportExecutorRequest)}
  *   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>
@@ -138,49 +139,40 @@
         }
         getLog().debug( "DefaultMavenReportExecutor.buildMavenReports()" );
 
-        List<String> reportPluginKeys = new ArrayList<String>();
-        List<MavenReportExecution> reports = new ArrayList<MavenReportExecution>();
+        Set<String> reportPluginKeys = new HashSet<String>();
+        List<MavenReportExecution> reportExecutions = new ArrayList<MavenReportExecution>();
 
         String pluginKey = "";
         try
         {
             for ( ReportPlugin reportPlugin : mavenReportExecutorRequest.getReportPlugins() )
             {
-                pluginKey = reportPlugin.getGroupId() + ":" + reportPlugin.getArtifactId();
+                pluginKey = reportPlugin.getGroupId() + ':' + reportPlugin.getArtifactId();
 
-                buildReportPlugin( mavenReportExecutorRequest, reportPlugin, reportPluginKeys, reports );
+                if ( !reportPluginKeys.add( pluginKey ) )
+                {
+                    logger.info( "plugin " + pluginKey + " will be executed more than one time" );
+                }
+
+                reportExecutions.addAll( buildReportPlugin( mavenReportExecutorRequest, reportPlugin ) );
             }
-            return reports;
         }
         catch ( Exception e )
         {
             throw new MojoExecutionException( "failed to get report for " + pluginKey, e );
         }
+
+        return reportExecutions;
     }
 
-    protected void buildReportPlugin( MavenReportExecutorRequest mavenReportExecutorRequest, ReportPlugin reportPlugin,
-                                      List<String> reportPluginKeys, List<MavenReportExecution> reports )
+    protected List<MavenReportExecution> buildReportPlugin( MavenReportExecutorRequest mavenReportExecutorRequest,
+                                                            ReportPlugin reportPlugin )
         throws Exception
     {
         Plugin plugin = new Plugin();
         plugin.setGroupId( reportPlugin.getGroupId() );
         plugin.setArtifactId( reportPlugin.getArtifactId() );
-
-        String pluginKey = reportPlugin.getGroupId() + ":" + reportPlugin.getArtifactId();
-        if ( reportPluginKeys.contains( pluginKey ) )
-        {
-            logger.info( "plugin " + pluginKey + " will be executed more than one time" );
-        }
-        else
-        {
-            reportPluginKeys.add( pluginKey );
-        }
-
-        RepositoryRequest repositoryRequest = new DefaultRepositoryRequest();
-        repositoryRequest.setLocalRepository( mavenReportExecutorRequest.getLocalRepository() );
-        repositoryRequest.setRemoteRepositories( mavenReportExecutorRequest.getProject().getPluginArtifactRepositories() );
-
-        plugin.setVersion( getPluginVersion( reportPlugin, mavenReportExecutorRequest ) );
+        plugin.setVersion( resolvePluginVersion( reportPlugin, mavenReportExecutorRequest ) );
 
         mergePluginToReportPlugin( mavenReportExecutorRequest, plugin, reportPlugin );
 
@@ -196,6 +188,7 @@
 
         if ( reportPlugin.getReportSets().isEmpty() && reportPlugin.getReports().isEmpty() )
         {
+            // by default, execute every reports (goals)
             List<MojoDescriptor> mojoDescriptors = pluginDescriptor.getMojos();
             for ( MojoDescriptor mojoDescriptor : mojoDescriptors )
             {
@@ -218,6 +211,7 @@
             }
         }
 
+        List<MavenReportExecution> reports = new ArrayList<MavenReportExecution>();
         for ( Entry<String, PlexusConfiguration> entry : goalsWithConfiguration.entrySet() )
         {
             MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( entry.getKey() );
@@ -291,6 +285,8 @@
                 reports.add( mavenReportExecution );
             }
         }
+
+        return reports;
     }
 
     private boolean canGenerateReport( MavenReport mavenReport, MojoExecution mojoExecution )
@@ -456,7 +452,7 @@
      * @return the report plugin version
      * @throws PluginVersionResolutionException
      */
-    protected String getPluginVersion( ReportPlugin reportPlugin, MavenReportExecutorRequest mavenReportExecutorRequest )
+    protected String resolvePluginVersion( ReportPlugin reportPlugin, MavenReportExecutorRequest mavenReportExecutorRequest )
         throws PluginVersionResolutionException
     {
         String reportPluginKey = reportPlugin.getGroupId() + ':' + reportPlugin.getArtifactId();
diff --git a/src/main/java/org/apache/maven/reporting/exec/MavenReportExecutorRequest.java b/src/main/java/org/apache/maven/reporting/exec/MavenReportExecutorRequest.java
index d186f7d..91032ae 100644
--- a/src/main/java/org/apache/maven/reporting/exec/MavenReportExecutorRequest.java
+++ b/src/main/java/org/apache/maven/reporting/exec/MavenReportExecutorRequest.java
@@ -24,11 +24,9 @@
 import org.apache.maven.project.MavenProject;
 
 /**
- * <p>
- *   Bean which contains necessary informations for build {@link MavenReportExecution} 
- *   with {@link MavenReportExecutor}.
- *   The goal is to store some informations regarding the current Maven execution.
- * </p>
+ * Bean which contains necessary informations to build {@link MavenReportExecution} with {@link MavenReportExecutor}.
+ * The goal is to store some informations regarding the current Maven execution.
+ * 
  * @author Olivier Lamy
  * @version $Id$
  */
@@ -81,5 +79,4 @@
     {
         this.reportPlugins = reportPlugins;
     }
-
 }
diff --git a/src/main/java/org/apache/maven/reporting/exec/ReportPlugin.java b/src/main/java/org/apache/maven/reporting/exec/ReportPlugin.java
index 323d7d2..48d0218 100644
--- a/src/main/java/org/apache/maven/reporting/exec/ReportPlugin.java
+++ b/src/main/java/org/apache/maven/reporting/exec/ReportPlugin.java
@@ -27,14 +27,11 @@
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 
 /**
- * <p>
  * Represents a reporting plugin and its executions. It basically contains similar informations
- * as a {@link Plugin} but in order to decoupled reporting stuff from core some values are copied.
- * </p>
+ * as a {@link Plugin}, but in order to decouple reporting stuff from core, some values are copied.
  */
 public class ReportPlugin
 {
-
     private String groupId = "org.apache.maven.plugins";
 
     private String artifactId;
@@ -111,7 +108,4 @@
     {
         this.reports = reports;
     }
-
-    
-
 }
diff --git a/src/main/java/org/apache/maven/reporting/exec/ReportSet.java b/src/main/java/org/apache/maven/reporting/exec/ReportSet.java
index 73c93be..918c57d 100644
--- a/src/main/java/org/apache/maven/reporting/exec/ReportSet.java
+++ b/src/main/java/org/apache/maven/reporting/exec/ReportSet.java
@@ -25,7 +25,7 @@
 import org.codehaus.plexus.configuration.PlexusConfiguration;
 
 /**
- * Represents a set of reports and configuration to be used to generate them.
+ * Represents a set of reports and a configuration to be used to generate them.
  */
 public class ReportSet
 {
diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt
index 89f1acd..833c0cf 100644
--- a/src/site/apt/index.apt
+++ b/src/site/apt/index.apt
@@ -33,9 +33,9 @@
 +----
 
   Notice: this is the model from plugins in <<<\<reporting\>>>> section of POM without <<<\<inherited\>>>> element
-  and with <<<\<reports\>>>> list that simplifies reports configuration in usual cases.
+  and with immediate <<<\<reports\>>>> list (ie not in <<<\<reportSet\>>>>) that simplifies reports configuration in usual cases.
 
   Maven 3 core makes an automatic transformation of <<<\<reporting\>>>> POM section to <<<maven-site-plugin>>>
   configuration through the
   {{{http://maven.apache.org/ref/current/maven-model-builder/apidocs/org/apache/maven/model/plugin/ReportingConverter.html}ReportingConverter}}
-  component.
\ No newline at end of file
+  component.