1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl.checksum;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.util.List;
26 import java.util.Map;
27
28 import org.eclipse.aether.RepositorySystemSession;
29 import org.eclipse.aether.artifact.Artifact;
30 import org.eclipse.aether.metadata.Metadata;
31 import org.eclipse.aether.repository.RemoteRepository;
32 import org.eclipse.aether.spi.checksums.ProvidedChecksumsSource;
33 import org.eclipse.aether.spi.checksums.TrustedChecksumsSource;
34 import org.eclipse.aether.spi.connector.ArtifactDownload;
35 import org.eclipse.aether.spi.connector.MetadataDownload;
36 import org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory;
37
38 import static java.util.Objects.requireNonNull;
39
40
41
42
43
44
45
46 @Singleton
47 @Named(TrustedToProvidedChecksumsSourceAdapter.NAME)
48 public final class TrustedToProvidedChecksumsSourceAdapter implements ProvidedChecksumsSource {
49 public static final String NAME = "trusted2provided";
50
51 private final Map<String, TrustedChecksumsSource> trustedChecksumsSources;
52
53 @Inject
54 public TrustedToProvidedChecksumsSourceAdapter(Map<String, TrustedChecksumsSource> trustedChecksumsSources) {
55 this.trustedChecksumsSources = requireNonNull(trustedChecksumsSources);
56 }
57
58 @Override
59 public Map<String, String> getProvidedArtifactChecksums(
60 RepositorySystemSession session,
61 ArtifactDownload transfer,
62 RemoteRepository repository,
63 List<ChecksumAlgorithmFactory> checksumAlgorithmFactories) {
64 Artifact artifact = transfer.getArtifact();
65 Map<String, String> trustedChecksums;
66
67 for (TrustedChecksumsSource trustedChecksumsSource : trustedChecksumsSources.values()) {
68 trustedChecksums = trustedChecksumsSource.getTrustedArtifactChecksums(
69 session, artifact, repository, checksumAlgorithmFactories);
70 if (trustedChecksums != null && !trustedChecksums.isEmpty()) {
71 return trustedChecksums;
72 }
73 }
74
75 if (!transfer.getRepositories().isEmpty()) {
76 for (RemoteRepository remoteRepository : transfer.getRepositories()) {
77 for (TrustedChecksumsSource trustedChecksumsSource : trustedChecksumsSources.values()) {
78 trustedChecksums = trustedChecksumsSource.getTrustedArtifactChecksums(
79 session, artifact, remoteRepository, checksumAlgorithmFactories);
80 if (trustedChecksums != null && !trustedChecksums.isEmpty()) {
81 return trustedChecksums;
82 }
83 }
84 }
85 }
86 return null;
87 }
88
89 @Override
90 public Map<String, String> getProvidedMetadataChecksums(
91 RepositorySystemSession session,
92 MetadataDownload transfer,
93 RemoteRepository repository,
94 List<ChecksumAlgorithmFactory> checksumAlgorithmFactories) {
95 Metadata metadata = transfer.getMetadata();
96 Map<String, String> trustedChecksums;
97
98 for (TrustedChecksumsSource trustedChecksumsSource : trustedChecksumsSources.values()) {
99 trustedChecksums = trustedChecksumsSource.getTrustedMetadataChecksums(
100 session, metadata, repository, checksumAlgorithmFactories);
101 if (trustedChecksums != null && !trustedChecksums.isEmpty()) {
102 return trustedChecksums;
103 }
104 }
105
106 for (RemoteRepository remoteRepository : transfer.getRepositories()) {
107 for (TrustedChecksumsSource trustedChecksumsSource : trustedChecksumsSources.values()) {
108 trustedChecksums = trustedChecksumsSource.getTrustedMetadataChecksums(
109 session, metadata, remoteRepository, checksumAlgorithmFactories);
110 if (trustedChecksums != null && !trustedChecksums.isEmpty()) {
111 return trustedChecksums;
112 }
113 }
114 }
115 return null;
116 }
117 }