1 package org.eclipse.aether.internal.impl;
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 class CachingArtifactTypeRegistry
33 implements ArtifactTypeRegistry
34 {
35
36 private final ArtifactTypeRegistry delegate;
37
38 private final Map<String, ArtifactType> types;
39
40 public static ArtifactTypeRegistry newInstance( RepositorySystemSession session )
41 {
42 return newInstance( session.getArtifactTypeRegistry() );
43 }
44
45 public static ArtifactTypeRegistry newInstance( ArtifactTypeRegistry delegate )
46 {
47 return ( delegate != null ) ? new CachingArtifactTypeRegistry( delegate ) : null;
48 }
49
50 private CachingArtifactTypeRegistry( ArtifactTypeRegistry delegate )
51 {
52 this.delegate = delegate;
53 types = new HashMap<String, ArtifactType>();
54 }
55
56 public ArtifactType get( String typeId )
57 {
58 ArtifactType type = types.get( typeId );
59
60 if ( type == null )
61 {
62 type = delegate.get( typeId );
63 types.put( typeId, type );
64 }
65
66 return type;
67 }
68
69 }