ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From maart...@apache.org
Subject svn commit: r805346 - in /ant/ivy/core/trunk: CHANGES.txt src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java src/java/org/apache/ivy/plugins/resolver/BasicResolver.java
Date Tue, 18 Aug 2009 10:14:50 GMT
Author: maartenc
Date: Tue Aug 18 10:14:50 2009
New Revision: 805346

URL: http://svn.apache.org/viewvc?rev=805346&view=rev
Log:
FIX: Fixed name snapshots are not updated even if they are marked as changing and the publication
date is changed in repo (IVY-938)

Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=805346&r1=805345&r2=805346&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Tue Aug 18 10:14:50 2009
@@ -95,6 +95,7 @@
 - FIX: Excessive hits to missing URLs uses up all ports on Windows (IVY-1105)
 - FIX: ivy parse exception when using <publications defaultconf> (IVY-1102)
 - FIX: Change org.apache to commons-cli at jdbc-example (IVY-1109)
+- FIX: Fixed name snapshots are not updated even if they are marked as changing and the publication
date is changed in repo (IVY-938)
 
    2.1.0-rc2
 =====================================

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java?rev=805346&r1=805345&r2=805346&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
(original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
Tue Aug 18 10:14:50 2009
@@ -874,52 +874,75 @@
             DependencyResolver resolver, final ResolvedResource mdRef, DependencyDescriptor
dd, 
             Artifact moduleArtifact, ResourceDownloader downloader, CacheMetadataOptions
options) 
             throws ParseException {
-        ModuleDescriptorParser parser = ModuleDescriptorParserRegistry
-            .getInstance().getParser(mdRef.getResource());
         Date cachedPublicationDate = null;
         ArtifactDownloadReport report;
         ModuleRevisionId mrid = moduleArtifact.getModuleRevisionId();
-        Artifact originalMetadataArtifact = getOriginalMetadataArtifact(moduleArtifact);
         if (!lockMetadataArtifact(mrid)) {
             Message.error("impossible to acquire lock for " + mrid);
             return null;
         }
-        BackupResourceDownloader backupDownloader = new BackupResourceDownloader(downloader);
-        try {
-            // now let's see if we can find it in cache and if it is up to date
-            ResolvedModuleRevision rmr = doFindModuleInCache(mrid, options, null);
-            if (rmr != null) {
-                if (rmr.getDescriptor().isDefault() && rmr.getResolver() != resolver)
{
-                    Message.verbose("\t" + getName() + ": found revision in cache: " + mrid
-                        + " (resolved by " + rmr.getResolver().getName()
-                        + "): but it's a default one, maybe we can find a better one");
-                } else {
-                    if (!isCheckmodified(dd, mrid, options) && !isChanging(dd, mrid,
options)) {
-                        Message.verbose("\t" + getName() + ": revision in cache: " + mrid);
-                        rmr.getReport().setSearched(true);
-                        return rmr;
+        
+        if (!moduleArtifact.isMetadata()) {
+            // the descriptor we are trying to cache is a default one, not much to do
+            // just make sure the old artifacts are deleted...
+            if (isChanging(dd, mrid, options)) {
+                long repoLastModified = mdRef.getLastModified();
+    
+                Artifact transformedArtifact = NameSpaceHelper.transform(
+                    moduleArtifact, options.getNamespace().getToSystemTransformer());
+                ArtifactOrigin origin = getSavedArtifactOrigin(transformedArtifact);
+                File artFile = getArchiveFileInCache(transformedArtifact, origin, false);
+                if (artFile.exists() && repoLastModified > artFile.lastModified())
{
+                    // artifacts have changed, they should be downloaded again
+                    Message.verbose(mrid + " has changed: deleting old artifacts");
+                    Message.debug("deleting " + artFile);
+                    if (!artFile.delete()) {
+                        Message.error("Couldn't delete outdated artifact from cache: " +
artFile);
+                        return null;
                     }
-                    long repLastModified = mdRef.getLastModified();
-                    long cacheLastModified = rmr.getDescriptor().getLastModified();
-                    if (!rmr.getDescriptor().isDefault() && repLastModified <=
cacheLastModified) {
-                        Message.verbose("\t" + getName() + ": revision in cache (not updated):
"
-                            + mrid);
-                        rmr.getReport().setSearched(true);
-                        return rmr;
-                    } else {
-                        Message.verbose("\t" + getName() + ": revision in cache is not up
to date: "
-                            + mrid);
-                        if (isChanging(dd, mrid, options)) {
-                            // ivy file has been updated, we should see if it has a new publication
-                            // date to see if a new download is required (in case the dependency
is
-                            // a changing one)
-                            cachedPublicationDate = 
-                                rmr.getDescriptor().getResolvedPublicationDate();
-                        }
+                    removeSavedArtifactOrigin(transformedArtifact);
+                }
+            }
+            return null;
+        }
+        
+        // now let's see if we can find it in cache and if it is up to date
+        ResolvedModuleRevision rmr = doFindModuleInCache(mrid, options, null);
+        if (rmr != null) {
+            if (rmr.getDescriptor().isDefault() && rmr.getResolver() != resolver)
{
+                Message.verbose("\t" + getName() + ": found revision in cache: " + mrid
+                    + " (resolved by " + rmr.getResolver().getName()
+                    + "): but it's a default one, maybe we can find a better one");
+            } else {
+                if (!isCheckmodified(dd, mrid, options) && !isChanging(dd, mrid,
options)) {
+                    Message.verbose("\t" + getName() + ": revision in cache: " + mrid);
+                    rmr.getReport().setSearched(true);
+                    return rmr;
+                }
+                long repLastModified = mdRef.getLastModified();
+                long cacheLastModified = rmr.getDescriptor().getLastModified();
+                if (!rmr.getDescriptor().isDefault() && repLastModified <= cacheLastModified)
{
+                    Message.verbose("\t" + getName() + ": revision in cache (not updated):
"
+                        + mrid);
+                    rmr.getReport().setSearched(true);
+                    return rmr;
+                } else {
+                    Message.verbose("\t" + getName() + ": revision in cache is not up to
date: "
+                        + mrid);
+                    if (isChanging(dd, mrid, options)) {
+                        // ivy file has been updated, we should see if it has a new publication
+                        // date to see if a new download is required (in case the dependency
is
+                        // a changing one)
+                        cachedPublicationDate = 
+                            rmr.getDescriptor().getResolvedPublicationDate();
                     }
                 }
             }
-
+        }
+        
+        BackupResourceDownloader backupDownloader = new BackupResourceDownloader(downloader);
+        try {
+            Artifact originalMetadataArtifact = getOriginalMetadataArtifact(moduleArtifact);
             // now download module descriptor and parse it
             report = download(
                 originalMetadataArtifact, 
@@ -939,6 +962,8 @@
             }
 
             try {
+                ModuleDescriptorParser parser = ModuleDescriptorParserRegistry
+                        .getInstance().getParser(mdRef.getResource());
                 ModuleDescriptor md = getStaledMd(parser, options, report.getLocalFile());

                 if (md == null) {
                     throw new IllegalStateException(

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java?rev=805346&r1=805345&r2=805346&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/BasicResolver.java Tue Aug
18 10:14:50 2009
@@ -254,6 +254,8 @@
                     madr.setDownloadStatus(DownloadStatus.NO);
                     madr.setSearched(true);
                     rmr = new ResolvedModuleRevision(this, this, systemMd, madr, isForce());
+                    getRepositoryCacheManager().cacheModuleDescriptor(this, artifactRef,
toSystem(dd), 
+                            systemMd.getAllArtifacts()[0], null, getCacheOptions(data));
                 }
             } else {
                 if (ivyRef instanceof MDResolvedResource) {



Mime
View raw message