1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.artifact.handler.manager;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.util.Map;
26 import java.util.Set;
27 import java.util.concurrent.ConcurrentHashMap;
28
29 import org.apache.maven.artifact.handler.ArtifactHandler;
30 import org.apache.maven.artifact.handler.DefaultArtifactHandler;
31
32
33
34
35 @Named
36 @Singleton
37 public class DefaultArtifactHandlerManager implements ArtifactHandlerManager {
38
39 private final Map<String, ArtifactHandler> artifactHandlers;
40
41 private final Map<String, ArtifactHandler> allHandlers = new ConcurrentHashMap<>();
42
43 @Inject
44 public DefaultArtifactHandlerManager(Map<String, ArtifactHandler> artifactHandlers) {
45 this.artifactHandlers = artifactHandlers;
46 }
47
48 public ArtifactHandler getArtifactHandler(String type) {
49 ArtifactHandler handler = allHandlers.get(type);
50
51 if (handler == null) {
52 handler = artifactHandlers.get(type);
53
54 if (handler == null) {
55 handler = new DefaultArtifactHandler(type);
56 } else {
57 allHandlers.put(type, handler);
58 }
59 }
60
61 return handler;
62 }
63
64 public void addHandlers(Map<String, ArtifactHandler> handlers) {
65
66 allHandlers.putAll(handlers);
67 }
68
69 @Deprecated
70 public Set<String> getHandlerTypes() {
71 return artifactHandlers.keySet();
72 }
73 }