@Override public Iterable<JavaFileObject> list(Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException { if (location == StandardLocation.PLATFORM_CLASS_PATH) { return fileManager.list(location, packageName, kinds, recurse); } else if (location == StandardLocation.CLASS_PATH && kinds.contains(JavaFileObject.Kind.CLASS)) { if (packageName.startsWith("java")) { return fileManager.list(location, packageName, kinds, recurse); } else { try { Iterable<JavaFileObject> ret = finder.resolve(packageName, recurse); return ret; } catch (URISyntaxException e) { throw new IOException(e); } } } else { return Collections.emptyList(); } }
private void resolve(List<JavaFileObject> files, Node node, String binaryName, boolean recurse) throws IOException, URISyntaxException { for (Node child : driver.children(node)) { Iterator<Resource> i = child.iterator(); if (i.hasNext()) { if (child.name.endsWith(".class")) { Resource r = i.next(); URI uri = r.url.toURI(); files.add(new NodeJavaFileObject( binaryName + "." + child.name.substring(0, child.name.length() - ".class".length()), uri, r.streamFactory, r.lastModified)); } } else { if (recurse) { resolve(files, child, binaryName + "." + child.name, recurse); } } } }
resolve(files, current, pkg, recurse); return files;
public void testJar() throws Exception { File jar = toFile(this.archive, ".jar"); ClassLoader cl = new URLClassLoader(new URL[]{jar.toURI().toURL()}, parent); ClasspathResolver resolver = new ClasspathResolver(cl); // No recurse List<JavaFileObject> classes = collect(Utils.list(resolver.resolve("java.util", false))); assertEquals(2, classes.size()); assertEndsWith("/HashMap.class", classes.get(0).getName()); assertEndsWith("/Map.class", classes.get(1).getName()); // Recurse classes = collect(Utils.list(resolver.resolve("java.util", true))); assertEquals(3, classes.size()); assertEndsWith("/ConcurrentHashMap.class", classes.get(0).getName()); assertEndsWith("/HashMap.class", classes.get(1).getName()); assertEndsWith("/Map.class", classes.get(2).getName()); }
public void testDir() throws Exception { File root = toExploded(archive, ""); ClassLoader cl = new URLClassLoader(new URL[]{root.toURI().toURL()}, parent); ClasspathResolver resolver = new ClasspathResolver(cl); // No recurse List<JavaFileObject> classes = collect(Utils.list(resolver.resolve("java.util", false))); assertEquals(2, classes.size()); assertEndsWith("/HashMap.class", classes.get(0).getName()); assertEndsWith("/Map.class", classes.get(1).getName()); // Recurse classes = collect(Utils.list(resolver.resolve("java.util", true))); assertEquals(3, classes.size()); assertEndsWith("/ConcurrentHashMap.class", classes.get(0).getName()); assertEndsWith("/HashMap.class", classes.get(1).getName()); assertEndsWith("/Map.class", classes.get(2).getName()); }
List<JavaFileObject> classes = collect(Utils.list(resolver.resolve("java.util", false))); assertEquals(2, classes.size()); assertEndsWith("/HashMap.class", classes.get(0).getName()); classes = collect(Utils.list(resolver.resolve("java.util", true))); assertEquals(3, classes.size()); assertEndsWith("/ConcurrentHashMap.class", classes.get(0).getName());
private void resolve(List<JavaFileObject> files, Node node, String binaryName, boolean recurse) throws IOException, URISyntaxException { for (Node child : driver.children(node)) { Iterator<Resource> i = child.iterator(); if (i.hasNext()) { if (child.name.endsWith(".class")) { Resource r = i.next(); URI uri = r.url.toURI(); files.add(new NodeJavaFileObject( binaryName + "." + child.name.substring(0, child.name.length() - ".class".length()), uri, r.streamFactory, r.lastModified)); } } else { if (recurse) { resolve(files, child, binaryName + "." + child.name, recurse); } } } }
private void resolve(List<JavaFileObject> files, Node node, String binaryName, boolean recurse) throws IOException, URISyntaxException { for (Node child : driver.children(node)) { Iterator<Resource> i = child.iterator(); if (i.hasNext()) { if (child.name.endsWith(".class")) { Resource r = i.next(); URI uri = r.url.toURI(); files.add(new NodeJavaFileObject( binaryName + "." + child.name.substring(0, child.name.length() - ".class".length()), uri, r.streamFactory, r.lastModified)); } } else { if (recurse) { resolve(files, child, binaryName + "." + child.name, recurse); } } } }
@Override public Iterable<JavaFileObject> list(Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException { if (location == StandardLocation.PLATFORM_CLASS_PATH) { return fileManager.list(location, packageName, kinds, recurse); } else if (location == StandardLocation.CLASS_PATH && kinds.contains(JavaFileObject.Kind.CLASS)) { if (packageName.startsWith("java")) { return fileManager.list(location, packageName, kinds, recurse); } else { try { Iterable<JavaFileObject> ret = finder.resolve(packageName, recurse); return ret; } catch (URISyntaxException e) { throw new IOException(e); } } } else { return Collections.emptyList(); } }
@Override public Iterable<JavaFileObject> list(Location location, String packageName, Set<JavaFileObject.Kind> kinds, boolean recurse) throws IOException { if (location == StandardLocation.PLATFORM_CLASS_PATH) { return fileManager.list(location, packageName, kinds, recurse); } else if (location == StandardLocation.CLASS_PATH && kinds.contains(JavaFileObject.Kind.CLASS)) { if (packageName.startsWith("java")) { return fileManager.list(location, packageName, kinds, recurse); } else { try { Iterable<JavaFileObject> ret = finder.resolve(packageName, recurse); return ret; } catch (URISyntaxException e) { throw new IOException(e); } } } else { return Collections.emptyList(); } }
resolve(files, current, pkg, recurse); return files;
resolve(files, current, pkg, recurse); return files;