You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/03/10 18:33:58 UTC
svn commit: r635613 -
/maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
Author: jdcasey
Date: Mon Mar 10 10:33:55 2008
New Revision: 635613
URL: http://svn.apache.org/viewvc?rev=635613&view=rev
Log:
[MNG-3415] Fixing metadata writing NOT to occur when offline or when TrasferFailedException happens...only when resource is not found (for updateInterval calculations) and when resolution succeeds. Integration tests to follow.
Modified:
maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
Modified: maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=635613&r1=635612&r2=635613&view=diff
==============================================================================
--- maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Mon Mar 10 10:33:55 2008
@@ -82,19 +82,21 @@
localRepository.pathOfLocalRepositoryMetadata( metadata, repository ) );
-
boolean checkForUpdates =
- policy.checkOutOfDate( new Date( file.lastModified() ) ) || !file.exists();
+ !file.exists() || policy.checkOutOfDate( new Date( file.lastModified() ) );
if ( checkForUpdates )
{
if ( wagonManager.isOnline() )
{
getLogger().info( metadata.getKey() + ": checking for updates from " + repository.getId() );
+
+ boolean storeMetadata = false;
try
{
wagonManager.getArtifactMetadata( metadata, repository, file,
policy.getChecksumPolicy() );
+ storeMetadata = true;
}
catch ( ResourceDoesNotExistException e )
{
@@ -106,6 +108,7 @@
{
file.delete();
}
+ storeMetadata = true;
}
catch ( TransferFailedException e )
{
@@ -119,6 +122,30 @@
// TODO: [jc; 08-Nov-2005] revisit this for 2.1
// suppressing logging to avoid logging this error twice.
}
+ if ( storeMetadata )
+ {
+ // touch file so that this is not checked again until interval has passed
+ if ( file.exists() )
+ {
+ file.setLastModified( System.currentTimeMillis() );
+ }
+ else
+ {
+ // this ensures that files are not continuously checked when they don't exist remotely
+
+ // TODO: [jdcasey] If this happens as a result of ResourceDoesNotExistException, what effect will it have on subsequent runs?
+ // Will the updateInterval come into play cleanly, or will this plug up the works??
+ try
+ {
+ metadata.storeInLocalRepository( localRepository, repository );
+ }
+ catch ( RepositoryMetadataStoreException e )
+ {
+ throw new RepositoryMetadataResolutionException(
+ "Unable to store local copy of metadata: " + e.getMessage(), e );
+ }
+ }
+ }
}
else
{
@@ -126,28 +153,11 @@
metadata.extendedToString() + "\n\n" );
}
}
-
- // TODO: should this be inside the above check?
- // touch file so that this is not checked again until interval has passed
- if ( file.exists() )
- {
- file.setLastModified( System.currentTimeMillis() );
- }
- else
- {
- // this ensures that files are not continuously checked when they don't exist remotely
- try
- {
- metadata.storeInLocalRepository( localRepository, repository );
- }
- catch ( RepositoryMetadataStoreException e )
- {
- throw new RepositoryMetadataResolutionException(
- "Unable to store local copy of metadata: " + e.getMessage(), e );
- }
- }
}
}
+
+ // TODO: [jdcasey] what happens here when the system is offline, or there is a TransferFailedException
+ // ...and no metadata file is written?
cachedMetadata.add( metadata.getKey() );
}
@@ -238,7 +248,7 @@
}
else
{
- if ( m.getVersioning() != null && m.getVersioning().getSnapshot() != null &&
+ if ( ( m.getVersioning() != null ) && ( m.getVersioning().getSnapshot() != null ) &&
m.getVersioning().getSnapshot().isLocalCopy() )
{
m.getVersioning().getSnapshot().setLocalCopy( false );
@@ -265,7 +275,7 @@
{
Metadata metadata = readMetadata( metadataFile );
- if ( repoMetadata.isSnapshot() && previousMetadata != null )
+ if ( repoMetadata.isSnapshot() && ( previousMetadata != null ) )
{
previousMetadata.put( remoteRepository, metadata );
}