From a421006ea89fddb6a4e73f15b7cd49f627f6c6cd Mon Sep 17 00:00:00 2001
From: mephi42 <mephi42@gmail.com>
Date: Wed, 25 Feb 2015 12:53:04 -0500
Subject: [PATCH] IVY-1515

make useCacheOnly allow lookup of changing dependencies in cache
---
 src/java/org/apache/ivy/core/cache/CacheMetadataOptions.java     | 9 +++++++++
 .../org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java | 2 +-
 src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java   | 1 +
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/java/org/apache/ivy/core/cache/CacheMetadataOptions.java b/src/java/org/apache/ivy/core/cache/CacheMetadataOptions.java
index a1c77b4..cc4ba09 100644
--- a/src/java/org/apache/ivy/core/cache/CacheMetadataOptions.java
+++ b/src/java/org/apache/ivy/core/cache/CacheMetadataOptions.java
@@ -32,6 +32,8 @@ public class CacheMetadataOptions extends CacheDownloadOptions {
 
     private boolean checkTTL = true;
 
+    private boolean useCacheOnly = false;
+
     public Namespace getNamespace() {
         return namespace;
     }
@@ -85,4 +87,11 @@ public class CacheMetadataOptions extends CacheDownloadOptions {
     public boolean isCheckTTL() {
         return checkTTL;
     }
+
+    public CacheMetadataOptions setUseCacheOnly(boolean useCacheOnly) {
+        this.useCacheOnly = useCacheOnly;
+        return this;
+    }
+
+    public boolean isUseCacheOnly() { return useCacheOnly; }
 }
diff --git a/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java b/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
index a950c0b..7dbc5f7 100644
--- a/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
+++ b/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
@@ -675,7 +675,7 @@ public class DefaultRepositoryCacheManager implements RepositoryCacheManager, Iv
             Message.verbose("don't use cache for " + mrid + ": checkModified=true");
             return null;
         }
-        if (isChanging(dd, requestedRevisionId, options)) {
+        if (!options.isUseCacheOnly() && isChanging(dd, requestedRevisionId, options)) {
             Message.verbose("don't use cache for " + mrid + ": changing=true");
             return null;
         }
diff --git a/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java b/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
index ff0fa3c..f0195df 100644
--- a/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
+++ b/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
@@ -435,6 +435,7 @@ public abstract class AbstractResolver implements DependencyResolver, HasLatestS
                 .setCheckmodified(
                     data.getOptions().isUseCacheOnly() ? Boolean.FALSE : checkmodified)
                 .setValidate(doValidate(data)).setNamespace(getNamespace())
+                .setUseCacheOnly(data.getOptions().isUseCacheOnly())
                 .setForce(data.getOptions().isRefresh())
                 .setListener(getDownloadListener(getDownloadOptions(data.getOptions())));
     }
-- 
1.9.1

