[jboss-cvs] JBossAS SVN: r76729 - projects/aop/trunk/aop/src/main/org/jboss/aop.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Aug 6 17:45:47 EDT 2008
Author: flavia.rainone at jboss.com
Date: 2008-08-06 17:45:47 -0400 (Wed, 06 Aug 2008)
New Revision: 76729
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java
projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
Log:
[JBAOP-620] Now, the deprecated collections are being updated correctly. They are updated and initialized only
if AspectManager.mantainMethodInterceptors is true.
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java 2008-08-06 21:21:47 UTC (rev 76728)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java 2008-08-06 21:45:47 UTC (rev 76729)
@@ -68,7 +68,6 @@
import org.jboss.aop.joinpoint.Joinpoint;
import org.jboss.aop.joinpoint.MethodInvocation;
import org.jboss.aop.metadata.ClassMetaDataBinding;
-import org.jboss.aop.metadata.ClassMetaDataLoader;
import org.jboss.aop.metadata.ConstructorMetaData;
import org.jboss.aop.metadata.FieldMetaData;
import org.jboss.aop.metadata.MethodMetaData;
@@ -1352,6 +1351,10 @@
binding.addAdvisor(this);
MethodMatchInfo info = methodInfos.getMatchInfo(keys[i]);
info.addMatchedBinding(binding, match);
+ if (AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ methodInterceptors.put(keys[i], info);
+ }
}
}
}
@@ -1373,6 +1376,10 @@
MethodMatchInfo info = methodInfos.getMatchInfo(keys[i]);
info.removeMatchedBinding(binding, match);
info.getInfo().clear();
+ if (AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ methodInterceptors.put(keys[i], info);
+ }
}
}
}
@@ -1401,10 +1408,16 @@
pointcutResolved(fieldInfos[i], ab, new FieldJoinpoint(field));
}
}
- }
+ this.updateFieldPointcutAfterRemove(fieldInfos[i], i, write);
+ }
}
}
+ protected void updateFieldPointcutAfterRemove(FieldInfo fieldInfo, int i,
+ boolean write)
+ {
+ }
+
protected void updateConstructorPointcutAfterRemove(AdviceBinding binding)
{
ClassifiedBindingCollection bindingCol = manager.getBindingCollection();
@@ -1425,6 +1438,10 @@
pointcutResolved(constructorInfos[i], ab, new ConstructorJoinpoint(constructor));
}
}
+ if (AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ this.constructorInterceptors[i] = constructorInfos[i].getInterceptors();
+ }
}
}
}
@@ -1451,6 +1468,10 @@
pointcutResolved(constructionInfos[i], ab, new ConstructorJoinpoint(constructor));
}
}
+ if (AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ this.constructionInterceptors[i] = constructionInfos[i].getInterceptors();
+ }
}
}
}
@@ -1825,6 +1846,10 @@
adviceBindings.add(binding);
binding.addAdvisor(this);
pointcutResolved(constructorInfos[i], binding, new ConstructorJoinpoint(constructor));
+ if (AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ constructorInterceptors[i] = constructorInfos[i].getInterceptors();
+ }
}
}
}
@@ -1843,6 +1868,10 @@
adviceBindings.add(binding);
binding.addAdvisor(this);
pointcutResolved(info, binding, new ConstructorJoinpoint(constructor));
+ if (AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ this.constructionInterceptors[i] = constructionInfos[i].getInterceptors();
+ }
}
}
}
@@ -1851,6 +1880,10 @@
/** @deprecated We should just be using xxxxInfos */
protected void populateInterceptorsFromInfos()
{
+ if (!AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ return;
+ }
if (constructorInfos == null)
{
constructorInterceptors = new Interceptor[0][];
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java 2008-08-06 21:21:47 UTC (rev 76728)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java 2008-08-06 21:45:47 UTC (rev 76729)
@@ -52,7 +52,6 @@
import org.jboss.aop.joinpoint.ConstructorCalledByMethodInvocation;
import org.jboss.aop.joinpoint.ConstructorCalledByMethodJoinpoint;
import org.jboss.aop.joinpoint.ConstructorInvocation;
-import org.jboss.aop.joinpoint.ConstructorJoinpoint;
import org.jboss.aop.joinpoint.FieldJoinpoint;
import org.jboss.aop.joinpoint.FieldReadInvocation;
import org.jboss.aop.joinpoint.FieldWriteInvocation;
@@ -429,7 +428,7 @@
doesHaveAspects = adviceBindings.size() > 0;
}
- protected void resolveFieldPointcut(FieldInfo[] newFieldInfos, AdviceBinding binding, boolean write)
+ protected void resolveFieldPointcut(FieldInfo[] newFieldInfos, Interceptor[][] interceptors, AdviceBinding binding, boolean write)
{
for (int i = 0; i < newFieldInfos.length; i++)
{
@@ -442,6 +441,10 @@
adviceBindings.add(binding);
binding.addAdvisor(this);
pointcutResolved(newFieldInfos[i], binding, new FieldJoinpoint(field));
+ if (AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ interceptors[i] = newFieldInfos[i].getInterceptors();
+ }
}
}
}
@@ -623,7 +626,7 @@
logger.debug("iterate binding " + binding.getName() + " " +
binding.getPointcut().getExpr());
}
- resolveFieldPointcut(fieldReadInfos, binding, false);
+ resolveFieldPointcut(fieldReadInfos, fieldReadInterceptors, binding, false);
}
for (AdviceBinding binding: bindingCol.getFieldWriteBindings())
{
@@ -632,7 +635,7 @@
logger.debug("iterate binding " + binding.getName() + " " +
binding.getPointcut().getExpr());
}
- resolveFieldPointcut(fieldWriteInfos, binding, true);
+ resolveFieldPointcut(fieldWriteInfos, fieldWriteInterceptors, binding, true);
}
for (AdviceBinding binding: bindingCol.getConstructionBindings())
{
@@ -749,11 +752,11 @@
}
if (BindingClassifier.isGet(binding))
{
- resolveFieldPointcut(fieldReadInfos, binding, false);
+ resolveFieldPointcut(fieldReadInfos, fieldReadInterceptors, binding, false);
}
if (BindingClassifier.isSet(binding))
{
- resolveFieldPointcut(fieldWriteInfos, binding, true);
+ resolveFieldPointcut(fieldWriteInfos, fieldWriteInterceptors, binding, true);
}
if (BindingClassifier.isConstructorExecution(binding))
{
@@ -826,6 +829,22 @@
}
+ @Override
+ protected void updateFieldPointcutAfterRemove(FieldInfo fieldInfo, int i, boolean write)
+ {
+ if (AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ if (write)
+ {
+ this.fieldWriteInterceptors[i] = fieldInfo.getInterceptors();
+ }
+ else
+ {
+ this.fieldReadInterceptors[i] = fieldInfo.getInterceptors();
+ }
+ }
+ }
+
private MethodByConInfo initializeConstructorCallerInterceptorsMap(Class<?> callingClass, int callingIndex, String calledClass, long calledMethodHash, Method calledMethod) throws Exception
{
HashMap<String, TLongObjectHashMap> calledClassesMap = methodCalledByConInterceptors[callingIndex];
@@ -2033,6 +2052,10 @@
@Override
protected void populateInterceptorsFromInfos()
{
+ if (!AspectManager.maintainAdvisorMethodInterceptors)
+ {
+ return;
+ }
super.populateInterceptorsFromInfos();
fieldReadInterceptors = new Interceptor[fieldReadInfos.length][];
for (int i = 0 ; i < fieldReadInfos.length ; i++)
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java 2008-08-06 21:21:47 UTC (rev 76728)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java 2008-08-06 21:45:47 UTC (rev 76729)
@@ -310,13 +310,13 @@
}
@Override
- protected void resolveFieldPointcut(FieldInfo[] newFieldInfos, AdviceBinding binding, boolean write)
+ protected void resolveFieldPointcut(FieldInfo[] newFieldInfos, Interceptor[][] fieldInterceptors, AdviceBinding binding, boolean write)
{
GeneratedClassAdvisor classAdvisor = getClassAdvisorIfInstanceAdvisorWithNoOwnDataWithEffectOnAdvices();
if (classAdvisor == null)
{
//We are either the class advisor or an instanceadvisor with own data so we need to do all the work
- super.resolveFieldPointcut(newFieldInfos, binding, write);
+ super.resolveFieldPointcut(newFieldInfos, fieldInterceptors, binding, write);
}
}
More information about the jboss-cvs-commits
mailing list