View Javadoc

1   /*
2    * $Id: ClasspathScannerTestCase.java 20321 2010-11-24 15:21:24Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  package org.mule.util.scan;
11  
12  import org.mule.tck.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  public class ClasspathScannerTestCase extends AbstractMuleTestCase
28  {
29  
30  
31      //This is slow
32      public void testSearchInterfaceScanClasspathAndJars() throws Exception
33      {
34          ClasspathScanner s = new ClasspathScanner("org");
35          Set<Class> set = s.scanFor(Fruit.class);
36  
37          assertTrue(set.contains(Apple.class));
38          assertTrue(set.contains(RedApple.class));
39          assertTrue(set.contains(BloodOrange.class));
40          assertFalse(set.contains(OrangeInterface.class));
41          assertTrue(set.contains(Orange.class));
42          assertTrue(set.contains(Grape.class));
43          assertTrue(set.contains(SeedlessGrape.class));
44      }
45  
46      public void testSearchInterfaceScanClasspathAndJarsWithInterfaceFlag() throws Exception
47          {
48              ClasspathScanner s = new ClasspathScanner("org/mule");
49              Set<Class> set = s.scanFor(Fruit.class, ClasspathScanner.INCLUDE_INTERFACE);
50  
51              assertTrue(set.contains(Apple.class));
52              assertTrue(set.contains(RedApple.class));
53              assertTrue(set.contains(BloodOrange.class));
54              assertTrue(set.contains(OrangeInterface.class));
55              assertTrue(set.contains(Orange.class));
56              assertTrue(set.contains(Grape.class));
57              assertTrue(set.contains(SeedlessGrape.class));
58          }
59  
60      //This will be a lot more efficient
61      public void testInterfaceScanClasspathAndJarsMultipleBasePaths() throws Exception
62      {
63          ClasspathScanner s = new ClasspathScanner("org/mule");
64          Set<Class> set = s.scanFor(Fruit.class);
65  
66          assertTrue(set.contains(Apple.class));
67          assertTrue(set.contains(RedApple.class));
68          assertTrue(set.contains(BloodOrange.class));
69          assertFalse(set.contains(OrangeInterface.class));
70          assertTrue(set.contains(Orange.class));
71          assertTrue(set.contains(Grape.class));
72          assertTrue(set.contains(SeedlessGrape.class));
73          assertTrue(set.contains(MadridOrange.class));
74      }
75  
76  
77      public void testImplementationScanClasspathAndJarsMultipleBasePaths() throws Exception
78      {
79          ClasspathScanner s = new ClasspathScanner("org/mule");
80          Set<Class> set = s.scanFor(Orange.class);
81  
82          assertFalse(set.contains(Apple.class));
83          assertTrue(set.contains(BloodOrange.class));
84          assertFalse(set.contains(OrangeInterface.class));
85          assertFalse(set.contains(Orange.class));
86          assertFalse(set.contains(Grape.class));
87          assertTrue(set.contains(MadridOrange.class));
88      }
89  
90      public void testAnnotationMetaScanClasspathAndJarsMultipleBasePaths() throws Exception
91      {
92          ClasspathScanner s = new ClasspathScanner("org/mule/util");
93          Set<Class> set = s.scanFor(Meta.class);
94  
95          assertEquals(3, set.size());
96          assertTrue(set.contains(SampleClassWithAnnotations.class));
97          assertTrue(set.contains(SampleBeanWithAnnotations.class));
98          assertTrue(set.contains(SubscribeBean.class));
99      }
100 
101     public void testAnnotationScanClasspathAndJarsMultipleBasePaths() throws Exception
102     {
103         ClasspathScanner s = new ClasspathScanner("org/mule");
104         Set<Class> set = s.scanFor(Marker.class);
105 
106         assertTrue(set.contains(SampleBeanWithAnnotations.class));
107         assertTrue(set.contains(SubscribeBean.class));
108 
109         set = s.scanFor(NonMeta.class);
110         //assertEquals(1, set.size());
111         assertTrue(set.contains(SampleBeanWithAnnotations.class));
112 
113     }
114 }