[Jboss-cvs] JBossAS SVN: r56933 - in trunk/aop/src: main/org/jboss/aop main/org/jboss/aop/instrument resources/test/extender test/org/jboss/test/aop/extender
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Sep 18 08:55:39 EDT 2006
Author: kabir.khan at jboss.com
Date: 2006-09-18 08:55:25 -0400 (Mon, 18 Sep 2006)
New Revision: 56933
Modified:
trunk/aop/src/main/org/jboss/aop/CallerConstructorInfo.java
trunk/aop/src/main/org/jboss/aop/CallerMethodInfo.java
trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
trunk/aop/src/main/org/jboss/aop/ConByConInfo.java
trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java
trunk/aop/src/main/org/jboss/aop/ConstructionInfo.java
trunk/aop/src/main/org/jboss/aop/ConstructorInfo.java
trunk/aop/src/main/org/jboss/aop/FieldInfo.java
trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java
trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java
trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java
trunk/aop/src/main/org/jboss/aop/MethodInfo.java
trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorMethodExecutionTransformer.java
trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
trunk/aop/src/resources/test/extender/jboss-aop.xml
trunk/aop/src/test/org/jboss/test/aop/extender/ChildBase.java
trunk/aop/src/test/org/jboss/test/aop/extender/ExtenderTestCase.java
trunk/aop/src/test/org/jboss/test/aop/extender/InfantBase.java
trunk/aop/src/test/org/jboss/test/aop/extender/SuperCallAspect.java
Log:
[JBAOP-285] With generated advisors make calls to overridden methods in superclass get intercepted
Modified: trunk/aop/src/main/org/jboss/aop/CallerConstructorInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/CallerConstructorInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/CallerConstructorInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -41,9 +41,9 @@
private final long calledConHash;
private final Class calledClass;
- public CallerConstructorInfo(Advisor advisor, Class calledClass, Constructor called, long calledConHash, Method wrappingMethod, Interceptor[] in)
+ public CallerConstructorInfo(Advisor advisor, Class calledClass, Constructor called, long calledConHash, Method wrappingMethod, Interceptor[] in, Class clazz)
{
- super(advisor);
+ super(advisor, clazz);
this.calledClass = calledClass;
super.setInterceptors(in);
this.constructor = called;
Modified: trunk/aop/src/main/org/jboss/aop/CallerMethodInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/CallerMethodInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/CallerMethodInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -39,9 +39,9 @@
private final Method method;
private final long calledMethodHash;
- public CallerMethodInfo(Advisor advisor, Class calledClass, Method m, long calledMethodHash, Interceptor[] in)
+ public CallerMethodInfo(Advisor advisor, Class calledClass, Method m, long calledMethodHash, Interceptor[] in, Class clazz)
{
- super(advisor);
+ super(advisor, clazz);
this.calledClass = calledClass;
super.setInterceptors(in);
this.method = m;
Modified: trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -24,7 +24,6 @@
import gnu.trove.TLongObjectHashMap;
import java.lang.ref.WeakReference;
-import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
Modified: trunk/aop/src/main/org/jboss/aop/ConByConInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/ConByConInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/ConByConInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -40,7 +40,7 @@
public ConByConInfo(Advisor advisor, Class calledClass, int callingIndex, Constructor called, long calledConHash, Method wrappingMethod, Interceptor[] in)
{
- super(advisor, calledClass, called, calledConHash, wrappingMethod, in);
+ super(advisor, calledClass, called, calledConHash, wrappingMethod, in, advisor.getClazz());
this.callingIndex = callingIndex;
this.calling = advisor.constructors[callingIndex];
}
Modified: trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -48,7 +48,7 @@
public ConByMethodInfo(Advisor advisor, Class calledClass, long callingMethodHash, Constructor c, long calledConHash, Method wrappingMethod, Interceptor[] in)
{
// FIXME ConByMethodJoinPont constructor
- super(advisor, calledClass, c, calledConHash, wrappingMethod, in);
+ super(advisor, calledClass, c, calledConHash, wrappingMethod, in, advisor.getClazz());
try
{
this.callingMethodHash = callingMethodHash;
Modified: trunk/aop/src/main/org/jboss/aop/ConstructionInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/ConstructionInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/ConstructionInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -45,7 +45,7 @@
public ConstructionInfo(Class clazz, int index, long constructorHash, Advisor advisor)
{
- super(advisor);
+ super(advisor, clazz);
try
{
this.index = index;
Modified: trunk/aop/src/main/org/jboss/aop/ConstructorInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/ConstructorInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/ConstructorInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -46,7 +46,7 @@
public ConstructorInfo(Class clazz, int index, long wrapperHash, long constructorHash, Advisor advisor)
{
- super(advisor);
+ super(advisor, clazz);
try
{
this.index = index;
Modified: trunk/aop/src/main/org/jboss/aop/FieldInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/FieldInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/FieldInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -53,7 +53,7 @@
public FieldInfo(Class clazz, int index, String fieldName, long wrapperHash, Advisor advisor, boolean read)
{
- super(advisor);
+ super(advisor, clazz);
try
{
Modified: trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/GeneratedClassAdvisor.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -43,6 +43,7 @@
import org.jboss.aop.instrument.MethodJoinPointGenerator;
import org.jboss.aop.joinpoint.Joinpoint;
import org.jboss.aop.joinpoint.MethodJoinpoint;
+import org.jboss.aop.pointcut.PointcutMethodMatch;
import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
@@ -68,6 +69,8 @@
ArrayList constructionInfos = new ArrayList();
ArrayList fieldReadInfos = new ArrayList();
ArrayList fieldWriteInfos = new ArrayList();
+ /** Super class methods that have been overrridden */
+ ArrayList overriddenMethods = new ArrayList();
ConcurrentReaderHashMap constructorJoinPoinGenerators = new ConcurrentReaderHashMap();
ConcurrentReaderHashMap constructionJoinPoinGenerators = new ConcurrentReaderHashMap();
@@ -79,6 +82,8 @@
ConcurrentReaderHashMap conByConJoinPoinGenerators = new ConcurrentReaderHashMap();
ConcurrentReaderHashMap conByMethodJoinPoinGenerators = new ConcurrentReaderHashMap();
+ boolean initialisedSuperClasses;
+
protected GeneratedClassAdvisor(String classname)
{
//Generated advisors will not pass in an aspectmanager
@@ -102,12 +107,48 @@
this.perClassJoinpointAspectDefinitions = ((GeneratedClassAdvisor)existing).perClassJoinpointAspectDefinitions;
}
}
-
+
manager.initialiseClassAdvisor(clazz, this);
}
+
+ protected void handleOverriddenMethods(AdviceBinding binding)
+ {
+ if (overriddenMethods != null && overriddenMethods.size() > 0)
+ {
+ for (Iterator it = overriddenMethods.iterator() ; it.hasNext() ; )
+ {
+ MethodInfo info = (MethodInfo)it.next();
+ Method method = info.getAdvisedMethod();
+ PointcutMethodMatch match = binding.getPointcut().matchesExecution(this, method);
+
+ if (match != null && match.isMatch())
+ {
+ adviceBindings.add(binding);
+ if (AspectManager.verbose)
+ {
+ System.err.println("method matched binding " + binding.getPointcut().getExpr() + " " + method.toString());
+ }
+ binding.addAdvisor(this);
+ pointcutResolved(info, binding, new MethodJoinpoint(method));
+ }
+ }
+ }
+ }
+ protected void resolveMethodPointcut(MethodInterceptors newMethodInterceptors, AdviceBinding binding)
+ {
+ super.resolveMethodPointcut(newMethodInterceptors, binding);
+ handleOverriddenMethods(binding);
+ }
+
+
protected void addMethodInfo(MethodInfo mi)
{
+ MethodInfo old = methodInfos.getMethodInfo(mi.getHash());
+ if (old != null)
+ {
+ overriddenMethods.add(old);
+ }
methodInfos.put(mi.getHash(), mi);
//If we do dynamic invokes the method will need to be accessible via reflection if private/protected
SecurityActions.setAccessible(mi.getAdvisedMethod());
@@ -266,6 +307,20 @@
finalizeChainAndRebindJoinPoint(info, generator);
}
methodInterceptors = newMethodInfos;
+
+ //Handle the overridden methods
+ if (overriddenMethods != null && overriddenMethods.size() > 0)
+ {
+ for (Iterator it = overriddenMethods.iterator() ; it.hasNext() ; )
+ {
+ MethodInfo info = (MethodInfo)it.next();
+
+ MethodJoinPointGenerator generator = getJoinPointGenerator(info);
+ finalizeChainAndRebindJoinPoint(info, generator);
+ }
+ }
+
+
}
protected void finalizeFieldReadChain(ArrayList newFieldInfos)
Modified: trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/JoinPointInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -23,6 +23,7 @@
import java.lang.ref.WeakReference;
import java.util.ArrayList;
+import java.util.Arrays;
import org.jboss.aop.advice.Interceptor;
import org.jboss.aop.joinpoint.Joinpoint;
@@ -36,15 +37,18 @@
private WeakReference advisor;
protected volatile Joinpoint joinpoint;
+
+ protected WeakReference clazz;
protected JoinPointInfo()
{
-
+ this.clazz = new WeakReference(null);
}
- protected JoinPointInfo(Advisor advisor)
+ protected JoinPointInfo(Advisor advisor, Class clazz)
{
setAdvisor(advisor);
+ this.clazz = new WeakReference(clazz);
}
/*
@@ -76,6 +80,11 @@
return (Advisor)advisor.get();
}
+ public Class getClazz()
+ {
+ return (Class)clazz.get();
+ }
+
public void setAdvisor(Advisor advisor)
{
this.advisor = new WeakReference(advisor);
Modified: trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -42,7 +42,7 @@
public MethodByConInfo(Advisor advisor, Class calledClass, int callingIndex, Method m, long calledMethodHash, Interceptor[] in)
{
// FIXME MethodByConInfo constructor
- super(advisor, calledClass, m, calledMethodHash, in);
+ super(advisor, calledClass, m, calledMethodHash, in, advisor.getClazz());
this.callingIndex = callingIndex;
calling = advisor.constructors[callingIndex];
}
Modified: trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -40,7 +40,7 @@
public MethodByMethodInfo(Advisor advisor, Class calledClass, Method m, long callingMethodHash, long calledMethodHash, Interceptor[] in)
{
- super(advisor, calledClass, m, calledMethodHash, in);
+ super(advisor, calledClass, m, calledMethodHash, in, advisor.getClazz());
try
{
this.callingMethodHash = callingMethodHash;
Modified: trunk/aop/src/main/org/jboss/aop/MethodInfo.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/MethodInfo.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/MethodInfo.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -26,6 +26,7 @@
import org.jboss.aop.util.MethodHashing;
import java.lang.reflect.Method;
+import java.util.Arrays;
/**
* This class is here to eliminate a hash lookup in invokeMethod
@@ -38,16 +39,15 @@
public MethodInfo()
{
-
}
public MethodInfo(Class clazz, long hash, long unadvisedHash, Advisor advisor)
{
- super(advisor);
+ super(advisor, clazz);
try
{
- this.hash = hash;
+ this.hash = hash;
advisedMethod = MethodHashing.findMethodByHash(clazz, hash);
unadvisedMethod = MethodHashing.findMethodByHash(clazz, unadvisedHash);
this.setAdvisor(advisor);
Modified: trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -73,12 +73,14 @@
private static final String INITIALISE_METHODS = "initialiseMethods";
public static final String GET_CLASS_ADVISOR = "_getClassAdvisor";
- private static final String ADVISED_CLASS = "this.getClass().getDeclaringClass()";
+ private static final String DECLARING_CLASS = "this.getClass().getDeclaringClass()";
+ private static final String CONTAINER_CLASS = "this.getClass().getDeclaringClass()";
private static final CtClass[] EMPTY_EXCEPTIONS = new CtClass[0];
private static final CtClass[] EMPTY_SIG = new CtClass[0];
+ CtClass clazz;
CtClass genadvisor;
CtClass genInstanceAdvisor;
@@ -107,6 +109,7 @@
{
try
{
+ this.clazz = clazz;
super.transform(clazz, advisor);
if (genadvisor != null)
@@ -381,14 +384,14 @@
{
String initBody =
"{" +
- " " + DOMAIN + "= new org.jboss.aop.GeneratedAdvisorDomain($1, " + ADVISED_CLASS + ", false); " +
+ " " + DOMAIN + "= new org.jboss.aop.GeneratedAdvisorDomain($1, " + DECLARING_CLASS + ", false); " +
" ((org.jboss.aop.Domain)" + DOMAIN + ").setInheritsBindings(true); " +
" " + INITIALISE_METHODS + "();" +
" " + INITIALISE_CONSTRUCTORS + "();" +
" " + INITIALISE_CONSTRUCTIONS + "();" +
" " + INITIALISE_FIELD_READS + "();" +
" " + INITIALISE_FIELD_WRITES + "();" +
- " super.initialise(" + ADVISED_CLASS + ", " + DOMAIN + ");" +
+ " super.initialise(" + DECLARING_CLASS + ", " + DOMAIN + ");" +
" " + INITIALISE_CALLERS + "();" +
"}";
@@ -703,7 +706,7 @@
{
String code =
infoName + " = new " + MethodExecutionTransformer.METHOD_INFO_CLASS_NAME + "(" +
- ADVISED_CLASS + ", " +
+ "java.lang.Class.forName(\"" + clazz.getName() + "\")," +
hash + "L, " +
unadvisedHash + "L, this);" +
GeneratedClassAdvisor.ADD_METHOD_INFO + "(" + infoName + ");";
@@ -715,7 +718,7 @@
{
String code =
infoName + " = new " + FieldAccessTransformer.FIELD_INFO_CLASS_NAME + "(" +
- ADVISED_CLASS + ", " +
+ "java.lang.Class.forName(\"" + clazz.getName() + "\")," +
index + ", " +
"\"" + fieldName + "\", " +
wrapperHash + "L, this, true);" +
@@ -728,7 +731,7 @@
{
String code =
infoName + " = new " + FieldAccessTransformer.FIELD_INFO_CLASS_NAME + "(" +
- ADVISED_CLASS + ", " +
+ "java.lang.Class.forName(\"" + clazz.getName() + "\")," +
index + ", " +
"\"" + fieldName + "\", " +
wrapperHash + "L, this, false);" +
@@ -741,7 +744,7 @@
{
String code =
infoName + " = new " + ConstructorExecutionTransformer.CONSTRUCTOR_INFO_CLASS_NAME + "(" +
- ADVISED_CLASS + ", " +
+ "java.lang.Class.forName(\"" + clazz.getName() + "\")," +
index + ", " +
wrapperHash + "L, " +
constructorHash + "L, this);" +
@@ -754,7 +757,7 @@
{
String code =
infoName + " = new " + ConstructionTransformer.CONSTRUCTION_INFO_CLASS_NAME + "(" +
- ADVISED_CLASS + ", " +
+ "java.lang.Class.forName(\"" + clazz.getName() + "\")," +
index + ", " +
constructorHash + "L, this);" +
GeneratedClassAdvisor.ADD_CONSTRUCTION_INFO + "(" + infoName + ");";
Modified: trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorMethodExecutionTransformer.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorMethodExecutionTransformer.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorMethodExecutionTransformer.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -266,7 +266,7 @@
CtClass[] params = addTargetToParamsForNonStaticMethod(trans.getClazz(), trans.getWMethod());
- String code = createAdvisorMethodBody(trans);
+ String code = createAdvisorMethodBody(trans, genadvisor/*kill*/);
try
{
CtMethod advisorMethod = CtNewMethod.make(
@@ -287,7 +287,7 @@
}
}
- private String createAdvisorMethodBody(MethodTransformation trans)throws NotFoundException
+ private String createAdvisorMethodBody(MethodTransformation trans, CtClass ga/*kill*/)throws NotFoundException
{
if (Modifier.isStatic(trans.getWMethod().getModifiers()))
{
@@ -295,7 +295,7 @@
}
else
{
- return createNonStaticAdvisorMethodBody(trans);
+ return createNonStaticAdvisorMethodBody(trans, ga);
}
}
@@ -322,7 +322,7 @@
return code;
}
- private String createNonStaticAdvisorMethodBody(MethodTransformation trans)throws NotFoundException
+ private String createNonStaticAdvisorMethodBody(MethodTransformation trans, CtClass ga/*kill*/)throws NotFoundException
{
String infoName = getJoinPointFieldName(trans);
String generatorName = getJoinPointGeneratorFieldName(trans);
Modified: trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java
===================================================================
--- trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/main/org/jboss/aop/instrument/JoinPointGenerator.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -108,7 +108,7 @@
initialiseJoinPointNames();
- findAdvisedField(advisorClass);
+ findAdvisedField(advisorClass, info);
}
public void rebindJoinpoint(JoinPointInfo newInfo)
@@ -303,8 +303,17 @@
}
}
- private void findAdvisedField(Class advisorSuperClazz)
+ private void findAdvisedField(Class advisorSuperClazz, JoinPointInfo info)
{
+ if (info.getClazz() == null)
+ {
+ return;
+ }
+
+ while (advisorSuperClazz != null && advisorSuperClazz.getDeclaringClass() != info.getClazz())
+ {
+ advisorSuperClazz = advisorSuperClazz.getSuperclass();
+ }
try
{
try
@@ -330,7 +339,7 @@
//GeneratedClassAdvisor is the base class for all generated advisors
if (!advisorSuperClazz.getName().equals(GENERATED_CLASS_ADVISOR))
{
- findAdvisedField(advisorSuperClazz.getSuperclass());
+ findAdvisedField(advisorSuperClazz.getSuperclass(), info);
}
}
}
Modified: trunk/aop/src/resources/test/extender/jboss-aop.xml
===================================================================
--- trunk/aop/src/resources/test/extender/jboss-aop.xml 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/resources/test/extender/jboss-aop.xml 2006-09-18 12:55:25 UTC (rev 56933)
@@ -28,4 +28,7 @@
<bind pointcut="execution(* $instanceof{org.jboss.test.aop.extender.Base}->superCall())">
<advice aspect="org.jboss.test.aop.extender.SuperCallAspect" name="invoke"/>
</bind>
+ <bind pointcut="execution(* org.jboss.test.aop.extender.Base->superCall())">
+ <advice aspect="org.jboss.test.aop.extender.SuperCallAspect" name="invoke"/>
+ </bind>
</aop>
Modified: trunk/aop/src/test/org/jboss/test/aop/extender/ChildBase.java
===================================================================
--- trunk/aop/src/test/org/jboss/test/aop/extender/ChildBase.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/test/org/jboss/test/aop/extender/ChildBase.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -37,10 +37,4 @@
{
return getBase()+1;
}
-
-
- public void superCall()
- {
- super.superCall();
- }
}
Modified: trunk/aop/src/test/org/jboss/test/aop/extender/ExtenderTestCase.java
===================================================================
--- trunk/aop/src/test/org/jboss/test/aop/extender/ExtenderTestCase.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/test/org/jboss/test/aop/extender/ExtenderTestCase.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -21,10 +21,6 @@
*/
package org.jboss.test.aop.extender;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
import org.jboss.test.aop.AOPTestWithSetup;
/**
@@ -78,8 +74,13 @@
public void testSuperCall() throws Exception
{
SuperCallAspect.interceptions = 0;
- InfantBase infant = new InfantBase();
- infant.superCall();
- assertEquals(4, SuperCallAspect.interceptions);
+ SubBase sub = new SubBase();
+ sub.superCall();
+ assertEquals(3, SuperCallAspect.interceptions);
+ assertEquals(3, SuperCallAspect.methodClasses.size());
+
+ assertEquals(SubBase.class, SuperCallAspect.methodClasses.get(0));
+ assertEquals(Base.class, SuperCallAspect.methodClasses.get(1));
+ assertEquals(Base.class, SuperCallAspect.methodClasses.get(2));
}
}
Modified: trunk/aop/src/test/org/jboss/test/aop/extender/InfantBase.java
===================================================================
--- trunk/aop/src/test/org/jboss/test/aop/extender/InfantBase.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/test/org/jboss/test/aop/extender/InfantBase.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -32,10 +32,5 @@
public void infantize(int i)
{
setBase(i-1);
- }
-
- public void superCall()
- {
- super.superCall();
- }
+ }
}
Modified: trunk/aop/src/test/org/jboss/test/aop/extender/SuperCallAspect.java
===================================================================
--- trunk/aop/src/test/org/jboss/test/aop/extender/SuperCallAspect.java 2006-09-18 06:08:11 UTC (rev 56932)
+++ trunk/aop/src/test/org/jboss/test/aop/extender/SuperCallAspect.java 2006-09-18 12:55:25 UTC (rev 56933)
@@ -21,7 +21,11 @@
*/
package org.jboss.test.aop.extender;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+
import org.jboss.aop.joinpoint.Invocation;
+import org.jboss.aop.joinpoint.MethodInvocation;
/**
*
@@ -31,10 +35,18 @@
public class SuperCallAspect
{
public static int interceptions = 0;
+ public static ArrayList methodClasses = new ArrayList();
public Object invoke(Invocation invocation) throws Throwable
{
interceptions++;
+ if (invocation instanceof MethodInvocation)
+ {
+ Method method = ((MethodInvocation)invocation).getActualMethod();
+ System.out.println("invoking " + method);
+ Class clazz = method.getDeclaringClass();
+ methodClasses.add(clazz);
+ }
return invocation.invokeNext();
}
}
More information about the jboss-cvs-commits
mailing list