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 java.io.IOException;
22 import java.io.UncheckedIOException;
23 import java.nio.file.Path;
24 import java.util.ArrayList;
25 import java.util.List;
26 import java.util.Map;
27
28 import org.eclipse.aether.ConfigurationProperties;
29 import org.eclipse.aether.RepositorySystemSession;
30 import org.eclipse.aether.artifact.Artifact;
31 import org.eclipse.aether.metadata.Metadata;
32 import org.eclipse.aether.repository.ArtifactRepository;
33 import org.eclipse.aether.repository.RemoteRepository;
34 import org.eclipse.aether.spi.checksums.TrustedChecksumsSource;
35 import org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory;
36 import org.eclipse.aether.spi.remoterepo.RepositoryKeyFunctionFactory;
37 import org.eclipse.aether.util.DirectoryUtils;
38 import org.slf4j.Logger;
39 import org.slf4j.LoggerFactory;
40
41 import static java.util.Objects.requireNonNull;
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 public abstract class FileTrustedChecksumsSourceSupport implements TrustedChecksumsSource {
63 protected static final String CONFIG_PROPS_PREFIX =
64 ConfigurationProperties.PREFIX_AETHER + "trustedChecksumsSource.";
65
66 protected final Logger logger = LoggerFactory.getLogger(getClass());
67
68 private final RepositoryKeyFunctionFactory repositoryKeyFunctionFactory;
69
70 protected FileTrustedChecksumsSourceSupport(RepositoryKeyFunctionFactory repositoryKeyFunctionFactory) {
71 this.repositoryKeyFunctionFactory = requireNonNull(repositoryKeyFunctionFactory);
72 }
73
74
75
76
77
78 @Override
79 public Map<String, String> getTrustedArtifactChecksums(
80 RepositorySystemSession session,
81 Artifact artifact,
82 ArtifactRepository artifactRepository,
83 List<ChecksumAlgorithmFactory> checksumAlgorithmFactories) {
84 requireNonNull(session, "session is null");
85 requireNonNull(artifact, "artifact is null");
86 requireNonNull(artifactRepository, "artifactRepository is null");
87 requireNonNull(checksumAlgorithmFactories, "checksumAlgorithmFactories is null");
88 if (isEnabled(session)) {
89 return requireNonNull(
90 doGetTrustedArtifactChecksums(session, artifact, artifactRepository, checksumAlgorithmFactories));
91 }
92 return null;
93 }
94
95
96
97
98
99
100
101 @Override
102 public Map<String, String> getTrustedMetadataChecksums(
103 RepositorySystemSession session,
104 Metadata metadata,
105 ArtifactRepository artifactRepository,
106 List<ChecksumAlgorithmFactory> checksumAlgorithmFactories) {
107 requireNonNull(session, "session is null");
108 requireNonNull(metadata, "metadata is null");
109 requireNonNull(artifactRepository, "artifactRepository is null");
110 requireNonNull(checksumAlgorithmFactories, "checksumAlgorithmFactories is null");
111 if (isEnabled(session)) {
112 return requireNonNull(
113 doGetTrustedMetadataChecksums(session, metadata, artifactRepository, checksumAlgorithmFactories));
114 }
115 return null;
116 }
117
118
119
120
121
122 @Override
123 public Writer getTrustedArtifactChecksumsWriter(RepositorySystemSession session) {
124 requireNonNull(session, "session is null");
125 if (isEnabled(session)) {
126 return doGetTrustedArtifactChecksumsWriter(session);
127 }
128 return null;
129 }
130
131
132
133
134 protected abstract Map<String, String> doGetTrustedArtifactChecksums(
135 RepositorySystemSession session,
136 Artifact artifact,
137 ArtifactRepository artifactRepository,
138 List<ChecksumAlgorithmFactory> checksumAlgorithmFactories);
139
140
141
142
143
144
145
146
147 protected abstract Map<String, String> doGetTrustedMetadataChecksums(
148 RepositorySystemSession session,
149 Metadata metadata,
150 ArtifactRepository artifactRepository,
151 List<ChecksumAlgorithmFactory> checksumAlgorithmFactories);
152
153
154
155
156 protected Writer doGetTrustedArtifactChecksumsWriter(RepositorySystemSession session) {
157 return null;
158 }
159
160
161
162
163
164
165 protected abstract boolean isEnabled(RepositorySystemSession session);
166
167
168
169
170
171
172
173
174
175
176 protected Path getBasedir(
177 RepositorySystemSession session, String defaultValue, String configPropKey, boolean mayCreate) {
178 try {
179 return DirectoryUtils.resolveDirectory(session, defaultValue, configPropKey, mayCreate);
180 } catch (IOException e) {
181 throw new UncheckedIOException(e);
182 }
183 }
184
185
186
187
188
189
190
191 protected List<String> repositoryKey(RepositorySystemSession session, ArtifactRepository artifactRepository) {
192 ArrayList<String> keys = new ArrayList<>();
193 if (artifactRepository instanceof RemoteRepository) {
194 RemoteRepository rr = (RemoteRepository) artifactRepository;
195 keys.add(repositoryKeyFunctionFactory
196 .trackingRepositoryKeyFunction(session)
197 .apply(rr, null));
198 keys.add(repositoryKeyFunctionFactory
199 .systemRepositoryKeyFunction(session)
200 .apply(rr, null));
201 } else {
202 keys.add(artifactRepository.getId());
203 }
204 return keys;
205 }
206 }