1 package org.eclipse.aether.internal.impl.collect;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.HashMap;
23 import java.util.Map;
24
25 import org.eclipse.aether.RepositorySystemSession;
26 import org.eclipse.aether.artifact.ArtifactType;
27 import org.eclipse.aether.artifact.ArtifactTypeRegistry;
28
29
30
31
32
33 public class CachingArtifactTypeRegistry
34 implements ArtifactTypeRegistry
35 {
36
37 private final ArtifactTypeRegistry delegate;
38
39 private final Map<String, ArtifactType> types;
40
41 public static ArtifactTypeRegistry newInstance( RepositorySystemSession session )
42 {
43 return newInstance( session.getArtifactTypeRegistry() );
44 }
45
46 public static ArtifactTypeRegistry newInstance( ArtifactTypeRegistry delegate )
47 {
48 return ( delegate != null ) ? new CachingArtifactTypeRegistry( delegate ) : null;
49 }
50
51 private CachingArtifactTypeRegistry( ArtifactTypeRegistry delegate )
52 {
53 this.delegate = delegate;
54 types = new HashMap<>();
55 }
56
57 public ArtifactType get( String typeId )
58 {
59 ArtifactType type = types.get( typeId );
60
61 if ( type == null )
62 {
63 type = delegate.get( typeId );
64 types.put( typeId, type );
65 }
66
67 return type;
68 }
69
70 }