1 package org.codehaus.plexus.component.discovery;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.io.File;
20 import java.util.List;
21 import java.util.Map;
22 import java.util.TreeMap;
23
24 import org.codehaus.plexus.PlexusTestCase;
25 import org.codehaus.plexus.classworlds.ClassWorld;
26 import org.codehaus.plexus.classworlds.realm.ClassRealm;
27 import org.codehaus.plexus.component.repository.ComponentDescriptor;
28 import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
29 import org.codehaus.plexus.context.DefaultContext;
30
31
32
33
34
35 public class ComponentDiscovererTest extends PlexusTestCase {
36 public void testDefaultComponentDiscoverer() throws Exception {
37 ComponentDiscoverer componentDiscoverer = new DefaultComponentDiscoverer();
38
39 ClassWorld classWorld = new ClassWorld();
40
41 ClassRealm core = classWorld.newRealm("core");
42
43 File testClasses = new File(getBasedir(), "target/test-classes");
44
45 core.addURL(testClasses.toURL());
46
47 File classes = new File(getBasedir(), "target/classes");
48
49 core.addURL(classes.toURL());
50
51 List<ComponentSetDescriptor> componentSetDescriptors =
52 componentDiscoverer.findComponents(new DefaultContext(), core);
53
54 ComponentDescriptor<?> componentDescriptor = byImplementation(componentSetDescriptors)
55 .get("org.codehaus.plexus.component.discovery.DefaultDiscoveredComponent");
56
57 assertNotNull("componentDescriptor is null", componentDescriptor);
58
59 assertEquals("org.codehaus.plexus.component.discovery.DiscoveredComponent", componentDescriptor.getRole());
60
61 assertEquals(
62 "org.codehaus.plexus.component.discovery.DefaultDiscoveredComponent",
63 componentDescriptor.getImplementation());
64 }
65
66 private static Map<String, ComponentDescriptor<?>> byImplementation(List<ComponentSetDescriptor> descriptorSets) {
67 TreeMap<String, ComponentDescriptor<?>> index = new TreeMap<String, ComponentDescriptor<?>>();
68 for (ComponentSetDescriptor descriptorSet : descriptorSets) {
69 for (ComponentDescriptor<?> descriptor : descriptorSet.getComponents()) {
70 index.put(descriptor.getImplementation(), descriptor);
71 }
72 }
73 return index;
74 }
75 }