in src/main/java/org/apache/sling/testing/teleporter/client/DependencyAnalyzer.java [81:115]
private void analyze(Class<?> c, Logger log) {
if(alreadySeen.contains(c)) {
return;
}
alreadySeen.add(c);
final Set<String> deps = new HashSet<String>();
final String path = "/" + c.getName().replace('.', '/') + ".class";
final InputStream input = getClass().getResourceAsStream(path);
if(input == null) {
throw new RuntimeException("Class resource not found: " + path);
}
log.trace("Analyzing dependencies of {}...", c);
try {
try {
final DependencyClassFileVisitor v = new DependencyClassFileVisitor();
v.visitClass(c.getName(), input);
deps.addAll(v.getDependencies());
} finally {
input.close();
}
} catch(IOException ioe) {
throw new RuntimeException("IOException while reading " + path);
}
// Keep only accepted dependencies, and recursively analyze them
for(String dep : deps) {
if(dep.equals(c.getName())) {
continue;
}
if(accept(dep, log)) {
dependencyNames.add(dep);
analyze(toClass(dep), log);
}
}
}