Author: gscokart
Date: Thu Feb 21 07:00:07 2008
New Revision: 629817

URL: http://svn.apache.org/viewvc?rev=629817&view=rev
Log:
Flexible cache management (IVY-399) apply patch of Adrian Sandor

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/doc/configuration/caches.html
    ant/ivy/core/trunk/doc/configuration/caches/cache.html
    ant/ivy/core/trunk/doc/configuration/conf.html
    
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/ant/ivysettings-cleancache.xml
    
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-cache.xml
    
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml
    ant/ivy/core/trunk/test/repositories/extra-attributes/ivysettings.xml
    ant/ivy/core/trunk/test/repositories/ivysettings-multicache.xml

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Thu Feb 21 07:00:07 2008
@@ -9,7 +9,7 @@
        Maarteen Coene
        Xavier Hanin
        Gilles Scokart
- 
+  
  Contributors
        Ingo Adler
        Stephane Bailliez
@@ -51,6 +51,7 @@
        Geoff Reedy
        Christian Riege
        Andreas Sahlbach
+       Adrian Sandor   
        Ruslan Shevchenko
        John Shields
        Johan Stuyts
@@ -73,7 +74,7 @@
 - IMPROVEMENT: Make IBiblio resolver compatible with maven proxy (IVY-466)
 - IMPROVEMENT: Use namespace aware validation (IVY-553)
 - IMPROVEMENT: use ModuleRevisionId instead of ModuleId in 
IvySettings#getResolver (IVY-691)
-- IMPROVEMENT: Flexible cache management (IVY-399 - not completed yet)
+- IMPROVEMENT: Flexible cache management (IVY-399) (With contribution of 
Adrian Sandor)
 - 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)

Modified: ant/ivy/core/trunk/doc/configuration/caches.html
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/configuration/caches.html?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/configuration/caches.html (original)
+++ ant/ivy/core/trunk/doc/configuration/caches.html Thu Feb 21 07:00:07 2008
@@ -27,14 +27,20 @@
        <textarea id="xooki-source">
 <b>Tag:</b> caches
 
-Defines the list of available repository cache instances. <span 
class="since">since 2.0</span>.
+Configures the Ivy cache system. <span class="since">since 2.0</span>.
+See <a href="../concept.html#cache">cache concept</a> for details on the Ivy 
cache concept.
 
-By default, Ivy defines one repository cache instance, called 'default-cache', 
and using the defaults cache settings defined using attributes on this tag. 
This default instance is defined as long as you don't define your own default 
cache using the 'default' attribute, and have at least one dependency resolver 
which doesn't specify which cache instance to use.
+By default, Ivy defines one repository cache instance, called 'default-cache', 
which uses the default cache settings defined using attributes on this tag. 
This default instance is defined as long as you don't define your own default 
cache using the 'default' attribute, and have at least one dependency resolver 
which doesn't specify which cache instance to use.
 
-Since repository cache implementation are pluggable, you can either define new 
cache instances based on the default implementation provided in Ivy using the 
cache child element, or use custom cache implementations using child elements 
as you have defined using [[configuration/typedef]].
+<em>defaultCacheDir</em> is the default directory used for both the resolution 
and repository cache(s). It usually points to a directory in your filesystem. 
If you want to isolate resolution cache from repository cache, we recommend 
setting both the resolutionCacheDir and repositoryCacheDir attributes on this 
tag instead of using defaultCacheDir.
+
+Since repository cache implementations are pluggable, you can either define 
new cache instances based on the default implementation provided in Ivy using 
the [[configuration/caches/cache]] child element, or use custom cache 
implementations using child elements as you have defined using 
[[configuration/typedef]].
 
 <em>ivyPattern</em> and <em>artifactPattern</em> are used to configure the 
default way Ivy stores ivy files and artifacts in repository cache(s). Usually 
you do not have to change this, unless you want to use the cache directly from 
another tool, which is not recommended. These patterns are relative to the 
repository cache base directory.
 
+<em>checkUpToDate</em> indicates to ivy if it must check date of artifacts 
before retrieving them (i.e. copying them from
+cache to another place in your filesystem). Usually it is a good thing to 
check date to avoid unnecessary copy, even if it's most of the time a local 
copy.
+
 <h1>Attributes</h1>
 <table class="ivy-attributes">
 <thead>
@@ -43,13 +49,20 @@
 <tbody>
     <tr><td>default</td><td>the name of the default cache to use on all 
resolvers not defining the cache instance to use</td>
         <td>No, defaults to a default cache manager instance named 
'default-cache'</td></tr>
-    <tr><td>basedir</td><td>the path of the default directory to use to put 
repository cache data. <strong>This should not point to a directory used as a 
repository!</strong></td>
-        <td>No, defaults to defaultCache defined in 
[[configuration/conf]]</td></tr>
+    <tr><td>defaultCacheDir</td><td>a path to a directory to use as default 
basedir for both resolution and repository cache(s)</td>
+        <td>No, defaults to .ivy2/cache in the user's home directory</td></tr>
+    <tr><td>resolutionCacheDir</td><td>the path of the directory to use for 
all resolution cache data</td>
+        <td>No, defaults to defaultCacheDir</td></tr>
+    <tr><td>repositoryCacheDir</td><td>the path of the default directory to 
use for repository cache data. <strong>This should not point to a directory 
used as a repository!</strong></td>
+        <td>No, defaults to defaultCacheDir</td></tr>
     <tr><td>ivyPattern</td><td>default pattern used to indicate where ivy 
files should be put in the repository cache(s)</td>
         <td>No, defaults to 
[organisation]/[module]/ivy-[revision].xml</td></tr>
-    <tr><td>artifactPattern</td><td>default pattern used to indicate where 
artifact files should be put in repository cache(s)</td>
+    <tr><td>artifactPattern</td><td>default pattern used to indicate where 
artifact files should be put in the repository cache(s)</td>
         <td>No, defaults to 
[organisation]/[module]/[type]s/[artifact]-[revision].[ext]</td></tr>
-    <tr><td>useOrigin</td><td>the default value to use for useOrigin for 
caches in which it isn't specifically defined</td>
+    <tr><td>checkUpToDate</td><td>Indicates if date should be checked before 
retrieving artifacts from cache</td>
+        <td>No, defaults to true</td></tr>
+    <tr><td>useOrigin</td><td>the default value to use for useOrigin for 
caches in which it isn't specifically defined.
+       Use true to avoid the copy of local artifacts to the cache and use 
directly their original location.</td>
         <td>No, defaults to false</td></tr>
     <tr><td>lockStragegy</td><td>the name of the default 
[[configuration/lock-strategies lock strategy]] to use when accessing 
repository cache(s)</td>
         <td>No, defaults to <em>no-lock</em></td></tr>
@@ -62,8 +75,6 @@
 </thead>
 <tbody>
     <tr><td><a href="caches/cache.html">cache</a></td><td>defines a new 
repository cache instance, based on the default repository cache 
implementation</td>
-        <td>0..n</td></tr>
-    <tr><td><em>any cache</em></td><td>defines a new repository cache 
instance</td>
         <td>0..n</td></tr>
 </tbody>
 </table>

Modified: ant/ivy/core/trunk/doc/configuration/caches/cache.html
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/configuration/caches/cache.html?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/configuration/caches/cache.html (original)
+++ ant/ivy/core/trunk/doc/configuration/caches/cache.html Thu Feb 21 07:00:07 
2008
@@ -40,7 +40,7 @@
     <tr><td>name</td><td>name of the cache instance</td>
         <td>Yes</td></tr>
     <tr><td>basedir</td><td>the path of the base directory to use to put 
repository cache data. <strong>This should not point to a directory used as a 
repository!</strong></td>
-        <td>No, defaults to basedir defined in 
[[configuration/caches]]</td></tr>
+        <td>No, defaults to repositoryCacheDir defined in 
[[configuration/caches]]</td></tr>
     <tr><td>ivyPattern</td><td>the pattern to use to store cached ivy 
files</td>
         <td>No, defaults to default cache ivy pattern as configured in 
[[configuration/caches]]</td></tr>
     <tr><td>artifactPattern</td><td>the pattern to use to store cached 
artifacts</td>

