1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.internal.impl.resolver;
20
21 import java.util.Collection;
22 import java.util.Collections;
23 import java.util.Date;
24 import java.util.LinkedHashMap;
25 import java.util.Map;
26
27 import org.eclipse.aether.RepositorySystemSession;
28 import org.eclipse.aether.artifact.Artifact;
29 import org.eclipse.aether.impl.MetadataGenerator;
30 import org.eclipse.aether.installation.InstallRequest;
31 import org.eclipse.aether.metadata.Metadata;
32 import org.eclipse.aether.util.ConfigUtils;
33
34
35
36
37
38
39 class LocalSnapshotMetadataGenerator implements MetadataGenerator {
40
41 private final Map<Object, LocalSnapshotMetadata> snapshots;
42
43 private final Date timestamp;
44
45 LocalSnapshotMetadataGenerator(RepositorySystemSession session, InstallRequest request) {
46 timestamp = (Date) ConfigUtils.getObject(session, new Date(), "maven.startTime");
47
48 snapshots = new LinkedHashMap<>();
49 }
50
51 @Override
52 public Collection<? extends Metadata> prepare(Collection<? extends Artifact> artifacts) {
53 for (Artifact artifact : artifacts) {
54 if (artifact.isSnapshot()) {
55 Object key = LocalSnapshotMetadata.getKey(artifact);
56 LocalSnapshotMetadata snapshotMetadata = snapshots.get(key);
57 if (snapshotMetadata == null) {
58 snapshotMetadata = new LocalSnapshotMetadata(artifact, timestamp);
59 snapshots.put(key, snapshotMetadata);
60 }
61 snapshotMetadata.bind(artifact);
62 }
63 }
64
65 return Collections.emptyList();
66 }
67
68 @Override
69 public Artifact transformArtifact(Artifact artifact) {
70 return artifact;
71 }
72
73 @Override
74 public Collection<? extends Metadata> finish(Collection<? extends Artifact> artifacts) {
75 return snapshots.values();
76 }
77 }