Correcting logic for determining if the local maven-metadata.xml needs to be updated.

git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@583862 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Joakim Erdfelt 2007-10-11 16:05:24 +00:00
parent 009ca8b128
commit bb9a82825b
1 changed files with 45 additions and 15 deletions

View File

@ -170,7 +170,8 @@ public class DefaultRepositoryProxyConnectors
File localFile = toLocalFile( repository, metadata ); File localFile = toLocalFile( repository, metadata );
Properties requestProperties = new Properties(); Properties requestProperties = new Properties();
boolean hasFetched = false; boolean metadataNeedsUpdating = false;
long originalTimestamp = getLastModified( localFile );
List<ProxyConnector> connectors = getProxyConnectors( repository ); List<ProxyConnector> connectors = getProxyConnectors( repository );
for ( ProxyConnector connector : connectors ) for ( ProxyConnector connector : connectors )
@ -179,17 +180,21 @@ public class DefaultRepositoryProxyConnectors
String targetPath = metadataTools.toPath( metadata ); String targetPath = metadataTools.toPath( metadata );
File localRepoFile = toLocalRepoFile( repository, targetRepository, targetPath ); File localRepoFile = toLocalRepoFile( repository, targetRepository, targetPath );
File downloadedFile = transferFile( connector, targetRepository, targetPath, localRepoFile, long originalMetadataTimestamp = getLastModified( localRepoFile );
requestProperties ); transferFile( connector, targetRepository, targetPath, localRepoFile, requestProperties );
if ( fileExists( downloadedFile ) ) if ( hasBeenUpdated( localRepoFile, originalMetadataTimestamp ) )
{ {
getLogger().debug( "Successfully transfered: " + downloadedFile.getAbsolutePath() ); metadataNeedsUpdating = true;
hasFetched = true;
} }
} }
if ( hasFetched || fileExists( localFile ) ) if ( hasBeenUpdated( localFile, originalTimestamp ) )
{
metadataNeedsUpdating = true;
}
if ( metadataNeedsUpdating )
{ {
try try
{ {
@ -228,6 +233,27 @@ public class DefaultRepositoryProxyConnectors
return null; 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. * Fetch from the proxies a metadata.xml file for the groupId:artifactId metadata contents.
* *
@ -239,7 +265,8 @@ public class DefaultRepositoryProxyConnectors
File localFile = toLocalFile( repository, metadata ); File localFile = toLocalFile( repository, metadata );
Properties requestProperties = new Properties(); Properties requestProperties = new Properties();
boolean hasFetched = false; boolean metadataNeedsUpdating = false;
long originalTimestamp = getLastModified( localFile );
List<ProxyConnector> connectors = getProxyConnectors( repository ); List<ProxyConnector> connectors = getProxyConnectors( repository );
for ( ProxyConnector connector : connectors ) for ( ProxyConnector connector : connectors )
@ -248,17 +275,21 @@ public class DefaultRepositoryProxyConnectors
String targetPath = metadataTools.toPath( metadata ); String targetPath = metadataTools.toPath( metadata );
File localRepoFile = toLocalRepoFile( repository, targetRepository, targetPath ); File localRepoFile = toLocalRepoFile( repository, targetRepository, targetPath );
File downloadedFile = transferFile( connector, targetRepository, targetPath, localRepoFile, long originalMetadataTimestamp = getLastModified( localRepoFile );
requestProperties ); transferFile( connector, targetRepository, targetPath, localRepoFile, requestProperties );
if ( fileExists( downloadedFile ) ) if ( hasBeenUpdated( localRepoFile, originalMetadataTimestamp ) )
{ {
getLogger().debug( "Successfully transfered: " + downloadedFile.getAbsolutePath() ); metadataNeedsUpdating = true;
hasFetched = true;
} }
} }
if ( hasFetched || fileExists( localFile ) ) if ( hasBeenUpdated( localFile, originalTimestamp ) )
{
metadataNeedsUpdating = true;
}
if ( metadataNeedsUpdating )
{ {
try try
{ {
@ -428,7 +459,6 @@ public class DefaultRepositoryProxyConnectors
transferChecksum( wagon, remoteRepository, remotePath, localFile, ".sha1" ); transferChecksum( wagon, remoteRepository, remotePath, localFile, ".sha1" );
transferChecksum( wagon, remoteRepository, remotePath, localFile, ".md5" ); transferChecksum( wagon, remoteRepository, remotePath, localFile, ".md5" );
} }
} }
catch ( ResourceDoesNotExistException e ) catch ( ResourceDoesNotExistException e )