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