Author: brett Date: Wed Mar 5 18:32:48 2008 New Revision: 634129 URL: http://svn.apache.org/viewvc?rev=634129&view=rev Log: [MNG-3341] only look in the original deployment repository for metadata to update
Modified: maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java 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/manager/DefaultWagonManager.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=634129&r1=634128&r2=634129&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java (original) +++ maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java Wed Mar 5 18:32:48 2008 @@ -346,8 +346,8 @@ else { getLogger().debug( "Trying repository " + repository.getId() ); - getRemoteFile( repository, artifact.getFile(), remotePath, downloadMonitor, policy.getChecksumPolicy(), - false ); + getRemoteFile( getMirrorRepository( repository ), artifact.getFile(), remotePath, downloadMonitor, + policy.getChecksumPolicy(), false ); getLogger().debug( " Artifact resolved" ); artifact.setResolved( true ); @@ -362,6 +362,15 @@ { String remotePath = repository.pathOfRemoteRepositoryMetadata( metadata ); + getRemoteFile( getMirrorRepository( repository ), destination, remotePath, null, checksumPolicy, true ); + } + + public void getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository repository, + File destination, String checksumPolicy ) + throws TransferFailedException, ResourceDoesNotExistException + { + String remotePath = repository.pathOfRemoteRepositoryMetadata( metadata ); + getRemoteFile( repository, destination, remotePath, null, checksumPolicy, true ); } @@ -377,14 +386,6 @@ failIfNotOnline(); - ArtifactRepository mirror = getMirror( repository.getId() ); - if ( mirror != null ) - { - repository = repositoryFactory.createArtifactRepository( mirror.getId(), mirror.getUrl(), - repository.getLayout(), repository.getSnapshots(), - repository.getReleases() ); - } - String protocol = repository.getProtocol(); Wagon wagon; try @@ -583,6 +584,18 @@ } } } + } + + private ArtifactRepository getMirrorRepository( ArtifactRepository repository ) + { + ArtifactRepository mirror = getMirror( repository.getId() ); + if ( mirror != null ) + { + repository = repositoryFactory.createArtifactRepository( mirror.getId(), mirror.getUrl(), + repository.getLayout(), repository.getSnapshots(), + repository.getReleases() ); + } + return repository; } private void failIfNotOnline() Modified: maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java?rev=634129&r1=634128&r2=634129&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java (original) +++ maven/components/branches/maven-2.0.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/manager/WagonManager.java Wed Mar 5 18:32:48 2008 @@ -88,6 +88,10 @@ String checksumPolicy ) throws TransferFailedException, ResourceDoesNotExistException; + void getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository remoteRepository, + File file, String checksumPolicyWarn ) + throws TransferFailedException, ResourceDoesNotExistException; + void setOnline( boolean online ); boolean isOnline(); @@ -120,4 +124,4 @@ void registerWagons( Collection wagons, PlexusContainer extensionContainer ); void setDefaultRepositoryPermissions( RepositoryPermissions permissions ); -} \ No newline at end of file +} 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=634129&r1=634128&r2=634129&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 Wed Mar 5 18:32:48 2008 @@ -86,33 +86,44 @@ boolean checkForUpdates = policy.checkOutOfDate( new Date( file.lastModified() ) ) || !file.exists(); - boolean metadataIsEmpty = true; - if ( checkForUpdates ) { - try + if ( wagonManager.isOnline() ) { - 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().warn( metadata + " could not be retrieved from repository: " + + repository.getId() + " due to an error: " + e.getMessage() ); + getLogger().debug( "Exception", e ); + + 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. } - metadataIsEmpty = false; } - catch ( TransferFailedException e ) + else { - 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. - metadataIsEmpty = true; + getLogger().debug( "System is offline. Cannot resolve metadata:\n" + + metadata.extendedToString() + "\n\n" ); } } @@ -321,20 +332,7 @@ "System is offline. Cannot resolve required metadata:\n" + metadata.extendedToString() ); } - File file = new File( localRepository.getBasedir(), - localRepository.pathOfLocalRepositoryMetadata( metadata, remoteRepository ) ); - - try - { - resolveAlways( metadata, remoteRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN ); - } - 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. - } + File file = getArtifactMetadataFromDeploymentRepository( metadata, localRepository, remoteRepository ); try { @@ -350,17 +348,22 @@ } } - private void resolveAlways( ArtifactMetadata metadata, ArtifactRepository repository, File file, - String checksumPolicy ) - throws TransferFailedException + private File getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, + ArtifactRepository localRepository, + ArtifactRepository remoteRepository ) { + 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() ) @@ -370,12 +373,16 @@ } catch ( TransferFailedException e ) { - getLogger().warn( metadata + " could not be retrieved from repository: " + repository.getId() + + getLogger().warn( metadata + " could not be retrieved from repository: " + remoteRepository.getId() + " due to an error: " + e.getMessage() ); getLogger().debug( "Exception", e ); - throw 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. } + return file; } private boolean alreadyResolved( ArtifactMetadata metadata ) @@ -394,28 +401,17 @@ "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 ) ); - - if ( !wagonManager.isOnline() ) + File file; + if ( metadata instanceof RepositoryMetadata ) { - // metadata is required for deployment, can't be offline - throw new RepositoryMetadataDeploymentException( - "System is offline. Unable to get previous metadata to update:\n" + metadata.extendedToString() ); - } - - try - { - resolveAlways( metadata, deploymentRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN ); + getLogger().info( "Retrieving previous metadata from " + deploymentRepository.getId() ); + file = getArtifactMetadataFromDeploymentRepository( metadata, localRepository, deploymentRepository ); } - catch ( TransferFailedException e ) + else { - // 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. + // It's a POM - we don't need to retrieve it first + file = new File( localRepository.getBasedir(), + localRepository.pathOfLocalRepositoryMetadata( metadata, deploymentRepository ) ); } try