[jboss-cvs] JBossAS SVN: r112022 - in projects/aop/branches/Branch_2_2: aop/src/main/java/org and 15 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Aug 12 06:43:35 EDT 2011
Author: kabir.khan at jboss.com
Date: 2011-08-12 06:43:34 -0400 (Fri, 12 Aug 2011)
New Revision: 112022
Modified:
projects/aop/branches/Branch_2_2/
projects/aop/branches/Branch_2_2/aop/src/main/java/org/
projects/aop/branches/Branch_2_2/aop/src/main/java/org/jboss/aop/classpool/ClassLoaderRepository.java
projects/aop/branches/Branch_2_2/aop/src/main/java/org/jboss/aop/proxy/container/ContainerCache.java
projects/aop/branches/Branch_2_2/aop/src/test/java/org/
projects/aop/branches/Branch_2_2/asintegration-core/src/main/java/org/
projects/aop/branches/Branch_2_2/asintegration-jmx/src/main/java/org/
projects/aop/branches/Branch_2_2/asintegration-mc/src/main/java/org/
projects/aop/branches/Branch_2_2/asintegration-mc/src/test/java/org/
projects/aop/branches/Branch_2_2/asintegration-mc/src/test/resources/log4j.xml
projects/aop/branches/Branch_2_2/asintegration-mc/src/test/resources/org/
projects/aop/branches/Branch_2_2/aspects/src/main/java/org/
projects/aop/branches/Branch_2_2/aspects/src/test/java/org/
projects/aop/branches/Branch_2_2/aspects/src/test/java/test/
projects/aop/branches/Branch_2_2/aspects/src/test/resources/aop-deployer_1_1.xsd
projects/aop/branches/Branch_2_2/aspects/src/test/resources/org/
projects/aop/branches/Branch_2_2/aspects/src/test/resources/test/
Log:
[JBAOP-807] Clean up containers on undeploy
Property changes on: projects/aop/branches/Branch_2_2
___________________________________________________________________
Added: svn:mergeinfo
+ /projects/aop/branches/JBoss_AOP_2_1_6_GA_CP:112005
Property changes on: projects/aop/branches/Branch_2_2/aop/src/main/java/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Modified: projects/aop/branches/Branch_2_2/aop/src/main/java/org/jboss/aop/classpool/ClassLoaderRepository.java
===================================================================
--- projects/aop/branches/Branch_2_2/aop/src/main/java/org/jboss/aop/classpool/ClassLoaderRepository.java 2011-08-12 10:29:18 UTC (rev 112021)
+++ projects/aop/branches/Branch_2_2/aop/src/main/java/org/jboss/aop/classpool/ClassLoaderRepository.java 2011-08-12 10:43:34 UTC (rev 112022)
@@ -33,6 +33,7 @@
import org.jboss.aop.AspectManager;
import org.jboss.aop.advice.SecurityActions;
import org.jboss.aop.instrument.Instrumentor;
+import org.jboss.aop.proxy.container.ContainerCache;
import org.jboss.classpool.spi.ClassPoolRepositoryCallback;
import org.jboss.logging.Logger;
@@ -137,6 +138,7 @@
}
}
}
+ ContainerCache.cleanup(cl);
}
}
Modified: projects/aop/branches/Branch_2_2/aop/src/main/java/org/jboss/aop/proxy/container/ContainerCache.java
===================================================================
--- projects/aop/branches/Branch_2_2/aop/src/main/java/org/jboss/aop/proxy/container/ContainerCache.java 2011-08-12 10:29:18 UTC (rev 112021)
+++ projects/aop/branches/Branch_2_2/aop/src/main/java/org/jboss/aop/proxy/container/ContainerCache.java 2011-08-12 10:43:34 UTC (rev 112022)
@@ -31,6 +31,7 @@
import org.jboss.aop.introduction.InterfaceIntroduction;
import org.jboss.aop.metadata.SimpleMetaData;
import org.jboss.metadata.spi.MetaData;
+import org.jboss.util.collection.WeakSet;
/**
*
@@ -42,6 +43,7 @@
private static volatile int counter;
public static final Object mapLock = new Object();
private static WeakHashMap<Class<?>, HashMap<String, ClassProxyContainer>> containerCache = new WeakHashMap<Class<?>, HashMap<String, ClassProxyContainer>>();
+ private static WeakHashMap<ClassLoader, WeakSet> classesByLoader = new WeakHashMap<ClassLoader, WeakSet>();
private AspectManager manager;
private ContainerProxyCacheKey key;
@@ -96,6 +98,20 @@
return factory;
}
+ public static void cleanup(ClassLoader cl)
+ {
+ synchronized (mapLock)
+ {
+ WeakSet classes = classesByLoader.remove(cl);
+ if (classes != null) {
+ for (Object o : classes)
+ {
+ containerCache.remove(o);
+ }
+ }
+ }
+ }
+
public ContainerProxyCacheKey getKey()
{
return key;
@@ -124,10 +140,10 @@
}
return classAdvisor.hasAspects();
}
-
+
public boolean hasIntroductionsForClassAdvisor()
{
- return classAdvisor.getInterfaceIntroductions().size() > 0;
+ return classAdvisor.getInterfaceIntroductions().size() > 0;
}
public boolean requiresInstanceAdvisor()
@@ -175,7 +191,7 @@
}
return null;
}
-
+
private ClassProxyContainer getCachedContainer(AspectManager manager)
{
HashMap<String, ClassProxyContainer> managerContainers = containerCache.get(key.getClazz());
@@ -214,6 +230,17 @@
containerCache.put(key.getClazz(), managerContainers);
}
managerContainers.put(key.getManagerFQN(), container);
+ ClassLoader cl = key.getClazz().getClassLoader();
+ if (cl != null)
+ {
+ WeakSet classes = classesByLoader.get(cl);
+ if (classes == null)
+ {
+ classes = new WeakSet();
+ classesByLoader.put(cl, classes);
+ }
+ classes.add(key.getClazz());
+ }
}
private InterfaceIntroduction getInterfaceIntroduction()
@@ -292,36 +319,36 @@
instanceContainer = InstanceProxyContainer.createInstanceProxyContainer(classAdvisor, introduction, metaData);
}
}
-
+
public boolean hasMoreAdvicesOrIntroductionsForInstance()
{
if (classAdvisor == null)
{
throw new IllegalStateException("initialise() must be called first");
}
-
+
if (instanceContainer == null)
{
return false;
}
-
+
if (!classAdvisor.hasSameMethodAspectLength(instanceContainer))
{
return true;
}
-
+
if (!classAdvisor.hasSameConstructorAspectLength(instanceContainer))
{
return true;
}
-
+
if (instanceContainer.getInterfaceIntroductions().size() > classAdvisor.getInterfaceIntroductions().size())
{
return true;
}
return false;
}
-
+
}
Property changes on: projects/aop/branches/Branch_2_2/aop/src/test/java/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/asintegration-core/src/main/java/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/asintegration-jmx/src/main/java/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/asintegration-mc/src/main/java/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/asintegration-mc/src/test/java/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/asintegration-mc/src/test/resources/log4j.xml
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/asintegration-mc/src/test/resources/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/aspects/src/main/java/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/aspects/src/test/java/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/aspects/src/test/java/test
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/aspects/src/test/resources/aop-deployer_1_1.xsd
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/aspects/src/test/resources/org
___________________________________________________________________
Deleted: svn:mergeinfo
-
Property changes on: projects/aop/branches/Branch_2_2/aspects/src/test/resources/test
___________________________________________________________________
Deleted: svn:mergeinfo
-
More information about the jboss-cvs-commits
mailing list