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