summaryrefslogtreecommitdiffstats
path: root/loadtime/src
diff options
context:
space:
mode:
authormwebster <mwebster>2006-06-15 16:32:39 +0000
committermwebster <mwebster>2006-06-15 16:32:39 +0000
commitfdbae3fda3e572ea35ac4a73373896b9b5cff8f7 (patch)
tree5433af7f17e1b96d05fe541a1bca017b12a6ac81 /loadtime/src
parent81abede5115df2b032b846c5ff8bf23050f68e34 (diff)
downloadaspectj-fdbae3fda3e572ea35ac4a73373896b9b5cff8f7.tar.gz
aspectj-fdbae3fda3e572ea35ac4a73373896b9b5cff8f7.zip
Fix for 139936 "[ltw] WeavingAdaptor.generatedClassesExist() cannot cope with additional class weaving"
Diffstat (limited to 'loadtime/src')
-rw-r--r--loadtime/src/org/aspectj/weaver/loadtime/Aj.java4
-rw-r--r--loadtime/src/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java18
-rw-r--r--loadtime/src/org/aspectj/weaver/loadtime/DefaultWeavingContext.java8
-rw-r--r--loadtime/src/org/aspectj/weaver/loadtime/IWeavingContext.java6
-rw-r--r--loadtime/src/org/aspectj/weaver/loadtime/WeavingURLClassLoader.java7
5 files changed, 33 insertions, 10 deletions
diff --git a/loadtime/src/org/aspectj/weaver/loadtime/Aj.java b/loadtime/src/org/aspectj/weaver/loadtime/Aj.java
index 5c8336135..b0552a040 100644
--- a/loadtime/src/org/aspectj/weaver/loadtime/Aj.java
+++ b/loadtime/src/org/aspectj/weaver/loadtime/Aj.java
@@ -152,11 +152,11 @@ public class Aj implements ClassPreProcessor {
* @return true if classes have been generated.
*/
public boolean generatedClassesExist(ClassLoader loader){
- return ((ClassLoaderWeavingAdaptor)WeaverContainer.getWeaver(loader, weavingContext)).generatedClassesExist();
+ return ((ClassLoaderWeavingAdaptor)WeaverContainer.getWeaver(loader, weavingContext)).generatedClassesExistFor(null);
}
public void flushGeneratedClasses(ClassLoader loader){
((ClassLoaderWeavingAdaptor)WeaverContainer.getWeaver(loader, weavingContext)).flushGeneratedClasses();
}
-}
+} \ No newline at end of file
diff --git a/loadtime/src/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java b/loadtime/src/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
index 6f41e6aeb..2b1eef064 100644
--- a/loadtime/src/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
+++ b/loadtime/src/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
@@ -166,7 +166,7 @@ public class ClassLoaderWeavingAdaptor extends WeavingAdaptor {
while (xmls.hasMoreElements()) {
URL xml = (URL) xmls.nextElement();
- info("using " + xml.getFile());
+ info("using configuration " + weavingContext.getFile(xml));
definitions.add(DocumentParser.parse(xml));
}
}
@@ -332,6 +332,7 @@ public class ClassLoaderWeavingAdaptor extends WeavingAdaptor {
String aspectClassName = (String) aspects.next();
if (acceptAspect(aspectClassName)) {
info("register aspect " + aspectClassName);
+// System.err.println("? ClassLoaderWeavingAdaptor.registerAspects() aspectName=" + aspectClassName + ", loader=" + loader + ", bundle=" + weavingContext.getClassLoaderName());
/*ResolvedType aspect = */weaver.addLibraryAspect(aspectClassName);
//generate key for SC
@@ -375,6 +376,7 @@ public class ClassLoaderWeavingAdaptor extends WeavingAdaptor {
}
}
}
+// System.out.println("ClassLoaderWeavingAdaptor.registerAspects() classloader=" + weavingContext.getClassLoaderName() + ", namespace=" + namespace);
/* We didn't register any aspects so disable the adaptor */
if (namespace == null) {
@@ -606,6 +608,7 @@ public class ClassLoaderWeavingAdaptor extends WeavingAdaptor {
* @return Returns the key.
*/
public String getNamespace() {
+// System.out.println("ClassLoaderWeavingAdaptor.getNamespace() classloader=" + weavingContext.getClassLoaderName() + ", namespace=" + namespace);
if(namespace==null) return "";
else return new String(namespace);
}
@@ -613,19 +616,20 @@ public class ClassLoaderWeavingAdaptor extends WeavingAdaptor {
/**
* Check to see if any classes are stored in the generated classes cache.
* Then flush the cache if it is not empty
+ * @param className TODO
* @return true if a class has been generated and is stored in the cache
*/
- public boolean generatedClassesExist(){
- if(generatedClasses.size()>0) {
- return true;
- }
- return false;
+ public boolean generatedClassesExistFor (String className) {
+// System.err.println("? ClassLoaderWeavingAdaptor.generatedClassesExist() classname=" + className + ", size=" + generatedClasses);
+ if (className == null) return !generatedClasses.isEmpty();
+ else return generatedClasses.containsKey(className);
}
/**
* Flush the generated classes cache
*/
- public void flushGeneratedClasses(){
+ public void flushGeneratedClasses() {
+// System.err.println("? ClassLoaderWeavingAdaptor.flushGeneratedClasses() generatedClasses=" + generatedClasses);
generatedClasses = new HashMap();
}
diff --git a/loadtime/src/org/aspectj/weaver/loadtime/DefaultWeavingContext.java b/loadtime/src/org/aspectj/weaver/loadtime/DefaultWeavingContext.java
index f54d917b0..3817ae5b0 100644
--- a/loadtime/src/org/aspectj/weaver/loadtime/DefaultWeavingContext.java
+++ b/loadtime/src/org/aspectj/weaver/loadtime/DefaultWeavingContext.java
@@ -44,7 +44,7 @@ public class DefaultWeavingContext implements IWeavingContext {
* @return null as we are not in an OSGi environment (therefore no bundles)
*/
public String getBundleIdFromURL(URL url) {
- return null;
+ return "";
}
/**
@@ -54,4 +54,10 @@ public class DefaultWeavingContext implements IWeavingContext {
return ((loader!=null)?loader.getClass().getName()+"@"+loader.hashCode():"null");
}
+ /**
+ * @return filename
+ */
+ public String getFile(URL url) {
+ return url.getFile();
+ }
}
diff --git a/loadtime/src/org/aspectj/weaver/loadtime/IWeavingContext.java b/loadtime/src/org/aspectj/weaver/loadtime/IWeavingContext.java
index f634cabc0..5b4a0c21c 100644
--- a/loadtime/src/org/aspectj/weaver/loadtime/IWeavingContext.java
+++ b/loadtime/src/org/aspectj/weaver/loadtime/IWeavingContext.java
@@ -49,4 +49,10 @@ public interface IWeavingContext {
*/
public String getClassLoaderName ();
+ /**
+ * Format a URL
+ * @return filename
+ */
+ public String getFile(URL url);
+
}
diff --git a/loadtime/src/org/aspectj/weaver/loadtime/WeavingURLClassLoader.java b/loadtime/src/org/aspectj/weaver/loadtime/WeavingURLClassLoader.java
index 8cff0d992..671b8e17a 100644
--- a/loadtime/src/org/aspectj/weaver/loadtime/WeavingURLClassLoader.java
+++ b/loadtime/src/org/aspectj/weaver/loadtime/WeavingURLClassLoader.java
@@ -151,6 +151,13 @@ public class WeavingURLClassLoader extends ExtensibleURLClassLoader implements W
public void acceptClass (String name, byte[] bytes) {
generatedClasses.put(name,bytes);
}
+
+// protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
+// System.err.println("> WeavingURLClassLoader.loadClass() name=" + name);
+// Class clazz= super.loadClass(name, resolve);
+// System.err.println("< WeavingURLClassLoader.loadClass() clazz=" + clazz + ", loader=" + clazz.getClassLoader());
+// return clazz;
+// }
// private interface ClassPreProcessorAdaptor extends ClassPreProcessor {
// public void addURL(URL url);