You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by xa...@apache.org on 2008/01/18 16:23:58 UTC

svn commit: r613184 - in /ant/ivy/core/trunk: ./ src/java/org/apache/ivy/core/module/descriptor/ src/java/org/apache/ivy/core/module/id/ src/java/org/apache/ivy/core/report/

Author: xavier
Date: Fri Jan 18 07:23:43 2008
New Revision: 613184

URL: http://svn.apache.org/viewvc?rev=613184&view=rev
Log:
IMPROVEMENT: In the ResolveReport class, add the possibility to filter the evicted module while getting the list of DownloadArtifact (IVY-704) (thanks to Nicolas Lalevée)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/descriptor/ModuleDescriptor.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Fri Jan 18 07:23:43 2008
@@ -71,6 +71,7 @@
 - IMPROVEMENT: Flexible cache management (IVY-399 - not completed yet)
 - IMPROVEMENT: Decrease memory footprint (IVY-662)
 - IMPROVEMENT: Downgrade Ant version requirement to 1.6 to build Ivy (IVY-687)
+- IMPROVEMENT: In the ResolveReport class, add the possibility to filter the evicted module while getting the list of DownloadArtifact (IVY-704) (thanks to Nicolas Lalevée)
 
 - FIX: Ivy swallows ParseException when using a latest strategy requiring module descriptors (IVY-702) (thanks to Nicolas Lalevée)
 - FIX: Problem with cached Ivy files which have extra attributes (IVY-693)

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/descriptor/ModuleDescriptor.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/descriptor/ModuleDescriptor.java?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/descriptor/ModuleDescriptor.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/descriptor/ModuleDescriptor.java Fri Jan 18 07:23:43 2008
@@ -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";

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactId.java Fri Jan 18 07:23:43 2008
@@ -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;

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ArtifactRevisionId.java Fri Jan 18 07:23:43 2008
@@ -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,

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleId.java Fri Jan 18 07:23:43 2008
@@ -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 = ":#@#:";

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java Fri Jan 18 07:23:43 2008
@@ -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();
 
     /**

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java Fri Jan 18 07:23:43 2008
@@ -71,6 +71,10 @@
         return artifact.getName();
     }
 
+    /**
+     * 
+     * @return the type of the downloaded artifact
+     */
     public String getType() {
         return artifact.getType();
     }

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java Fri Jan 18 07:23:43 2008
@@ -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 {
 
@@ -177,6 +177,15 @@
         return (IvyNode[]) evicted.toArray(new IvyNode[evicted.size()]);
     }
 
+    private Set/*<ModuleRevisionId>*/ getEvictedMrids() {
+        Set/*<ModuleRevisionId>*/ evicted = new HashSet();
+        IvyNode[] evictedNodes = getEvictedNodes();
+        for (int i = 0; i < evictedNodes.length; i++) {
+            evicted.add(evictedNodes[i].getId());
+        }
+        return evicted;
+    }
+
     public IvyNode[] getDownloadedNodes() {
         List downloaded = new ArrayList();
         for (Iterator iter = getDependencies().iterator(); iter.hasNext();) {
@@ -255,41 +264,67 @@
         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();
+        Collection evictedMrids = null;
+        if (!withEvicted) {
+            evictedMrids = getEvictedMrids();
+        }
         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;
+                }
+                if (withEvicted 
+                        || !evictedMrids.contains(report.getArtifact().getModuleRevisionId())) {
+                    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() {

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java?rev=613184&r1=613183&r2=613184&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/report/ResolveReport.java Fri Jan 18 07:23:43 2008
@@ -42,12 +42,15 @@
 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 +92,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 +121,46 @@
         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, <code>false</code> to exclude reports from modules evicted in all
+     *            configurations.
+     * @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();
         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);
+            all.addAll(Arrays.asList(reports));
         }
         return (ArtifactDownloadReport[]) all.toArray(new ArtifactDownloadReport[all.size()]);
     }
@@ -209,7 +238,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 +248,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 +291,7 @@
     public void setDownloadSize(long size) {
         this.downloadSize = size;
     }
-    
+
     /**
      * The total size of downloaded artifacts, in bytes.
      * <p>