[jboss-cvs] JBossAS SVN: r74409 - projects/aop/trunk/aop/src/main/org/jboss/aop.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jun 11 14:19:42 EDT 2008
Author: stalep
Date: 2008-06-11 14:19:41 -0400 (Wed, 11 Jun 2008)
New Revision: 74409
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
Log:
[JBAOP-578]
Added syncing on AM.getBindings()
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java 2008-06-11 18:01:06 UTC (rev 74408)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java 2008-06-11 18:19:41 UTC (rev 74409)
@@ -743,40 +743,52 @@
//TODO: this method is more optimal, but needs further testing...
// updateMethodPointcutAfterRemove(removedBinding);
resetChain(methodInfos);
- for(AdviceBinding ab : manager.getBindings().values())
+ synchronized (manager.getBindings())
{
- if(BindingClassifier.isMethodExecution(ab))
- resolveMethodPointcut(ab);
+ for(AdviceBinding ab : manager.getBindings().values())
+ {
+ if(BindingClassifier.isMethodExecution(ab))
+ resolveMethodPointcut(ab);
+ }
}
}
if (BindingClassifier.isGet(removedBinding) || BindingClassifier.isSet(removedBinding))
{
resetChain(fieldReadInfos);
resetChain(fieldWriteInfos);
- for(AdviceBinding ab : manager.getBindings().values())
+ synchronized (manager.getBindings())
{
- if(BindingClassifier.isGet(ab))
- resolveFieldPointcut(fieldReadInfos, ab, false);
- if(BindingClassifier.isSet(ab))
- resolveFieldPointcut(fieldWriteInfos, ab, true);
+ for(AdviceBinding ab : manager.getBindings().values())
+ {
+ if(BindingClassifier.isGet(ab))
+ resolveFieldPointcut(fieldReadInfos, ab, false);
+ if(BindingClassifier.isSet(ab))
+ resolveFieldPointcut(fieldWriteInfos, ab, true);
+ }
}
}
if (BindingClassifier.isConstructorExecution(removedBinding))
{
resetChain(constructorInfos);
- for(AdviceBinding ab : manager.getBindings().values())
+ synchronized (manager.getBindings())
{
- if(BindingClassifier.isConstructorExecution(ab))
- resolveConstructorPointcut(ab);
+ for(AdviceBinding ab : manager.getBindings().values())
+ {
+ if(BindingClassifier.isConstructorExecution(ab))
+ resolveConstructorPointcut(ab);
+ }
}
}
if (BindingClassifier.isConstruction(removedBinding))
{
resetChain(constructionInfos);
- for(AdviceBinding ab : manager.getBindings().values())
+ synchronized (manager.getBindings())
{
- if(BindingClassifier.isConstruction(ab))
- resolveConstructionPointcut(ab);
+ for(AdviceBinding ab : manager.getBindings().values())
+ {
+ if(BindingClassifier.isConstruction(ab))
+ resolveConstructionPointcut(ab);
+ }
}
}
@@ -784,6 +796,13 @@
unlockWriteChains();
+ // Notify observer about this change
+ if (this.interceptorChainObserver != null)
+ {
+ this.interceptorChainObserver.interceptorChainsUpdated(fieldReadInterceptors, fieldWriteInterceptors,
+ constructorInterceptors, methodInfos);
+ }
+
//TODO: optimize this
try
{
@@ -1088,6 +1107,7 @@
info.setInterceptors(interceptors);
}
+ @Override
protected void rebuildInterceptors()
{
if (initialized)
More information about the jboss-cvs-commits
mailing list