You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by br...@apache.org on 2008/03/06 05:53:57 UTC
svn commit: r634163 -
/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
Author: brett
Date: Wed Mar 5 20:53:56 2008
New Revision: 634163
URL: http://svn.apache.org/viewvc?rev=634163&view=rev
Log:
[MNG-3341] only look in the original deployment repository for metadata to update
Merged from r634129 on the maven-2.0.x branch
Modified:
maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=634163&r1=634162&r2=634163&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Wed Mar 5 20:53:56 2008
@@ -82,31 +82,48 @@
File file = new File( localRepository.getBasedir(),
localRepository.pathOfLocalRepositoryMetadata( metadata, repository ) );
- if ( updateCheckManager.isUpdateRequired( metadata, repository, file ) )
+ if ( wagonManager.isOnline() )
{
- try
+ if ( updateCheckManager.isUpdateRequired( metadata, repository, file ) )
{
- if ( wagonManager.isOnline() )
+ getLogger().info( metadata.getKey() + ": checking for updates from " + repository.getId() );
+ try
{
- getLogger().info(
- metadata.getKey() + ": checking for updates from " + repository.getId() );
- resolveAlways( metadata, repository, file, policy.getChecksumPolicy() );
+ wagonManager.getArtifactMetadata( metadata, repository, file, policy.getChecksumPolicy() );
}
- else
+ catch ( ResourceDoesNotExistException e )
{
- getLogger().debug( "System is offline. Cannot resolve metadata:\n" +
- metadata.extendedToString() + "\n\n" );
+ getLogger().debug( metadata + " could not be found on repository: " + repository.getId() );
+
+ // delete the local copy so the old details aren't used.
+ if ( file.exists() )
+ {
+ file.delete();
+ }
}
- }
- catch ( TransferFailedException e )
- {
- getLogger().info( "Repository '" + repository.getId() + "' will be blacklisted" );
- repository.setBlacklisted( true );
+ catch ( TransferFailedException e )
+ {
+ getLogger().warn( metadata + " could not be retrieved from repository: " + repository.getId() +
+ " due to an error: " + e.getMessage() );
+ getLogger().debug( "Exception", e );
- // TODO: [jc; 08-Nov-2005] revisit this for 2.1
- // suppressing logging to avoid logging this error twice.
+ getLogger().info( "Repository '" + repository.getId() + "' will be blacklisted" );
+ repository.setBlacklisted( true );
+
+ // TODO: [jc; 08-Nov-2005] revisit this for 2.1
+ // suppressing logging to avoid logging this error twice.
+ }
+ finally
+ {
+ updateCheckManager.touch( metadata, repository, file );
+ }
}
}
+ else
+ {
+ getLogger().debug(
+ "System is offline. Cannot resolve metadata:\n" + 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
@@ -290,19 +307,15 @@
"System is offline. Cannot resolve required metadata:\n" + metadata.extendedToString() );
}
- File file = new File( localRepository.getBasedir(),
- localRepository.pathOfLocalRepositoryMetadata( metadata, remoteRepository ) );
-
+ File file;
try
{
- resolveAlways( metadata, remoteRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
+ file = getArtifactMetadataFromDeploymentRepository( metadata, localRepository, remoteRepository );
}
catch ( TransferFailedException e )
{
- // TODO: [jc; 08-Nov-2005] revisit this for 2.1
- // suppressing logging to avoid logging this error twice.
- // We don't want to interrupt program flow here. Just allow empty metadata instead.
- // rethrowing this would change behavior.
+ throw new RepositoryMetadataResolutionException( metadata + " could not be retrieved from repository: " +
+ remoteRepository.getId() + " due to an error: " + e.getMessage(), e );
}
try
@@ -319,42 +332,38 @@
}
}
- private void resolveAlways( ArtifactMetadata metadata,
- ArtifactRepository repository,
- File file,
- String checksumPolicy )
+ private File getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata,
+ ArtifactRepository localRepository,
+ ArtifactRepository remoteRepository )
throws TransferFailedException
{
+ File file = new File( localRepository.getBasedir(),
+ localRepository.pathOfLocalRepositoryMetadata( metadata, remoteRepository ) );
+
try
{
- wagonManager.getArtifactMetadata( metadata, repository, file, checksumPolicy );
+ wagonManager.getArtifactMetadataFromDeploymentRepository( metadata, remoteRepository, file,
+ ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
}
catch ( ResourceDoesNotExistException e )
{
- getLogger().debug( metadata
- + " could not be found on repository: "
- + repository.getId() );
+ getLogger().info(
+ metadata + " could not be found on repository: " + remoteRepository.getId() + ", so will be created" );
+ // delete the local copy so the old details aren't used.
if ( file.exists() )
{
file.delete();
}
}
- catch ( TransferFailedException e )
- {
- getLogger().warn(
- metadata + " could not be retrieved from repository: " + repository.getId() + " due to an error: " + e.getMessage() );
- getLogger().debug( "Exception", e );
-
- throw e;
- }
finally
{
if ( metadata instanceof RepositoryMetadata )
{
- updateCheckManager.touch( (RepositoryMetadata) metadata, repository, file );
+ updateCheckManager.touch( (RepositoryMetadata) metadata, remoteRepository, file );
}
}
+ return file;
}
public void deploy( ArtifactMetadata metadata,
@@ -369,19 +378,26 @@
"System is offline. Cannot deploy metadata:\n" + metadata.extendedToString() );
}
- getLogger().info( "Retrieving previous metadata from " + deploymentRepository.getId() );
-
- File file = new File( localRepository.getBasedir(),
- localRepository.pathOfLocalRepositoryMetadata( metadata, deploymentRepository ) );
-
- try
+ File file;
+ if ( metadata instanceof RepositoryMetadata )
{
- resolveAlways( metadata, deploymentRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
+ getLogger().info( "Retrieving previous metadata from " + deploymentRepository.getId() );
+ try
+ {
+ file = getArtifactMetadataFromDeploymentRepository( metadata, localRepository, deploymentRepository );
+ }
+ catch ( TransferFailedException e )
+ {
+ throw new RepositoryMetadataDeploymentException( metadata +
+ " could not be retrieved from repository: " + deploymentRepository.getId() + " due to an error: " +
+ e.getMessage(), e );
+ }
}
- catch ( TransferFailedException e )
+ else
{
- throw new RepositoryMetadataDeploymentException(
- "Unable to get previous metadata to update: " + e.getMessage(), e );
+ // It's a POM - we don't need to retrieve it first
+ file = new File( localRepository.getBasedir(),
+ localRepository.pathOfLocalRepositoryMetadata( metadata, deploymentRepository ) );
}
try