[jboss-cvs] JBossAS SVN: r70775 - projects/aop/trunk/aop/src/main/org/jboss/aop.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Mar 12 11:27:56 EDT 2008
Author: flavia.rainone at jboss.com
Date: 2008-03-12 11:27:55 -0400 (Wed, 12 Mar 2008)
New Revision: 70775
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java
Log:
[JBAOP-501] Bug solved: removed advisors manipulation to outside the synchronized block.
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java 2008-03-12 15:16:16 UTC (rev 70774)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/AspectManager.java 2008-03-12 15:27:55 UTC (rev 70775)
@@ -1337,7 +1337,7 @@
/**
* Remove an interceptor pointcut with a given name
*/
- public synchronized void removeBinding(String name)
+ public void removeBinding(String name)
{
AdviceBinding binding = internalRemoveBinding(name);
if (binding != null)
@@ -1405,26 +1405,30 @@
/**
* Add an interceptor pointcut with a given name
*/
- public synchronized void addBinding(AdviceBinding binding)
+ public void addBinding(AdviceBinding binding)
{
- AdviceBinding removedBinding = internalRemoveBinding(binding.getName());
- Set<Advisor> affectedAdvisors = removedBinding == null ? null : new HashSet<Advisor>(removedBinding.getAdvisors());
- initBindingsMap();
- synchronized (bindings)
+ Set<Advisor> affectedAdvisors = null;
+ AdviceBinding removedBinding = null;
+ synchronized(this)
{
- bindings.put(binding.getName(), binding);
- }
+ removedBinding = internalRemoveBinding(binding.getName());
+ affectedAdvisors = removedBinding == null ? null : new HashSet<Advisor>(removedBinding.getAdvisors());
+ initBindingsMap();
+ synchronized (bindings)
+ {
+ bindings.put(binding.getName(), binding);
+ }
- initPointcutsMap();
- initPointcutInfosMap();
- synchronized (pointcuts)
- {
- Pointcut pointcut = binding.getPointcut();
- pointcuts.put(pointcut.getName(), pointcut);
- pointcutInfos.put(pointcut.getName(), new PointcutInfo(pointcut, binding, this.transformationStarted));
- updatePointcutStats(pointcut);
+ initPointcutsMap();
+ initPointcutInfosMap();
+ synchronized (pointcuts)
+ {
+ Pointcut pointcut = binding.getPointcut();
+ pointcuts.put(pointcut.getName(), pointcut);
+ pointcutInfos.put(pointcut.getName(), new PointcutInfo(pointcut, binding, this.transformationStarted));
+ updatePointcutStats(pointcut);
+ }
}
-
synchronized (advisors)
{
updateAdvisorsForAddedBinding(binding);
@@ -2022,7 +2026,7 @@
* Removes an AdviceBinding without notifying dynamic aop strategy.
* @param name the binding to be removed.
*/
- private AdviceBinding internalRemoveBinding(String name)
+ private synchronized AdviceBinding internalRemoveBinding(String name)
{
synchronized (bindings)
{
More information about the jboss-cvs-commits
mailing list