in maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java [200:289]
public void get(
Collection<? extends ArtifactDownload> artifactDownloads,
Collection<? extends MetadataDownload> metadataDownloads) {
failIfClosed();
Collection<? extends ArtifactDownload> safeArtifactDownloads = safe(artifactDownloads);
Collection<? extends MetadataDownload> safeMetadataDownloads = safe(metadataDownloads);
Executor executor = getExecutor(true, safeArtifactDownloads.size() + safeMetadataDownloads.size());
RunnableErrorForwarder errorForwarder = new RunnableErrorForwarder();
List<ChecksumAlgorithmFactory> checksumAlgorithmFactories = layout.getChecksumAlgorithmFactories();
boolean first = true;
for (MetadataDownload transfer : safeMetadataDownloads) {
URI location = layout.getLocation(transfer.getMetadata(), false);
TransferResource resource = newTransferResource(location, transfer);
TransferEvent.Builder builder = newEventBuilder(resource, false, false);
MetadataTransportListener listener = new MetadataTransportListener(transfer, repository, builder);
ChecksumPolicy checksumPolicy = newChecksumPolicy(transfer.getChecksumPolicy(), resource);
List<RepositoryLayout.ChecksumLocation> checksumLocations = null;
if (checksumPolicy != null) {
checksumLocations = layout.getChecksumLocations(transfer.getMetadata(), false, location);
}
Runnable task = new GetTaskRunner(
location,
transfer.getPath(),
checksumPolicy,
checksumAlgorithmFactories,
checksumLocations,
null,
listener);
if (first) {
task.run();
first = false;
} else {
executor.execute(errorForwarder.wrap(task));
}
}
for (ArtifactDownload transfer : safeArtifactDownloads) {
Map<String, String> providedChecksums = Collections.emptyMap();
for (ProvidedChecksumsSource providedChecksumsSource : providedChecksumsSources.values()) {
Map<String, String> provided = providedChecksumsSource.getProvidedArtifactChecksums(
session, transfer, repository, checksumAlgorithmFactories);
if (provided != null) {
providedChecksums = provided;
break;
}
}
URI location = layout.getLocation(transfer.getArtifact(), false);
TransferResource resource = newTransferResource(location, transfer);
TransferEvent.Builder builder = newEventBuilder(resource, false, transfer.isExistenceCheck());
ArtifactTransportListener listener = new ArtifactTransportListener(transfer, repository, builder);
Runnable task;
if (transfer.isExistenceCheck()) {
task = new PeekTaskRunner(location, listener);
} else {
ChecksumPolicy checksumPolicy = newChecksumPolicy(transfer.getChecksumPolicy(), resource);
List<RepositoryLayout.ChecksumLocation> checksumLocations = null;
if (checksumPolicy != null) {
checksumLocations = layout.getChecksumLocations(transfer.getArtifact(), false, location);
}
task = new GetTaskRunner(
location,
transfer.getPath(),
checksumPolicy,
checksumAlgorithmFactories,
checksumLocations,
providedChecksums,
listener);
}
if (first) {
task.run();
first = false;
} else {
executor.execute(errorForwarder.wrap(task));
}
}
errorForwarder.await();
}