public void close() { super.close(); unregisterWithParent(); for (Iterator<AbstractClassPool> childIterator = children.keySet().iterator(); childIterator.hasNext();) { AbstractClassPool child = childIterator.next(); childIterator.remove(); if (child.getClassLoader() != null) { child.close(); } } }
@Override public void cacheCtClass(String classname, CtClass c, boolean dynamic) { boolean trace = logger.isTraceEnabled(); if (trace) logger.trace(this + " caching " + classname); // TODO remove this true when ready super.cacheCtClass(classname, c, true); if (dynamic) { if (trace) logger.trace(this + " registering dynamic class " + classname); doneGeneratingClass(classname); String resourcename = getResourceName(classname); localResources.put(resourcename, Boolean.TRUE); } }
private CtClass obtainCtClassInfo(ScopedClassPool pool, String className, byte[] classfileBuffer) throws NotFoundException { try { return pool.getLocally(className); } catch (NotFoundException e) { // todo Bill Burke: this scares the shit out of me, but it must be done // I think it will screw up hotdeployment at some time. Then again, maybe not ;) ByteArrayClassPath cp = new ByteArrayClassPath(className, classfileBuffer); pool.insertClassPath(cp); return pool.getLocally(className); } catch(Error e) { return null; } }
try clazz = pool.getLocally(className); pool.insertClassPath(cp); clazz = pool.getLocally(className); pool.flushClass(className); return null; pool.flushClass(className); return null; pool.flushClass(className); return null; if (transformed) pool.lockInCache(clazz); if (AspectManager.debugClasses) pool.soften(clazz);
if (woven != null) pool.lockInCache(woven); if (AspectManager.debugClasses) pool.soften(clazz);
public String toString() { ClassLoader cl = null; try { cl = getClassLoader(); } catch(IllegalStateException ignore) { } return this.getClass().getName() + "@" + System.identityHashCode(this) + " " + super.toString() + " - dcl:" + cl; }
pool.flushClass(clazz.getName()); return null;
public void unregisterClassLoader(ClassLoader classLoader, Module module) { ScopedClassPool classPool = registeredModules.remove(module); if (classLoader == null) { if (classPool == null) { //throw new IllegalStateException("Module " + module + " is not registered"); //TODO JBREFLECT-116 if (log.isDebugEnabled()) log.warn("Module " + module + " is not registered"); return; } classPool.close(); } else { unregisterClassLoader(classLoader); } }