Modified: ant/ivy/core/trunk/doc/configuration/conf.html
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/configuration/conf.html?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/configuration/conf.html (original)
+++ ant/ivy/core/trunk/doc/configuration/conf.html Thu Feb 21 07:00:07 2008
@@ -27,22 +27,16 @@
        <textarea id="xooki-source">
 <b>Tag:</b> settings
 
-Configures some important ivy info: default cache, default resolver, ...
+Configures some important ivy info: default resolver, latest strategy, 
conflict manager...
 
-Default cache is the default directory used for both the resolution and 
repository cache(s). It usually points to a directory in your filesystem. If 
you want to isolate resolution cache from repository cache, we recommend 
setting both the resolutionCacheDir attribute on this tag and the basedir 
attribute on [[configuration/caches]] instead of using defaultCache.
-See [[concept cache concept]] for details on Ivy cache concept.
-
-Default resolver is used whenever nothing else is configured in the modules 
section of the configuration file. It should give the name of a dependency 
resolver defined in the resolvers section of the configuration file.
+Default resolver is used whenever nothing else is configured in the modules 
section of the settings file. It should give the name of a dependency resolver 
defined in the [[configuration/resolvers]] section of the settings file.
 
 Default latest strategy and conflict manager can also be configured here.
 
-validate indicates if ivy files should generally be validate against xsd or 
not. This setting is only a default value, and can be overriden :
+<em>validate</em> indicates if ivy files should generally be validated against 
the xsd or not. This setting is only a default value, and can be overridden:
 1) in ant tasks
 2) in resolvers
-So if there is a setting in the resolver, it always win against all other 
settings.
-
-checkUpToDate indicates to ivy if it must check date of artifacts before 
retrieving them (i.e. copying them from
-cache to another place in your filesystem). Usually it is a good thing to 
check date to avoid unnecessary copy, even if it's most of the time a local 
copy.
+So if there is a setting in the resolver, it always wins against all other 
settings.
 
 <h1>Attributes</h1>
 <table class="ivy-attributes">
@@ -50,10 +44,6 @@
     <tr><th class="ivy-att">Attribute</th><th 
class="ivy-att-desc">Description</th><th class="ivy-att-req">Required</th></tr>
 </thead>
 <tbody>
-    <tr><td>defaultCache</td><td>a path to a directory to use as default 
basedir for both resolution and repository cache(s)</td>
-        <td>No, defaults to .ivy2/cache in user home</td></tr>
-    <tr><td>resolutionCacheDir</td><td>the path of the directory to use to put 
all resolution cache data <span class="since">since 2.0</span></td>
-        <td>No, defaults to defaultCache</td></tr>
     <tr><td>defaultResolver</td><td>the name of the default resolver to 
use</td>
         <td>No, but all modules should be configured in the modules section if 
not provided</td></tr>
     <tr><td>defaultLatestStrategy</td><td>the name of the default latest 
strategy to use</td>
@@ -66,14 +56,20 @@
         <td>No, defaults to warn</td></tr>
     <tr><td>validate</td><td>Indicates if ivy files should be validated 
against ivy.xsd or not.</td>
         <td>No, defaults to true</td></tr>
-    <tr><td>checkUpToDate</td><td>Indicates if date should be checked before 
retrieving artifacts from cache</td>
+    <tr><td>useRemoteConfig</td><td>true to configure ivyrep and ibiblio 
resolver from a remote configuration file (updated with changes in those 
repository structure if any) (<span class="since">since 1.2</span>)</td>
+        <td>No, defaults to false</td></tr>
+    <tr><td><s>defaultCache</s></td><td>a path to a directory to use as 
default basedir for both resolution and repository cache(s).
+           <i>Deprecated, we recommend using defaultCacheDir on the 
[[configuration/caches]] tag instead</i></td>
+        <td>No, defaults to .ivy2/cache in user home</td></tr>
+    <tr><td><s>checkUpToDate</s></td><td>Indicates if date should be checked 
before retrieving artifacts from cache.
+       <i>Deprecated, we recommend using checkUpToDate on the 
[[configuration/caches]] tag instead</i></td>
         <td>No, defaults to true</td></tr>
