private void analyze()

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);
            }
        }
    }