• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

coditory / quark-context / #19

pending completion
#19

push

github-actions

pmendelski
Fix context scanner

191 of 191 new or added lines in 3 files covered. (100.0%)

920 of 1126 relevant lines covered (81.71%)

0.82 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.0
/src/main/java/com/coditory/quark/context/ClassPathScanner.java
1
package com.coditory.quark.context;
2

3
import java.io.IOException;
4
import java.util.Iterator;
5
import java.util.LinkedList;
6
import java.util.List;
7
import java.util.Queue;
8
import java.util.function.Predicate;
9

10
final class ClassPathScanner implements Iterator<Class<?>> {
11
    static ClassPathScanner scanPackageAndSubPackages(String packageName, Predicate<String> filter, ClassLoader classLoader) {
12
        try {
13
            List<String> classes = getClasses(packageName, filter, classLoader);
1✔
14
            return new ClassPathScanner(classes, classLoader);
1✔
15
        } catch (IOException e) {
×
16
            throw new RuntimeException("Could not scan classpath", e);
×
17
        }
18
    }
19

20
    private static List<String> getClasses(String packageName, Predicate<String> filter, ClassLoader classLoader)
21
            throws IOException {
22
        return ClassPath.from(classLoader)
1✔
23
                .getTopLevelClassesRecursive(packageName)
1✔
24
                .stream()
1✔
25
                .map(ClassPath.ClassInfo::getName)
1✔
26
                .filter(filter)
1✔
27
                .toList();
1✔
28
    }
29

30
    private final ClassLoader classLoader;
31
    private final Queue<String> classesToScan;
32

33
    ClassPathScanner(List<String> classesToScan, ClassLoader classLoader) {
1✔
34
        this.classLoader = classLoader;
1✔
35
        this.classesToScan = new LinkedList<>(classesToScan);
1✔
36
    }
1✔
37

38
    @Override
39
    public boolean hasNext() {
40
        return !classesToScan.isEmpty();
1✔
41
    }
42

43
    @Override
44
    public Class<?> next() {
45
        String className = classesToScan.poll();
1✔
46
        return loadClass(className);
1✔
47
    }
48

49
    private Class<?> loadClass(String canonicalName) {
50
        try {
51
            return classLoader.loadClass(canonicalName);
1✔
52
        } catch (ClassNotFoundException e) {
×
53
            throw new RuntimeException("Could not load class: " + canonicalName, e);
×
54
        }
55
    }
56
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc