1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl.collect;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import org.eclipse.aether.RepositorySystemSession;
29 import org.eclipse.aether.collection.CollectRequest;
30 import org.eclipse.aether.collection.CollectResult;
31 import org.eclipse.aether.collection.DependencyCollectionException;
32 import org.eclipse.aether.impl.DependencyCollector;
33 import org.eclipse.aether.internal.impl.collect.bf.BfDependencyCollector;
34 import org.eclipse.aether.internal.impl.collect.df.DfDependencyCollector;
35 import org.eclipse.aether.spi.locator.Service;
36 import org.eclipse.aether.spi.locator.ServiceLocator;
37 import org.eclipse.aether.util.ConfigUtils;
38
39 import static java.util.Objects.requireNonNull;
40
41
42
43
44 @Singleton
45 @Named
46 public class DefaultDependencyCollector implements DependencyCollector, Service {
47 private static final String CONFIG_PROP_COLLECTOR_IMPL = "aether.dependencyCollector.impl";
48
49 private static final String DEFAULT_COLLECTOR_IMPL = DfDependencyCollector.NAME;
50
51 private final Map<String, DependencyCollectorDelegate> delegates;
52
53
54
55
56
57
58 @Deprecated
59 public DefaultDependencyCollector() {
60 this.delegates = new HashMap<>();
61 }
62
63 @Inject
64 public DefaultDependencyCollector(Map<String, DependencyCollectorDelegate> delegates) {
65 this.delegates = requireNonNull(delegates);
66 }
67
68 @Override
69 public void initService(ServiceLocator locator) {
70 BfDependencyCollector bf = new BfDependencyCollector();
71 bf.initService(locator);
72 DfDependencyCollector df = new DfDependencyCollector();
73 df.initService(locator);
74 this.delegates.put(BfDependencyCollector.NAME, bf);
75 this.delegates.put(DfDependencyCollector.NAME, df);
76 }
77
78 @Override
79 public CollectResult collectDependencies(RepositorySystemSession session, CollectRequest request)
80 throws DependencyCollectionException {
81 String delegateName = ConfigUtils.getString(session, DEFAULT_COLLECTOR_IMPL, CONFIG_PROP_COLLECTOR_IMPL);
82 DependencyCollectorDelegate delegate = delegates.get(delegateName);
83 if (delegate == null) {
84 throw new IllegalArgumentException(
85 "Unknown collector impl: '" + delegateName + "', known implementations are " + delegates.keySet());
86 }
87 return delegate.collectDependencies(session, request);
88 }
89 }