-    <tr><td>cacheIvyPattern</td><td>a pattern to indicate where ivy files 
should be put in cache. <i>We recommend using the repositoryIvyPattern on the 
[[configuration/cache]] tag instead</i></td>
+    <tr><td><s>cacheIvyPattern</s></td><td>a pattern to indicate where ivy 
files should be put in cache.
+       <i>Deprecated, we recommend using ivyPattern on the 
[[configuration/caches]] tag instead</i></td>
         <td>No, defaults to 
[organisation]/[module]/ivy-[revision].xml</td></tr>
-    <tr><td>cacheArtifactPattern</td><td>a pattern to indicate where artifact 
files should be put in cache. <i>We recommend using the 
repositoryArtifactPattern on the [[configuration/cache]] tag instead</i></td>
+    <tr><td><s>cacheArtifactPattern</s></td><td>a pattern to indicate where 
artifact files should be put in cache.
+       <i>Deprecated, we recommend using artifactPattern on the 
[[configuration/caches]] tag instead</i></td>
         <td>No, defaults to 
[organisation]/[module]/[type]s/[artifact]-[revision].[ext]</td></tr>
-    <tr><td>useRemoteConfig</td><td>true to configure ivyrep and ibiblio 
resolver from a remote configuration file (updated with changes in those 
repository structure if any) (<span class="since">since 1.2</span>)</td>
-        <td>No, defaults to false</td></tr>
 </tbody>
 </table>
 </textarea>

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java 
(original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/core/settings/XmlSettingsParser.java 
Thu Feb 21 07:00:07 2008
@@ -287,6 +287,8 @@
                 }
                 String cache = (String) attributes.get("defaultCache");
                 if (cache != null) {
+                    Message.deprecated("'defaultCache' is deprecated, "
+                        + "use '[EMAIL PROTECTED]' instead (" + settings + 
")");
                     ivy.setDefaultCache(new File(cache));
                 }
                 String defaultBranch = (String) 
attributes.get("defaultBranch");
@@ -299,6 +301,8 @@
                 }
                 String up2d = (String) attributes.get("checkUpToDate");
                 if (up2d != null) {
+                    Message.deprecated("'checkUpToDate' is deprecated, "
+                        + "use '[EMAIL PROTECTED]' instead (" + settings + 
")");
                     ivy.setCheckUpToDate(Boolean.valueOf(up2d).booleanValue());
                 }
                 String useRemoteConfig = (String) 
attributes.get("useRemoteConfig");
@@ -306,10 +310,6 @@
                     ivy.setUseRemoteConfig(Boolean.valueOf(useRemoteConfig)
                             .booleanValue());
                 }
-                String resolutionDir = (String) 
attributes.get("resolutionCacheDir");
-                if (resolutionDir != null) {
-                    ivy.setDefaultResolutionCacheBasedir(resolutionDir);
-                }
                 String cacheIvyPattern = (String) 
