@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 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); } }