1 package org.eclipse.aether.internal.impl.checksum;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import javax.inject.Inject;
23 import javax.inject.Named;
24 import javax.inject.Singleton;
25
26 import java.util.List;
27 import java.util.Map;
28
29 import org.eclipse.aether.RepositorySystemSession;
30 import org.eclipse.aether.artifact.Artifact;
31 import org.eclipse.aether.repository.RemoteRepository;
32 import org.eclipse.aether.spi.checksums.TrustedChecksumsSource;
33 import org.eclipse.aether.spi.connector.ArtifactDownload;
34 import org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory;
35 import org.eclipse.aether.spi.connector.checksum.ProvidedChecksumsSource;
36
37 import static java.util.Objects.requireNonNull;
38
39
40
41
42
43
44
45 @Singleton
46 @Named( TrustedToProvidedChecksumsSourceAdapter.NAME )
47 public final class TrustedToProvidedChecksumsSourceAdapter
48 implements ProvidedChecksumsSource
49 {
50 public static final String NAME = "trusted2provided";
51
52 private final Map<String, TrustedChecksumsSource> trustedChecksumsSources;
53
54 @Inject
55 public TrustedToProvidedChecksumsSourceAdapter( Map<String, TrustedChecksumsSource> trustedChecksumsSources )
56 {
57 this.trustedChecksumsSources = requireNonNull( trustedChecksumsSources );
58 }
59
60 @Override
61 public Map<String, String> getProvidedArtifactChecksums( RepositorySystemSession session,
62 ArtifactDownload transfer,
63 List<ChecksumAlgorithmFactory> checksumAlgorithmFactories )
64 {
65 Artifact artifact = transfer.getArtifact();
66 for ( RemoteRepository remoteRepository : transfer.getRepositories() )
67 {
68 for ( TrustedChecksumsSource trustedChecksumsSource : trustedChecksumsSources.values() )
69 {
70 Map<String, String> trustedChecksums = trustedChecksumsSource
71 .getTrustedArtifactChecksums( session, artifact, remoteRepository, checksumAlgorithmFactories );
72 if ( trustedChecksums != null && !trustedChecksums.isEmpty() )
73 {
74 return trustedChecksums;
75 }
76 }
77 }
78 return null;
79 }
80 }