public static void accept(URLClassLoader ucl, Visitor visitor) throws IOException { accept(ucl, ucl.getURLs(), visitor); }
private void scanExternalSuspendables() throws IOException { ClassLoaderUtil.accept(cl, new ClassLoaderUtil.Visitor() { @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); } } } }); }
private synchronized void registerActorClasses() { if (actorClasses.isEmpty()) { try { final ClassLoader classLoader = userClassLoader != null ? userClassLoader : this.getClass().getClassLoader(); ClassLoaderUtil.accept((URLClassLoader) classLoader, new ClassLoaderUtil.Visitor() { @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 registerWebActor(Class<?> c) { actorClasses.add(c); } }); } catch (final IOException e) { log.error("IOException while scanning classes for WebActor annotation", e); } } } }
if (ucstr != null && !ucstr.trim().isEmpty()) { if (ucstr.trim().equals("*")) { ClassLoaderUtil.accept(this, new ClassLoaderUtil.Visitor() { @Override public void visit(String resource, URL url, ClassLoader cl) { ClassLoaderUtil.accept(this, new ClassLoaderUtil.Visitor() { @Override public void visit(String resource, URL url, ClassLoader cl) {