Skip to content

Commit 660504b

Browse files
committed
More tests and method signatures for ClassPathScanner
1 parent 49af7e0 commit 660504b

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

grails-core/src/main/groovy/grails/boot/config/tools/ClassPathScanner.groovy

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,41 @@ import java.lang.annotation.Annotation
2828
class ClassPathScanner {
2929
private static final List DEFAULT_IGNORED_ROOT_PACKAGES = ['com', 'org', 'net', 'co', 'java', 'javax', 'groovy']
3030

31+
32+
/**
33+
* Scans for classes relative to the given class
34+
*
35+
* @param applicationClass The class, usually the Application class
36+
*
37+
* @return A set of classes
38+
*/
39+
Set<Class> scan(Class applicationClass) {
40+
return scan(applicationClass,[applicationClass.package.name])
41+
}
42+
43+
/**
44+
* Scans for classes relative to the given class
45+
*
46+
* @param applicationClass The class, usually the Application class
47+
* @param annotationFilter The annotation to filter by
48+
*
49+
* @return A set of classes
50+
*/
51+
Set<Class> scan(Class applicationClass, Class<? extends Annotation> annotationFilter) {
52+
return scan(applicationClass,[applicationClass.package.name], annotationFilter)
53+
}
54+
55+
/**
56+
* Scans for classes relative to the given class
57+
*
58+
* @param applicationClass The class, usually the Application class
59+
* @param annotationFilter The annotation to filter by
60+
*
61+
* @return A set of classes
62+
*/
63+
Set<Class> scan(Class applicationClass, Closure<Boolean> annotationFilter ) {
64+
return scan(applicationClass,[applicationClass.package.name], annotationFilter)
65+
}
3166
/**
3267
* Scans for classes relative to the given class
3368
*
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package grails.boot.config.tools
2+
3+
import grails.persistence.Entity
4+
import spock.lang.Specification
5+
6+
/**
7+
* Created by graemerocher on 06/10/2016.
8+
*/
9+
class ClassPathScannerSpec extends Specification {
10+
void "Test classpath scanner with package names"() {
11+
when:"the classpath is scanned"
12+
ClassPathScanner scanner = new ClassPathScanner()
13+
def results = scanner.scan(Application, ["grails.boot.config.tools"])
14+
15+
then:"the results are correct"
16+
results.size() == 1
17+
results.contains(Foo)
18+
}
19+
20+
void "Test classpath scanner with application"() {
21+
when:"the classpath is scanned"
22+
ClassPathScanner scanner = new ClassPathScanner()
23+
def results = scanner.scan(Application)
24+
25+
then:"the results are correct"
26+
results.size() == 1
27+
results.contains(Foo)
28+
}
29+
}
30+
31+
class Application {
32+
33+
}
34+
35+
@Entity
36+
class Foo {}

0 commit comments

Comments
 (0)