1
2
3
4
5
6
7
8
9
10 package org.mule.util.scan;
11
12 import org.mule.tck.junit4.AbstractMuleTestCase;
13 import org.mule.tck.testmodels.fruit.Apple;
14 import org.mule.tck.testmodels.fruit.BloodOrange;
15 import org.mule.tck.testmodels.fruit.Fruit;
16 import org.mule.tck.testmodels.fruit.Orange;
17 import org.mule.tck.testmodels.fruit.OrangeInterface;
18 import org.mule.tck.testmodels.fruit.RedApple;
19 import org.mule.util.scan.annotations.Marker;
20 import org.mule.util.scan.annotations.Meta;
21 import org.mule.util.scan.annotations.NonMeta;
22 import org.mule.util.scan.annotations.SampleBeanWithAnnotations;
23 import org.mule.util.scan.annotations.SampleClassWithAnnotations;
24
25 import java.util.Set;
26
27 import org.junit.Test;
28
29 import static org.junit.Assert.assertEquals;
30 import static org.junit.Assert.assertFalse;
31 import static org.junit.Assert.assertTrue;
32
33 public class ClasspathScannerTestCase extends AbstractMuleTestCase
34 {
35
36 @Test
37 public void testSearchInterfaceScanClasspathAndJars() throws Exception
38 {
39 ClasspathScanner scanner = new ClasspathScanner("org");
40 Set<Class<Fruit>> set = scanner.scanFor(Fruit.class);
41
42 assertTrue(set.contains(Apple.class));
43 assertTrue(set.contains(RedApple.class));
44 assertTrue(set.contains(BloodOrange.class));
45 assertFalse(set.contains(OrangeInterface.class));
46 assertTrue(set.contains(Orange.class));
47 assertTrue(set.contains(Grape.class));
48 assertTrue(set.contains(SeedlessGrape.class));
49 }
50
51 @Test
52 public void testSearchInterfaceScanClasspathAndJarsWithInterfaceFlag() throws Exception
53 {
54 ClasspathScanner scanner = new ClasspathScanner("org/mule");
55 Set<Class<Fruit>> set = scanner.scanFor(Fruit.class, ClasspathScanner.INCLUDE_INTERFACE);
56
57 assertTrue(set.contains(Apple.class));
58 assertTrue(set.contains(RedApple.class));
59 assertTrue(set.contains(BloodOrange.class));
60 assertTrue(set.contains(OrangeInterface.class));
61 assertTrue(set.contains(Orange.class));
62 assertTrue(set.contains(Grape.class));
63 assertTrue(set.contains(SeedlessGrape.class));
64 }
65
66
67 @Test
68 public void testInterfaceScanClasspathAndJarsMultipleBasePaths() throws Exception
69 {
70 ClasspathScanner scanner = new ClasspathScanner("org/mule");
71 Set<Class<Fruit>> set = scanner.scanFor(Fruit.class);
72
73 assertTrue(set.contains(Apple.class));
74 assertTrue(set.contains(RedApple.class));
75 assertTrue(set.contains(BloodOrange.class));
76 assertFalse(set.contains(OrangeInterface.class));
77 assertTrue(set.contains(Orange.class));
78 assertTrue(set.contains(Grape.class));
79 assertTrue(set.contains(SeedlessGrape.class));
80 assertTrue(set.contains(MadridOrange.class));
81 }
82
83 @Test
84 public void testImplementationScanClasspathAndJarsMultipleBasePaths() throws Exception
85 {
86 ClasspathScanner scanner = new ClasspathScanner("org/mule");
87 Set<Class<Orange>> set = scanner.scanFor(Orange.class);
88
89 assertFalse(set.contains(Apple.class));
90 assertTrue(set.contains(BloodOrange.class));
91 assertFalse(set.contains(OrangeInterface.class));
92 assertFalse(set.contains(Orange.class));
93 assertFalse(set.contains(Grape.class));
94 assertTrue(set.contains(MadridOrange.class));
95 }
96
97 @Test
98 public void testAnnotationMetaScanClasspathAndJarsMultipleBasePaths() throws Exception
99 {
100 ClasspathScanner scanner = new ClasspathScanner("org/mule/util");
101 Set<Class<Meta>> set = scanner.scanFor(Meta.class);
102
103 assertEquals(3, set.size());
104 assertTrue(set.contains(SampleClassWithAnnotations.class));
105 assertTrue(set.contains(SampleBeanWithAnnotations.class));
106 assertTrue(set.contains(SubscribeBean.class));
107 }
108
109 @Test
110 public void testAnnotationScanClasspathAndJarsMultipleBasePaths() throws Exception
111 {
112 ClasspathScanner scanner = new ClasspathScanner("org/mule");
113 Set<Class<Marker>> set = scanner.scanFor(Marker.class);
114
115 assertTrue(set.contains(SampleBeanWithAnnotations.class));
116 assertTrue(set.contains(SubscribeBean.class));
117
118 Set<Class<NonMeta>> nonMetaSet = scanner.scanFor(NonMeta.class);
119
120 assertTrue(nonMetaSet.contains(SampleBeanWithAnnotations.class));
121 }
122 }