aboutsummaryrefslogtreecommitdiffstats
path: root/loadtime
diff options
context:
space:
mode:
Diffstat (limited to 'loadtime')
-rw-r--r--loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java b/loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
index a18400e90..223008f8f 100644
--- a/loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
+++ b/loadtime/src/main/java/org/aspectj/weaver/loadtime/ClassLoaderWeavingAdaptor.java
@@ -1008,8 +1008,16 @@ public class ClassLoaderWeavingAdaptor extends WeavingAdaptor {
* @param className a slashed classname (e.g. com/foo/Bar)
*/
public void flushGeneratedClassesFor(String className) {
- String dottedClassName = className.replace('/', '.');
- generatedClasses.remove(dottedClassName);
+ try {
+ String dottedClassName = className.replace('/', '.');
+ String dottedClassNameDollar = dottedClassName + "$"; // to pick up inner classes
+ generatedClasses.entrySet().removeIf(entry -> {
+ String generatedClassName = entry.getKey();
+ return generatedClassName.equals(dottedClassName) || generatedClassName.startsWith(dottedClassNameDollar);
+ });
+ } catch (Throwable t) {
+ new RuntimeException("Unexpected problem tidying up generated classes for " + className, t).printStackTrace();
+ }
}
private static final Object lock = new Object();