1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.artifact.repository;
20
21 import java.io.File;
22 import java.util.Collections;
23 import java.util.List;
24 import java.util.Objects;
25
26 import org.apache.maven.RepositoryUtils;
27 import org.apache.maven.artifact.metadata.ArtifactMetadata;
28 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
29 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
30 import org.apache.maven.artifact.repository.metadata.RepositoryMetadataStoreException;
31 import org.apache.maven.repository.Proxy;
32 import org.eclipse.aether.DefaultRepositorySystemSession;
33 import org.eclipse.aether.RepositorySystem;
34 import org.eclipse.aether.RepositorySystemSession;
35 import org.eclipse.aether.artifact.Artifact;
36 import org.eclipse.aether.metadata.Metadata;
37 import org.eclipse.aether.repository.LocalArtifactRegistration;
38 import org.eclipse.aether.repository.LocalArtifactRequest;
39 import org.eclipse.aether.repository.LocalArtifactResult;
40 import org.eclipse.aether.repository.LocalMetadataRegistration;
41 import org.eclipse.aether.repository.LocalMetadataRequest;
42 import org.eclipse.aether.repository.LocalMetadataResult;
43 import org.eclipse.aether.repository.LocalRepository;
44 import org.eclipse.aether.repository.LocalRepositoryManager;
45 import org.eclipse.aether.repository.RemoteRepository;
46
47
48
49
50
51
52 @Deprecated
53 public class LegacyLocalRepositoryManager implements LocalRepositoryManager {
54
55 private final ArtifactRepository delegate;
56
57 private final LocalRepository repo;
58
59 private final boolean realLocalRepo;
60
61 public static RepositorySystemSession overlay(
62 ArtifactRepository repository, RepositorySystemSession session, RepositorySystem system) {
63 return overlay(repository, session);
64 }
65
66 public static RepositorySystemSession overlay(ArtifactRepository repository, RepositorySystemSession session) {
67 if (repository == null || repository.getBasedir() == null) {
68 return session;
69 }
70
71 if (session != null) {
72 LocalRepositoryManager lrm = session.getLocalRepositoryManager();
73 if (lrm != null && lrm.getRepository().getBasedir().equals(new File(repository.getBasedir()))) {
74 return session;
75 }
76 } else {
77 session = new DefaultRepositorySystemSession();
78 }
79
80 final LocalRepositoryManager llrm = new LegacyLocalRepositoryManager(repository);
81
82 return new DefaultRepositorySystemSession(session).setLocalRepositoryManager(llrm);
83 }
84
85 private LegacyLocalRepositoryManager(ArtifactRepository delegate) {
86 this.delegate = Objects.requireNonNull(delegate, "delegate cannot be null");
87
88 ArtifactRepositoryLayout layout = delegate.getLayout();
89 repo = new LocalRepository(
90 new File(delegate.getBasedir()),
91 (layout != null) ? layout.getClass().getSimpleName() : "legacy");
92
93
94
95
96
97
98
99
100
101
102
103
104
105 realLocalRepo = (layout instanceof DefaultRepositoryLayout) && "local".equals(delegate.getId());
106 }
107
108 @Override
109 public LocalRepository getRepository() {
110 return repo;
111 }
112
113 @Override
114 public String getPathForLocalArtifact(Artifact artifact) {
115 if (realLocalRepo) {
116 return delegate.pathOf(RepositoryUtils.toArtifact(artifact.setVersion(artifact.getBaseVersion())));
117 }
118 return delegate.pathOf(RepositoryUtils.toArtifact(artifact));
119 }
120
121 @Override
122 public String getPathForRemoteArtifact(Artifact artifact, RemoteRepository repository, String context) {
123 return delegate.pathOf(RepositoryUtils.toArtifact(artifact));
124 }
125
126 @Override
127 public String getPathForLocalMetadata(Metadata metadata) {
128 return delegate.pathOfLocalRepositoryMetadata(new ArtifactMetadataAdapter(metadata), delegate);
129 }
130
131 @Override
132 public String getPathForRemoteMetadata(Metadata metadata, RemoteRepository repository, String context) {
133 return delegate.pathOfLocalRepositoryMetadata(
134 new ArtifactMetadataAdapter(metadata), new ArtifactRepositoryAdapter(repository));
135 }
136
137 @Override
138 public LocalArtifactResult find(RepositorySystemSession session, LocalArtifactRequest request) {
139 String path = getPathForLocalArtifact(request.getArtifact());
140 File file = new File(getRepository().getBasedir(), path);
141
142 LocalArtifactResult result = new LocalArtifactResult(request);
143 if (file.isFile()) {
144 result.setFile(file);
145 result.setAvailable(true);
146 }
147
148 return result;
149 }
150
151 @Override
152 public LocalMetadataResult find(RepositorySystemSession session, LocalMetadataRequest request) {
153 Metadata metadata = request.getMetadata();
154
155 String path;
156 if (request.getRepository() == null) {
157 path = getPathForLocalMetadata(metadata);
158 } else {
159 path = getPathForRemoteMetadata(metadata, request.getRepository(), request.getContext());
160 }
161
162 File file = new File(getRepository().getBasedir(), path);
163
164 LocalMetadataResult result = new LocalMetadataResult(request);
165 if (file.isFile()) {
166 result.setFile(file);
167 }
168
169 return result;
170 }
171
172 @Override
173 public void add(RepositorySystemSession session, LocalArtifactRegistration request) {
174
175 }
176
177 @Override
178 public void add(RepositorySystemSession session, LocalMetadataRegistration request) {
179
180 }
181
182 static class ArtifactMetadataAdapter implements ArtifactMetadata {
183
184 private final Metadata metadata;
185
186 ArtifactMetadataAdapter(Metadata metadata) {
187 this.metadata = metadata;
188 }
189
190 @Override
191 public boolean storedInArtifactVersionDirectory() {
192 return !metadata.getVersion().isEmpty();
193 }
194
195 @Override
196 public boolean storedInGroupDirectory() {
197 return metadata.getArtifactId().isEmpty();
198 }
199
200 @Override
201 public String getGroupId() {
202 return nullify(metadata.getGroupId());
203 }
204
205 @Override
206 public String getArtifactId() {
207 return nullify(metadata.getArtifactId());
208 }
209
210 @Override
211 public String getBaseVersion() {
212 return nullify(metadata.getVersion());
213 }
214
215 private String nullify(String str) {
216 return (str == null || str.isEmpty()) ? null : str;
217 }
218
219 @Override
220 public Object getKey() {
221 return metadata.toString();
222 }
223
224 @Override
225 public String getRemoteFilename() {
226 return metadata.getType();
227 }
228
229 @Override
230 public String getLocalFilename(ArtifactRepository repository) {
231 return insertRepositoryKey(getRemoteFilename(), repository.getKey());
232 }
233
234 private String insertRepositoryKey(String filename, String repositoryKey) {
235 String result;
236 int idx = filename.indexOf('.');
237 if (idx < 0) {
238 result = filename + '-' + repositoryKey;
239 } else {
240 result = filename.substring(0, idx) + '-' + repositoryKey + filename.substring(idx);
241 }
242 return result;
243 }
244
245 @Override
246 public void merge(org.apache.maven.repository.legacy.metadata.ArtifactMetadata metadata) {
247
248 }
249
250 @Override
251 public void merge(ArtifactMetadata metadata) {
252
253 }
254
255 @Override
256 public void storeInLocalRepository(ArtifactRepository localRepository, ArtifactRepository remoteRepository)
257 throws RepositoryMetadataStoreException {
258
259 }
260
261 @Override
262 public String extendedToString() {
263 return metadata.toString();
264 }
265 }
266
267 static class ArtifactRepositoryAdapter implements ArtifactRepository {
268
269 private final RemoteRepository repository;
270
271 ArtifactRepositoryAdapter(RemoteRepository repository) {
272 this.repository = repository;
273 }
274
275 @Override
276 public String pathOf(org.apache.maven.artifact.Artifact artifact) {
277 return null;
278 }
279
280 @Override
281 public String pathOfRemoteRepositoryMetadata(ArtifactMetadata artifactMetadata) {
282 return null;
283 }
284
285 @Override
286 public String pathOfLocalRepositoryMetadata(ArtifactMetadata metadata, ArtifactRepository repository) {
287 return null;
288 }
289
290 @Override
291 public String getUrl() {
292 return repository.getUrl();
293 }
294
295 @Override
296 public void setUrl(String url) {}
297
298 @Override
299 public String getBasedir() {
300 return null;
301 }
302
303 @Override
304 public String getProtocol() {
305 return repository.getProtocol();
306 }
307
308 @Override
309 public String getId() {
310 return repository.getId();
311 }
312
313 @Override
314 public void setId(String id) {}
315
316 @Override
317 public ArtifactRepositoryPolicy getSnapshots() {
318 return null;
319 }
320
321 @Override
322 public void setSnapshotUpdatePolicy(ArtifactRepositoryPolicy policy) {}
323
324 @Override
325 public ArtifactRepositoryPolicy getReleases() {
326 return null;
327 }
328
329 @Override
330 public void setReleaseUpdatePolicy(ArtifactRepositoryPolicy policy) {}
331
332 @Override
333 public ArtifactRepositoryLayout getLayout() {
334 return null;
335 }
336
337 @Override
338 public void setLayout(ArtifactRepositoryLayout layout) {}
339
340 @Override
341 public String getKey() {
342 return getId();
343 }
344
345 @Override
346 public boolean isUniqueVersion() {
347 return true;
348 }
349
350 @Override
351 public boolean isBlacklisted() {
352 return false;
353 }
354
355 @Override
356 public void setBlacklisted(boolean blackListed) {}
357
358 @Override
359 public org.apache.maven.artifact.Artifact find(org.apache.maven.artifact.Artifact artifact) {
360 return null;
361 }
362
363 @Override
364 public List<String> findVersions(org.apache.maven.artifact.Artifact artifact) {
365 return Collections.emptyList();
366 }
367
368 @Override
369 public boolean isProjectAware() {
370 return false;
371 }
372
373 @Override
374 public void setAuthentication(Authentication authentication) {}
375
376 @Override
377 public Authentication getAuthentication() {
378 return null;
379 }
380
381 @Override
382 public void setProxy(Proxy proxy) {}
383
384 @Override
385 public Proxy getProxy() {
386 return null;
387 }
388
389 @Override
390 public List<ArtifactRepository> getMirroredRepositories() {
391 return Collections.emptyList();
392 }
393
394 @Override
395 public void setMirroredRepositories(List<ArtifactRepository> mirroredRepositories) {}
396
397 @Override
398 public boolean isBlocked() {
399 return false;
400 }
401
402 @Override
403 public void setBlocked(boolean blocked) {}
404 }
405 }