[jboss-cvs] JBossAS SVN: r73566 - projects/aop/trunk/aop/src/main/org/jboss/aop.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed May 21 15:21:08 EDT 2008
Author: kabir.khan at jboss.com
Date: 2008-05-21 15:21:08 -0400 (Wed, 21 May 2008)
New Revision: 73566
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java
Log:
[JBAOP-575] Make sure that advisors only get handled once if several levels contain a reference to it, otherwise we get the binding added >1 times
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java 2008-05-21 19:19:25 UTC (rev 73565)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java 2008-05-21 19:21:08 UTC (rev 73566)
@@ -1438,7 +1438,8 @@
}
synchronized (advisors)
{
- updateAdvisorsForAddedBinding(binding);
+ Set<Advisor> handledAdvisors = new HashSet<Advisor>();
+ updateAdvisorsForAddedBinding(binding, handledAdvisors);
if (affectedAdvisors != null && affectedAdvisors.size() > 0)
{
@@ -1453,7 +1454,7 @@
}
- public void updateAdvisorsForAddedBinding(AdviceBinding binding)
+ protected void updateAdvisorsForAddedBinding(AdviceBinding binding, Set<Advisor> handledAdvisors)
{
synchronized (advisors)
{
@@ -1465,7 +1466,9 @@
{
Advisor advisor = getAdvisorFromAdvisorsKeySetIterator(it);
if (advisor == null) continue;
-
+ if (handledAdvisors.contains(advisor)) continue;
+ handledAdvisors.add(advisor);
+
if (binding.getPointcut().softMatch(advisor))
{
if (AspectManager.verbose && logger.isDebugEnabled())
@@ -1493,7 +1496,7 @@
//When interceptors are installed as beans in the microcontainer, creating the interceptor instances
for (Domain domain : domains)
{
- domain.updateAdvisorsForAddedBinding(binding);
+ domain.updateAdvisorsForAddedBinding(binding, handledAdvisors);
}
}
newSubscribers = copySubDomainsFromQueue(false);
More information about the jboss-cvs-commits
mailing list