Author: xavier
Date: Sat Jan 24 14:05:24 2009
New Revision: 737358

URL: http://svn.apache.org/viewvc?rev=737358&view=rev
Log:
fix problems introduced with IVY-1012

Modified:
    
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
    
ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/MockResolver.java

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java?rev=737358&r1=737357&r2=737358&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
 (original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
 Sat Jan 24 14:05:24 2009
@@ -58,6 +58,7 @@
 import 
org.apache.ivy.plugins.resolver.ChainResolver.ResolvedModuleRevisionArtifactInfo;
 import org.apache.ivy.plugins.resolver.util.HasLatestStrategy;
 import org.apache.ivy.plugins.resolver.util.ResolvedResource;
+import org.apache.ivy.util.Checks;
 import org.apache.ivy.util.Message;
 
 /**
@@ -337,9 +338,19 @@
 
     protected ResolvedModuleRevision findModuleInCache(
             DependencyDescriptor dd, ResolveData data, boolean anyResolver) {
-        return getRepositoryCacheManager().findModuleInCache(
-            dd, dd.getDependencyRevisionId(), 
-            getCacheOptions(data), anyResolver ? null : getName());
+        ResolvedModuleRevision rmr = 
getRepositoryCacheManager().findModuleInCache(
+                    dd, dd.getDependencyRevisionId(), 
+                    getCacheOptions(data), anyResolver ? null : getName());
+        if (rmr == null) {
+            return null;
+        }
+        if (data.getReport() != null 
+                && data.isBlacklisted(data.getReport().getConfiguration(), 
rmr.getId())) {
+            Message.verbose("\t" + getName() + ": found revision in cache: " 
+                        + rmr.getId() + " for " + dd + ", but it is 
blacklisted");
+            return null;
+        }
+        return rmr;
     }
 
     public void setChangingMatcher(String changingMatcherName) {
@@ -496,25 +507,25 @@
             DependencyDescriptor dd,
             ResolvedModuleRevision newModuleFound,
             ResolveData data) {
+        Checks.checkNotNull(dd, "dd");
+        Checks.checkNotNull(data, "data");
+        
         // check if latest is asked and compare to return the most recent
         ResolvedModuleRevision previousModuleFound = 
data.getCurrentResolvedModuleRevision();
         String newModuleDesc = describe(newModuleFound);
         Message.debug("\tchecking " + newModuleDesc + " against " + 
describe(previousModuleFound));
         if (previousModuleFound == null) {
             Message.debug("\tmodule revision kept as first found: " + 
newModuleDesc);
-            getRepositoryCacheManager().saveResolvedRevision(
-                dd.getDependencyRevisionId(), 
newModuleFound.getId().getRevision());
+            saveModuleRevisionIfNeeded(dd, newModuleFound);
             return newModuleFound;
         } else if (isAfter(newModuleFound, previousModuleFound, 
data.getDate())) {
             Message.debug("\tmodule revision kept as younger: " + 
newModuleDesc);
-            getRepositoryCacheManager().saveResolvedRevision(
-                dd.getDependencyRevisionId(), 
newModuleFound.getId().getRevision());
+            saveModuleRevisionIfNeeded(dd, newModuleFound);
             return newModuleFound;
         } else if (!newModuleFound.getDescriptor().isDefault() 
                 && previousModuleFound.getDescriptor().isDefault()) {
             Message.debug("\tmodule revision kept as better (not default): " + 
newModuleDesc);
-            getRepositoryCacheManager().saveResolvedRevision(
-                dd.getDependencyRevisionId(), 
newModuleFound.getId().getRevision());
+            saveModuleRevisionIfNeeded(dd, newModuleFound);
             return newModuleFound;
         } else {
             Message.debug("\tmodule revision discarded as older: " + 
newModuleDesc);
@@ -522,6 +533,15 @@
         }
     }
 
+    protected void saveModuleRevisionIfNeeded(DependencyDescriptor dd,
+            ResolvedModuleRevision newModuleFound) {
+        if (newModuleFound != null 
+                && 
getSettings().getVersionMatcher().isDynamic(dd.getDependencyRevisionId())) {
+            getRepositoryCacheManager().saveResolvedRevision(
+                dd.getDependencyRevisionId(), 
newModuleFound.getId().getRevision());
+        }
+    }
+
     private String describe(ResolvedModuleRevision rmr) {
         if (rmr == null) {
             return "[none]";

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/MockResolver.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/MockResolver.java?rev=737358&r1=737357&r2=737358&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/MockResolver.java 
(original)
+++ 
ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/MockResolver.java 
Sat Jan 24 14:05:24 2009
@@ -111,4 +111,7 @@
         return null;
     }
 
+    protected void saveModuleRevisionIfNeeded(DependencyDescriptor dd,
+            ResolvedModuleRevision newModuleFound) {
+    }
 }


Reply via email to