/** * Lists all packages it can find in the classpath. * * @return a list with all the found packages */ public List<String> findPackages() { List<String> result; Iterator<String> packages; result = new ArrayList<>(); packages = m_Cache.packages(); while (packages.hasNext()) result.add(packages.next()); Collections.sort(result, new StringCompare()); return result; }
/** * Returns all class names stored in the cache. * @return the class names */ public static List<String> getAllClassNames() { List<String> result = new ArrayList<>(); Iterator<String> pkgs = m_Cache.packages(); while (pkgs.hasNext()) { String pkg = pkgs.next(); if (pkg.startsWith("moa")) { Set<String> classnames = m_Cache.getClassnames(pkg); result.addAll(classnames); } } return result; }
public static synchronized String[] findClassNames(String packageNameToSearch) { String[] cached = cachedClassNames.get(packageNameToSearch); if (cached == null) { HashSet<String> classNames = new HashSet<String>(); initCache(); Iterator<String> iter = m_Cache.packages(); while (iter.hasNext()) { String pkg = iter.next(); if (pkg.equals(packageNameToSearch) || pkg.startsWith(packageNameToSearch + ".")) classNames.addAll(m_Cache.getClassnames(pkg)); } cached = classNames.toArray(new String[classNames.size()]); Arrays.sort(cached); cachedClassNames.put(packageNameToSearch, cached); } return cached; }
/** * For testing only. * * @param args ignored */ public static void main(String[] args) { ClassCache cache = new ClassCache(); Iterator<String> packages = cache.packages(); List<String> sorted = new ArrayList<>(); while (packages.hasNext()) sorted.add(packages.next()); Collections.sort(sorted); for (String key: sorted) System.out.println(key + ": " + cache.getClassnames(key).size()); } }