Index: src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
===================================================================
--- src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java	(révision 612799)
+++ src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java	(copie de travail)
@@ -30,7 +30,9 @@
 import org.apache.ivy.util.extendable.UnmodifiableExtendableItem;
 
 /**
- *
+ * Identifies a module in a particular version
+ * 
+ * @see <a href="package-summary.html">org.apache.ivy.core.module.id</a>
  */
 public class ModuleRevisionId extends UnmodifiableExtendableItem {
     private static final String ENCODE_SEPARATOR = ModuleId.ENCODE_SEPARATOR;
@@ -43,7 +45,6 @@
     private static final String REV_STRICT_CHARS_PATTERN 
         = "[a-zA-Z0-9\\-/\\._+=,\\[\\]\\{\\}\\(\\):@]";
 
-    
     private static final Map/*<ModuleRevisionId, ModuleRevisionId>*/ CACHE = new WeakHashMap();
 
     /**
Index: src/java/org/apache/ivy/core/module/id/ModuleId.java
===================================================================
--- src/java/org/apache/ivy/core/module/id/ModuleId.java	(révision 612799)
+++ src/java/org/apache/ivy/core/module/id/ModuleId.java	(copie de travail)
@@ -23,7 +23,9 @@
 import java.util.regex.Pattern;
 
 /**
- *
+ * Identifies a module, without revision information
+ * 
+ * @see <a href="package-summary.html">org.apache.ivy.core.module.id</a>
  */
 public class ModuleId implements Comparable {
     static final String ENCODE_SEPARATOR = ":#@#:";
Index: src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java
===================================================================
--- src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java	(révision 612799)
+++ src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java	(copie de travail)
@@ -23,7 +23,9 @@
 import org.apache.ivy.util.extendable.UnmodifiableExtendableItem;
 
 /**
- * identifies an artifact in a particular module revision
+ * Identifies an artifact in a particular module revision
+ * 
+ * @see <a href="package-summary.html">org.apache.ivy.core.module.id</a>
  */
 public class ArtifactRevisionId extends UnmodifiableExtendableItem {
     public static ArtifactRevisionId newInstance(ModuleRevisionId mrid, String name, String type,
Index: src/java/org/apache/ivy/core/module/id/ArtifactId.java
===================================================================
--- src/java/org/apache/ivy/core/module/id/ArtifactId.java	(révision 612799)
+++ src/java/org/apache/ivy/core/module/id/ArtifactId.java	(copie de travail)
@@ -19,6 +19,8 @@
 
 /**
  * Identifies an artifact in a module, without revision information
+ * 
+ * @see <a href="package-summary.html">org.apache.ivy.core.module.id</a>
  */
 public class ArtifactId {
     private ModuleId mid;
Index: src/java/org/apache/ivy/core/module/descriptor/ModuleDescriptor.java
===================================================================
--- src/java/org/apache/ivy/core/module/descriptor/ModuleDescriptor.java	(révision 612799)
+++ src/java/org/apache/ivy/core/module/descriptor/ModuleDescriptor.java	(copie de travail)
@@ -34,7 +34,7 @@
 import org.apache.ivy.util.extendable.ExtendableItem;
 
 /**
- *
+ * Decriptor of a module. This is the Java representation of an ivy.xml
  */
 public interface ModuleDescriptor extends ExtendableItem, ArtifactInfo {
     public static final String DEFAULT_CONFIGURATION = "default";
Index: src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java
===================================================================
--- src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java	(révision 612799)
+++ src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java	(copie de travail)
@@ -71,6 +71,10 @@
         return artifact.getName();
     }
 
+    /**
+     * 
+     * @return the type of the downloaded artifact
+     */
     public String getType() {
         return artifact.getType();
     }
Index: src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java
===================================================================
--- src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java	(révision 612799)
+++ src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java	(copie de travail)
@@ -44,7 +44,7 @@
 import org.apache.ivy.util.Message;
 
 /**
- *
+ * Represents a whole resolution report for a module but for a specific configuration
  */
 public class ConfigurationResolveReport {
 
@@ -255,41 +255,73 @@
         return total;
     }
 
+    /**
+     * Get every report on the download requests.
+     * 
+     * @return the list of reports, never <code>null</code>
+     */
     public ArtifactDownloadReport[] getAllArtifactsReports() {
-        List result = new ArrayList();
-        for (Iterator iter = dependencyReports.values().iterator(); iter.hasNext();) {
-            Collection reports = (Collection) iter.next();
-            result.addAll(reports);
-        }
-        return (ArtifactDownloadReport[]) result.toArray(new ArtifactDownloadReport[result.size()]);
+        return getArtifactsReports(null, true);
     }
 
-    public ArtifactDownloadReport[] getDownloadedArtifactsReports() {
-        List result = new ArrayList();
+    /**
+     * Get the report on the download requests. The list of download report can be restricted to a
+     * specific download status, and also remove the download report for the evicted modules.
+     * 
+     * @param downloadStatus
+     *            the status of download to retreive. Set it to <code>null</code> for no
+     *            restriction on the download status
+     * @param withEvicted
+     *            set it to <code>true</code> if the report for the evicted modules have to be
+     *            retrieved.
+     * @return the list of reports, never <code>null</code>
+     * @see ArtifactDownloadReport
+     */
+    public ArtifactDownloadReport[] getArtifactsReports(DownloadStatus downloadStatus, boolean withEvicted) {
+        Collection all = new HashSet();
+        IvyNode[] evicteds = null;
+        if (!withEvicted) {
+            evicteds = getEvictedNodes();
+        }
         for (Iterator iter = dependencyReports.values().iterator(); iter.hasNext();) {
             Collection reports = (Collection) iter.next();
-            for (Iterator iterator = reports.iterator(); iterator.hasNext();) {
-                ArtifactDownloadReport adr = (ArtifactDownloadReport) iterator.next();
-                if (adr.getDownloadStatus() == DownloadStatus.SUCCESSFUL) {
-                    result.add(adr);
+            for (Iterator itReport  =reports.iterator(); itReport.hasNext(); ) {
+                ArtifactDownloadReport report = (ArtifactDownloadReport) itReport.next();
+                if (downloadStatus != null && report.getDownloadStatus() != downloadStatus) {
+                    continue;
                 }
+                boolean evicted = false;
+                if (evicteds != null) {
+                    int j = 0;
+                    while (!evicted && j < evicteds.length) {
+                        evicted = report.getArtifact().getModuleRevisionId().equals(evicteds[j].getId());
+                        j++;
+                    }
+                }
+                if (!evicted) {
+                    all.add(report);   
+                }
             }
         }
-        return (ArtifactDownloadReport[]) result.toArray(new ArtifactDownloadReport[result.size()]);
+        return (ArtifactDownloadReport[]) all.toArray(new ArtifactDownloadReport[all.size()]);
     }
 
+    /**
+     * Get the report on the sucessfull download requests with the evicted modules
+     * 
+     * @return the list of reports, never <code>null</code>
+     */
+    public ArtifactDownloadReport[] getDownloadedArtifactsReports() {
+        return getArtifactsReports(DownloadStatus.SUCCESSFUL, true);
+    }
+
+    /**
+     * Get the report on the failed download requests with the evicted modules
+     * 
+     * @return the list of reports, never <code>null</code>
+     */
     public ArtifactDownloadReport[] getFailedArtifactsReports() {
-        List result = new ArrayList();
-        for (Iterator iter = dependencyReports.values().iterator(); iter.hasNext();) {
-            Collection reports = (Collection) iter.next();
-            for (Iterator iterator = reports.iterator(); iterator.hasNext();) {
-                ArtifactDownloadReport adr = (ArtifactDownloadReport) iterator.next();
-                if (adr.getDownloadStatus() == DownloadStatus.FAILED) {
-                    result.add(adr);
-                }
-            }
-        }
-        return (ArtifactDownloadReport[]) result.toArray(new ArtifactDownloadReport[result.size()]);
+        return getArtifactsReports(DownloadStatus.FAILED, true);
     }
 
     public boolean hasError() {
Index: src/java/org/apache/ivy/core/report/ResolveReport.java
===================================================================
--- src/java/org/apache/ivy/core/report/ResolveReport.java	(révision 612799)
+++ src/java/org/apache/ivy/core/report/ResolveReport.java	(copie de travail)
@@ -42,12 +42,13 @@
 public class ResolveReport {
     private ModuleDescriptor md;
 
+    /** String conf -> ConfigurationResolveReport report */
     private Map confReports = new LinkedHashMap();
 
     private List problemMessages = new ArrayList();
 
-    private List dependencies = new ArrayList(); 
-    // the list of all dependencies resolved, ordered from the more dependent to the less dependent
+    /** the list of all dependencies resolved, ordered from the more dependent to the less dependent */
+    private List dependencies = new ArrayList();
 
     private List artifacts = new ArrayList();
 
@@ -89,7 +90,7 @@
         return hasError;
     }
 
-    public void output(ReportOutputter[] outputters, ResolutionCacheManager cacheMgr) 
+    public void output(ReportOutputter[] outputters, ResolutionCacheManager cacheMgr)
             throws IOException {
         for (int i = 0; i < outputters.length; i++) {
             outputters[i].output(this, cacheMgr);
@@ -118,20 +119,61 @@
         return (IvyNode[]) all.toArray(new IvyNode[all.size()]);
     }
 
+    /**
+     * Get every report on the download requests.
+     * 
+     * @return the list of reports, never <code>null</code>
+     */
     public ArtifactDownloadReport[] getFailedArtifactsReports() {
-        Collection all = new HashSet();
-        for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
-            ConfigurationResolveReport report = (ConfigurationResolveReport) iter.next();
-            all.addAll(Arrays.asList(report.getFailedArtifactsReports()));
-        }
-        return (ArtifactDownloadReport[]) all.toArray(new ArtifactDownloadReport[all.size()]);
+        return getArtifactsReports(DownloadStatus.FAILED, true);
     }
 
+    /**
+     * Get every report on the download requests.
+     * 
+     * @return the list of reports, never <code>null</code>
+     */
     public ArtifactDownloadReport[] getAllArtifactsReports() {
+        return getArtifactsReports(null, true);
+    }
+
+    /**
+     * Get the report on the download requests. The list of download report can be restricted to a
+     * specific download status, and also remove the download report for the evicted modules.
+     * 
+     * @param downloadStatus
+     *            the status of download to retreive. Set it to <code>null</code> for no
+     *            restriction on the download status
+     * @param withEvicted
+     *            set it to <code>true</code> if the report for the evicted modules have to be
+     *            retrieved.
+     * @return the list of reports, never <code>null</code>
+     * @see ConfigurationResolveReport#getArtifactsReports(DownloadStatus, boolean)
+     */
+    public ArtifactDownloadReport[] getArtifactsReports(DownloadStatus downloadStatus, boolean withEvicted) {
         Collection all = new HashSet();
+        IvyNode[] evicteds = null;
+        if (!withEvicted) {
+            evicteds = getEvictedNodes();
+        }
         for (Iterator iter = confReports.values().iterator(); iter.hasNext();) {
             ConfigurationResolveReport report = (ConfigurationResolveReport) iter.next();
-            all.addAll(Arrays.asList(report.getAllArtifactsReports()));
+            ArtifactDownloadReport[] reports = report.getArtifactsReports(downloadStatus, withEvicted);
+            if (evicteds == null) {
+                all.addAll(Arrays.asList(reports));
+            } else {
+                for (int i = 0; i < reports.length; i++) {
+                    boolean evicted = false;
+                    int j = 0;
+                    while (!evicted && j < evicteds.length) {
+                        evicted = reports[i].getArtifact().getModuleRevisionId().equals(evicteds[j].getId());
+                        j++;
+                    }
+                    if (!evicted) {
+                        all.add(reports[i]);   
+                    }
+                }
+            }
         }
         return (ArtifactDownloadReport[]) all.toArray(new ArtifactDownloadReport[all.size()]);
     }
@@ -209,7 +251,7 @@
      * Returns the list of all dependencies concerned by this report as a List of IvyNode ordered
      * from the more dependent to the least one
      * 
-     * @return  The list of all dependencies.
+     * @return The list of all dependencies.
      */
     public List getDependencies() {
         return dependencies;
@@ -219,7 +261,7 @@
      * Returns the list of all artifacts which should be downloaded per this resolve To know if the
      * artifact have actually been downloaded use information found in ConfigurationResolveReport.
      * 
-     * @return  The list of all artifacts.
+     * @return The list of all artifacts.
      */
     public List getArtifacts() {
         return artifacts;
@@ -262,7 +304,7 @@
     public void setDownloadSize(long size) {
         this.downloadSize = size;
     }
-    
+
     /**
      * The total size of downloaded artifacts, in bytes.
      * <p>
