private void mergeMetadata( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) throws RepositoryMetadataStoreException { // TODO currently this is first wins, but really we should take the latest by comparing either the // snapshot timestamp, or some other timestamp later encoded into the metadata. // TODO this needs to be repeated here so the merging doesn't interfere with the written metadata // - we'd be much better having a pristine input, and an ongoing metadata for merging instead Map<ArtifactRepository, Metadata> previousMetadata = new HashMap<>(); ArtifactRepository selected = null; for ( ArtifactRepository repository : remoteRepositories ) { ArtifactRepositoryPolicy policy = metadata.getPolicy( repository ); if ( policy.isEnabled() && loadMetadata( metadata, repository, localRepository, previousMetadata ) ) { metadata.setRepository( repository ); selected = repository; } } if ( loadMetadata( metadata, localRepository, localRepository, previousMetadata ) ) { metadata.setRepository( null ); selected = localRepository; } updateSnapshotMetadata( metadata, previousMetadata, selected, localRepository ); }
public void resolve( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) throws RepositoryMetadataResolutionException { RepositoryRequest request = new DefaultRepositoryRequest(); request.setLocalRepository( localRepository ); request.setRemoteRepositories( remoteRepositories ); resolve( metadata, request ); }
if ( metadata instanceof RepositoryMetadata ) getLogger().info( "Retrieving previous metadata from " + deploymentRepository.getId() ); try file = getArtifactMetadataFromDeploymentRepository( metadata, localRepository, deploymentRepository ); fixTimestamp( file, readMetadata( file ), ( (RepositoryMetadata) metadata ).getMetadata() );
if ( metadata.getBaseVersion() != null ) localCopyLastModified = getLocalCopyLastModified( localRepo, metadata ); if ( getLogger().isDebugEnabled() ) getLogger().debug( "Skipping update check for " + metadata.getKey() + " (" + file + ") from disabled repository " + repository.getId() + " (" + repository.getUrl() + ")" ); if ( getLogger().isDebugEnabled() ) getLogger().debug( "Skipping update check for " + metadata.getKey() + " (" + file + ") from repository " + repository.getId() + " (" + repository.getUrl() + ") in favor of local copy" ); getLogger().info( metadata.getKey() + ": checking for updates from " + repository.getId() ); try getLogger().debug( metadata + " could not be found on repository: " + repository.getId() ); getLogger().warn( metadata + " could not be retrieved from repository: " + repository.getId() + " due to an error: " + e.getMessage() ); getLogger().debug( "Exception", e ); mergeMetadata( metadata, remoteRepositories, localRepo );
public void resolveAlways( RepositoryMetadata metadata, ArtifactRepository localRepository, ArtifactRepository remoteRepository ) throws RepositoryMetadataResolutionException { File file; try { file = getArtifactMetadataFromDeploymentRepository( metadata, localRepository, remoteRepository ); } catch ( TransferFailedException e ) { throw new RepositoryMetadataResolutionException( metadata + " could not be retrieved from repository: " + remoteRepository.getId() + " due to an error: " + e.getMessage(), e ); } try { if ( file.exists() ) { Metadata prevMetadata = readMetadata( file ); metadata.setMetadata( prevMetadata ); } } catch ( RepositoryMetadataReadException e ) { throw new RepositoryMetadataResolutionException( e.getMessage(), e ); } }
metadata = readMetadata( metadataFile ); if ( getLogger().isDebugEnabled() ) getLogger().warn( e.getMessage(), e ); getLogger().warn( e.getMessage() );
getLogger().info( metadata + " could not be found on repository: " + remoteRepository.getId() + ", so will be created" );
if ( lastUpdated != null && now != null && now.compareTo( lastUpdated ) < 0 ) getLogger().warn( "The last updated timestamp in " + metadataFile + " refers to the future (now = " + now + ", lastUpdated = " + lastUpdated + "). Please verify that the clocks of all" getLogger().debug( "Repairing metadata in " + metadataFile ); if ( getLogger().isDebugEnabled() ) getLogger().warn( msg, e ); getLogger().warn( msg );