@Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { try { if (isClassFile(file.getFileName().toString())) classFileVisitor.apply(Files.newInputStream(file)); return FileVisitResult.CONTINUE; } catch (Exception e) { throw new RuntimeException("Exception while processing " + file, e); } } });
@Override public void visit(String resource, URL url, ClassLoader cl) { if (!isClassFile(resource)) return; final String className = ClassLoaderUtil.resourceToClass(resource); // System.out.println("className: " + className + " " // + ASMUtil.isAssignableFrom(Actor.class, className, ActorModule.this) + " " // + " " + url + " " + ActorModule.this.parent.getResource(resource) + " " // + equalContent(ActorModule.this.parent.getResource(resource), url)); if (isAutomaticUpgrade(className) && !equalContent(ActorModule.this.parent.getResource(resource), url)) builder.add(className); } });
@Override public void visit(String resource, URL url, ClassLoader cl) { if (!isClassFile(resource)) return; final String className = ClassLoaderUtil.resourceToClass(resource); try (InputStream is = cl.getResourceAsStream(resource)) { if (AnnotationUtil.hasClassAnnotation(Upgrade.class, is)) { LOG.debug("Upgrade of class {} (annotated)", className); builder.add(className); } } catch (IOException e) { throw new RuntimeException("Exception while scanning class " + className + " for Upgrade annotation", e); } } });
@Override public void visit(String resource, URL url, ClassLoader cl) throws IOException { if (resource.startsWith("java/util") || resource.startsWith("java/lang") || resource.startsWith("co/paralleluniverse/asm")) return; if (isClassFile(url.getFile())) { URLConnection uc = url.openConnection(); uc.setUseCaches(false); try (InputStream is = uc.getInputStream()) { if (is == null) throw new IOException("Resource " + resource + " not found (" + url + ")"); new ClassReader(is) .accept(new SuspendableClassifier(false, ASMAPI, null), ClassReader.SKIP_DEBUG | ClassReader.SKIP_CODE); } catch (Exception e) { throw new RuntimeException("Exception thrown during processing (aaa) of " + resource + /*"(classloader: " + Arrays.toString(SuspendablesScanner.this.cl.getURLs()) + ")" +*/ " at " + url, e); } } } });
@Override public URL getResource(String name) { if (recursive.get() == Boolean.TRUE) return null; recursive.set(Boolean.TRUE); try { if (isClassFile(name)) { String className = resourceToClass(name); ActorModule module = classModule.get(className); // ActorModule module = null; // for (ActorModule m : Lists.reverse(modules)) { // if (m.getUpgradeClasses().contains(className)) { // module = m; // break; // } // } if (module != null) return module.getResource(name); } } finally { recursive.remove(); } return super.getResource(name); }
@Override public final void visit(String resource, URL url, ClassLoader cl) { if (!ClassLoaderUtil.isClassFile(resource)) return; final String className = ClassLoaderUtil.resourceToClass(resource); try (final InputStream is = cl.getResourceAsStream(resource)) { if (AnnotationUtil.hasClassAnnotation(WebActor.class, is)) registerWebActor(cl.loadClass(className)); } catch (final IOException | ClassNotFoundException e) { log.error("Exception while scanning class " + className + " for WebActor annotation", e); throw new RuntimeException(e); } }
private void visitAntProject(Function<InputStream, Void> classFileVisitor) throws IOException { for (FileSet fs : filesets) { try { final DirectoryScanner ds = fs.getDirectoryScanner(getProject()); final String[] includedFiles = ds.getIncludedFiles(); for (String filename : includedFiles) { if (isClassFile(filename)) { try { File file = new File(fs.getDir(), filename); if (file.isFile()) classFileVisitor.apply(new FileInputStream(file)); else log("File not found: " + filename); } catch (Exception e) { throw new RuntimeException("Exception while processing " + filename, e); } } } } catch (BuildException ex) { log(ex.getMessage(), ex, Project.MSG_WARN); } } }