1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.repository.internal;
20
21 import java.util.Collection;
22 import java.util.Collections;
23 import java.util.Date;
24 import java.util.Iterator;
25 import java.util.LinkedHashMap;
26 import java.util.Map;
27
28 import org.eclipse.aether.RepositorySystemSession;
29 import org.eclipse.aether.artifact.Artifact;
30 import org.eclipse.aether.deployment.DeployRequest;
31 import org.eclipse.aether.impl.MetadataGenerator;
32 import org.eclipse.aether.installation.InstallRequest;
33 import org.eclipse.aether.metadata.Metadata;
34 import org.eclipse.aether.util.ConfigUtils;
35
36
37
38
39
40
41
42
43 @Deprecated(since = "4.0.0")
44 class VersionsMetadataGenerator implements MetadataGenerator {
45
46 private final Map<Object, VersionsMetadata> versions;
47
48 private final Map<Object, VersionsMetadata> processedVersions;
49
50 private final Date timestamp;
51
52 VersionsMetadataGenerator(RepositorySystemSession session, InstallRequest request) {
53 this(session, request.getMetadata());
54 }
55
56 VersionsMetadataGenerator(RepositorySystemSession session, DeployRequest request) {
57 this(session, request.getMetadata());
58 }
59
60 private VersionsMetadataGenerator(RepositorySystemSession session, Collection<? extends Metadata> metadatas) {
61 versions = new LinkedHashMap<>();
62 processedVersions = new LinkedHashMap<>();
63 timestamp = (Date) ConfigUtils.getObject(session, new Date(), "maven.startTime");
64
65
66
67
68
69
70
71 for (Iterator<? extends Metadata> it = metadatas.iterator(); it.hasNext(); ) {
72 Metadata metadata = it.next();
73 if (metadata instanceof VersionsMetadata versionsMetadata) {
74 it.remove();
75 processedVersions.put(versionsMetadata.getKey(), versionsMetadata);
76 }
77 }
78 }
79
80 @Override
81 public Collection<? extends Metadata> prepare(Collection<? extends Artifact> artifacts) {
82 return Collections.emptyList();
83 }
84
85 @Override
86 public Artifact transformArtifact(Artifact artifact) {
87 return artifact;
88 }
89
90 @Override
91 public Collection<? extends Metadata> finish(Collection<? extends Artifact> artifacts) {
92 for (Artifact artifact : artifacts) {
93 Object key = VersionsMetadata.getKey(artifact);
94 if (processedVersions.get(key) == null) {
95 VersionsMetadata versionsMetadata = versions.get(key);
96 if (versionsMetadata == null) {
97 versionsMetadata = new VersionsMetadata(artifact, timestamp);
98 versions.put(key, versionsMetadata);
99 }
100 }
101 }
102
103 return versions.values();
104 }
105 }