for ( UpdateCheck<Metadata, MetadataTransferException> check : checks )
{
repositories.add( check.getAuthoritativeRepository() );
}
MetadataDownload download = new MetadataDownload();
download.setMetadata( metadata );
download.setRequestContext( request.getRequestContext() );
download.setFile( metadataFile );
download.setChecksumPolicy( policy );
download.setRepositories( repositories );
RepositoryConnector connector =
remoteRepositoryManager.getRepositoryConnector( session, requestRepository );
try
{
connector.get( null, Arrays.asList( download ) );
}
finally
{
connector.close();
}
exception = download.getException();
if ( exception == null )
{
List<String> contexts = Collections.singletonList( request.getRequestContext() );
LocalMetadataRegistration registration =
new LocalMetadataRegistration( metadata, requestRepository, contexts );
session.getLocalRepositoryManager().add( session, registration );
}
else if ( request.isDeleteLocalCopyIfMissing() && exception instanceof MetadataNotFoundException )
{
download.getFile().delete();
}
}
catch ( NoRepositoryConnectorException e )
{
exception = new MetadataTransferException( metadata, requestRepository, e );