package aQute.bnd.osgi; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.osgi.annotation.versioning.ProviderType; import aQute.lib.strings.Strings; import aQute.service.reporter.Reporter; /** * Type caused coupling to build package and was never locally used. This class * was moved to the aQute.bnd.build package */ @Deprecated() @ProviderType public class Classpath { public interface ClassVisitor { boolean visit(Clazz clazz) throws Exception; } List<File> entries = new ArrayList<File>(); public Classpath(Reporter project, String name) {} public void add(Collection<Object> testpath) throws Exception { throw new UnsupportedOperationException(); } // public void add(Collection<Container> testpath) throws Exception { // for (Container c : Container.flatten(testpath)) { // if (c.getError() != null) { // project.error("Adding %s to %s, got error: %s", c, name, c.getError()); // } else { // entries.add(c.getFile().getAbsoluteFile()); // } // } // } public List<File> getEntries() { return entries; } /** * Visit each class on the class path. * * @param visitor the visitor */ public void visit(ClassVisitor visitor) throws Exception { try (Analyzer analyzer = new Analyzer()) { for (File f : entries) { try (Jar jar = new Jar(f)) { for (String path : jar.getResources().keySet()) { if (path.endsWith(".class")) { Resource r = jar.getResource(path); Clazz c = new Clazz(analyzer, path, r); c.parseClassFile(); visitor.visit(c); } } } } } } public String toString() { return Strings.join(File.pathSeparator, entries); } }