Index: ClassLoaderWeavingAdaptor.java =================================================================== RCS file: /home/technology/org.aspectj/modules/loadtime/src/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java,v retrieving revision 1.35 diff -u -r1.35 ClassLoaderWeavingAdaptor.java --- ClassLoaderWeavingAdaptor.java 12 Dec 2005 15:42:19 -0000 1.35 +++ ClassLoaderWeavingAdaptor.java 13 Dec 2005 21:08:39 -0000 @@ -121,12 +121,18 @@ // register the definitions registerDefinitions(weaver, loader, definitions); - messageHandler = bcelWorld.getMessageHandler(); + if (enabled) { + messageHandler = bcelWorld.getMessageHandler(); - //bcelWorld.setResolutionLoader(loader.getParent());//(ClassLoader)null);// + //bcelWorld.setResolutionLoader(loader.getParent());//(ClassLoader)null);// - // after adding aspects - weaver.prepareForWeave(); + // after adding aspects + weaver.prepareForWeave(); + } else { + // free up unused world & weaver.. + bcelWorld = null; + weaver = null; + } } /** @@ -315,6 +321,8 @@ //TODO: the exclude aspect allow to exclude aspect defined upper in the CL hierarchy - is it what we want ?? // if not, review the getResource so that we track which resource is defined by which CL + enabled = false; // if no aspects are accepted, it is disabled + //iterate aspectClassNames //exclude if in any of the exclude list for (Iterator iterator = definitions.iterator(); iterator.hasNext();) { @@ -323,6 +331,7 @@ String aspectClassName = (String) aspects.next(); if (acceptAspect(aspectClassName)) { info("register aspect " + aspectClassName); + enabled = true; // if any aspects are accepted, it is enabled /*ResolvedType aspect = */weaver.addLibraryAspect(aspectClassName); //generate key for SC