Author: joakime
Date: Thu Oct 11 09:05:24 2007
New Revision: 583862

URL: http://svn.apache.org/viewvc?rev=583862&view=rev
Log:
Correcting logic for determining if the local maven-metadata.xml needs to be 
updated.


Modified:
    
maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java

Modified: 
maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java?rev=583862&r1=583861&r2=583862&view=diff
==============================================================================
--- 
maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
 (original)
+++ 
maven/archiva/trunk/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
 Thu Oct 11 09:05:24 2007
@@ -170,7 +170,8 @@
         File localFile = toLocalFile( repository, metadata );
 
         Properties requestProperties = new Properties();
-        boolean hasFetched = false;
+        boolean metadataNeedsUpdating = false;
+        long originalTimestamp = getLastModified( localFile );
 
         List<ProxyConnector> connectors = getProxyConnectors( repository );
         for ( ProxyConnector connector : connectors )
@@ -179,17 +180,21 @@
             String targetPath = metadataTools.toPath( metadata );
 
             File localRepoFile = toLocalRepoFile( repository, 
targetRepository, targetPath );
-            File downloadedFile = transferFile( connector, targetRepository, 
targetPath, localRepoFile,
-                                                requestProperties );
+            long originalMetadataTimestamp = getLastModified( localRepoFile );
+            transferFile( connector, targetRepository, targetPath, 
localRepoFile, requestProperties );
 
-            if ( fileExists( downloadedFile ) )
+            if ( hasBeenUpdated( localRepoFile, originalMetadataTimestamp ) )
             {
-                getLogger().debug( "Successfully transfered: " + 
downloadedFile.getAbsolutePath() );
-                hasFetched = true;
+                metadataNeedsUpdating = true;
             }
         }
 
-        if ( hasFetched || fileExists( localFile ) )
+        if ( hasBeenUpdated( localFile, originalTimestamp ) )
+        {
+            metadataNeedsUpdating = true;
+        }
+
+        if ( metadataNeedsUpdating )
         {
             try
             {
@@ -228,6 +233,27 @@
         return null;
     }
 
+    private long getLastModified( File file )
+    {
+        if ( !file.exists() || !file.isFile() )
+        {
+            return 0;
+        }
+
+        return file.lastModified();
+    }
+    
+    private boolean hasBeenUpdated( File file, long originalLastModified )
+    {
+        if ( !file.exists() || !file.isFile() )
+        {
+            return false;
+        }
+        
+        long currentLastModified = getLastModified( file );
+        return ( currentLastModified > originalLastModified );
+    }
+
     /**
      * Fetch from the proxies a metadata.xml file for the groupId:artifactId 
metadata contents.
      *
@@ -239,7 +265,8 @@
         File localFile = toLocalFile( repository, metadata );
 
         Properties requestProperties = new Properties();
-        boolean hasFetched = false;
+        boolean metadataNeedsUpdating = false;
+        long originalTimestamp = getLastModified( localFile );
 
         List<ProxyConnector> connectors = getProxyConnectors( repository );
         for ( ProxyConnector connector : connectors )
@@ -248,17 +275,21 @@
             String targetPath = metadataTools.toPath( metadata );
 
             File localRepoFile = toLocalRepoFile( repository, 
targetRepository, targetPath );
-            File downloadedFile = transferFile( connector, targetRepository, 
targetPath, localRepoFile,
-                                                requestProperties );
+            long originalMetadataTimestamp = getLastModified( localRepoFile );
+            transferFile( connector, targetRepository, targetPath, 
localRepoFile, requestProperties );
 
-            if ( fileExists( downloadedFile ) )
+            if ( hasBeenUpdated( localRepoFile, originalMetadataTimestamp ) )
             {
-                getLogger().debug( "Successfully transfered: " + 
downloadedFile.getAbsolutePath() );
-                hasFetched = true;
+                metadataNeedsUpdating = true;
             }
         }
 
-        if ( hasFetched || fileExists( localFile ) )
+        if ( hasBeenUpdated( localFile, originalTimestamp ) )
+        {
+            metadataNeedsUpdating = true;
+        }
+
+        if ( metadataNeedsUpdating )
         {
             try
             {
@@ -428,7 +459,6 @@
 
                 transferChecksum( wagon, remoteRepository, remotePath, 
localFile, ".sha1" );
                 transferChecksum( wagon, remoteRepository, remotePath, 
localFile, ".md5" );
-
             }
         }
         catch ( ResourceDoesNotExistException e )


Reply via email to