attributes.get("cacheIvyPattern");
                 if (cacheIvyPattern != null) {
                     Message.deprecated(
@@ -337,6 +337,18 @@
                 defaultLock = (String) attributes.get("lockStrategy");
                 defaultCacheManager = (String) attributes.get("default");
                 
+                String cache = (String) attributes.get("defaultCacheDir");
+                if (cache != null) {
+                    ivy.setDefaultCache(new File(cache));
+                }
+                String up2d = (String) attributes.get("checkUpToDate");
+                if (up2d != null) {
+                    ivy.setCheckUpToDate(Boolean.valueOf(up2d).booleanValue());
+                }
+                String resolutionDir = (String) 
attributes.get("resolutionCacheDir");
+                if (resolutionDir != null) {
+                    ivy.setDefaultResolutionCacheBasedir(resolutionDir);
+                }
                 String useOrigin = (String) attributes.get("useOrigin");
                 if (useOrigin != null) {
                     
ivy.setDefaultUseOrigin(Boolean.valueOf(useOrigin).booleanValue());
@@ -349,7 +361,7 @@
                 if (cacheArtPattern != null) {
                     ivy.setDefaultCacheArtifactPattern(cacheArtPattern);
                 }
-                String repositoryDir = (String) attributes.get("basedir");
+                String repositoryDir = (String) 
attributes.get("repositoryCacheDir");
                 if (repositoryDir != null) {
                     ivy.setDefaultRepositoryCacheBasedir(repositoryDir); 
                 }

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/ant/ivysettings-cleancache.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/ant/ivysettings-cleancache.xml?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/ant/ivysettings-cleancache.xml 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/ant/ivysettings-cleancache.xml 
Thu Feb 21 07:00:07 2008
@@ -17,10 +17,9 @@
    under the License.    
 -->
 <ivysettings>
-       <settings resolutionCacheDir="${cache}/resolution" />
-       <caches basedir="${cache}/repository">
+       <caches resolutionCacheDir="${cache}/resolution" 
repositoryCacheDir="${cache}/repository">
                <cache name="mycache" />
-               <cache name="mycache2" 
+               <cache name="mycache2"
                                basedir="${cache}/repository2"
                />
        </caches>

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-cache.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-cache.xml?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-cache.xml 
(original)
+++ 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-cache.xml 
Thu Feb 21 07:00:07 2008
@@ -17,9 +17,8 @@
    under the License.    
 -->
 <ivysettings>
-       <settings resolutionCacheDir="resolution" />
-       <caches default="mycache2" 
-               basedir="repository" 
+       <caches default="mycache2" resolutionCacheDir="resolution"
+               repositoryCacheDir="repository" 
                ivyPattern="[module]/ivys/ivy-[revision].xml" 
                artifactPattern="[module]/[type]s/[artifact]-[revision].[ext]"
                useOrigin="true"

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml 
(original)
+++ 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/settings/ivysettings-test.xml 
Thu Feb 21 07:00:07 2008
@@ -19,12 +19,9 @@
 <ivysettings>
        <property name="shared" value="sharedrep"/>
        <properties 
file="test/java/org/apache/ivy/core/settings/ivysettings.properties"/>
-       <settings   defaultCache="mycache" 
-               defaultResolver="libraries" 
-                       validate="false"
-                       checkUpToDate="false"
-                       />
-       <caches ivyPattern="[module]/ivys/ivy-[revision].xml" 
+       <settings defaultResolver="libraries" validate="false" />
+       <caches defaultCacheDir="mycache" checkUpToDate="false"
+                       ivyPattern="[module]/ivys/ivy-[revision].xml" 
                        
artifactPattern="[module]/[type]s/[artifact]-[revision].[ext]" />
        <latest-strategies>
            <latest-revision name="mylatest-revision">

Modified: ant/ivy/core/trunk/test/repositories/extra-attributes/ivysettings.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/extra-attributes/ivysettings.xml?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/repositories/extra-attributes/ivysettings.xml 
(original)
+++ ant/ivy/core/trunk/test/repositories/extra-attributes/ivysettings.xml Thu 
Feb 21 07:00:07 2008
@@ -17,11 +17,8 @@
    under the License.    
 -->
 <ivysettings>
-   <settings 
-     defaultCache="${ivy.settings.dir}/cache" 
-        defaultResolver="default" 
-        />
-   <caches      
+   <settings defaultResolver="default" />
+   <caches defaultCacheDir="${ivy.settings.dir}/cache" 
         ivyPattern="[organisation]/[module]/[eatt]/[revision]/ivy.xml"
      
artifactPattern="[organisation]/[module]/[eatt]/[revision]/[artifact]-[platform].[ext]"
    />

Modified: ant/ivy/core/trunk/test/repositories/ivysettings-multicache.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/ivysettings-multicache.xml?rev=629817&r1=629816&r2=629817&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/repositories/ivysettings-multicache.xml (original)
+++ ant/ivy/core/trunk/test/repositories/ivysettings-multicache.xml Thu Feb 21 
07:00:07 2008
@@ -18,8 +18,8 @@
 -->
 <ivysettings>
        <properties file="${ivy.settings.dir}/ivysettings.properties" />
-       <settings defaultResolver="test" 
resolutionCacheDir="${cache.dir}/wkspace"/>
-       <caches basedir="${cache.dir}/repo1"  
+       <settings defaultResolver="test"/>
+       <caches resolutionCacheDir="${cache.dir}/wkspace" 
repositoryCacheDir="${cache.dir}/repo1"  
                ivyPattern="[module]/ivy-[revision].xml">
                
                <cache name="cache2" basedir="${cache.dir}/repo2" 


Reply via email to