[jboss-cvs] JBossAS SVN: r64167 - in projects/aop/trunk/aop/src/main/org/jboss/aop: instrument and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jul 20 23:54:33 EDT 2007


Author: flavia.rainone at jboss.com
Date: 2007-07-20 23:54:32 -0400 (Fri, 20 Jul 2007)
New Revision: 64167

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/ConByConInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/CallerInfoAdder.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ClassicCallerInfoAdder.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorCallerInfoAdder.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorCallerTransformer.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedCallerTransformer.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/OptimizedCallerTransformer.java
Log:
[JBAOP-441] Bug solved.

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ClassAdvisor.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -641,7 +641,7 @@
       constructionInfos = (ConstructionInfo[]) newConstructionInfos.toArray(new ConstructionInfo[newConstructionInfos.size()]);
    }
    
-   private MethodByConInfo initializeConstructorCallerInterceptorsMap(int callingIndex, String calledClass, long calledMethodHash, Method calledMethod) throws Exception
+   private MethodByConInfo initializeConstructorCallerInterceptorsMap(Class callingClass, int callingIndex, String calledClass, long calledMethodHash, Method calledMethod) throws Exception
    {
       HashMap calledClassesMap = methodCalledByConInterceptors[callingIndex];
       if (calledClassesMap == null)
@@ -659,12 +659,12 @@
       //The standard MethodCalledByXXXXInvocation class calls by reflection and needs access
       calledMethod.setAccessible(true);
       Class calledClazz = Thread.currentThread().getContextClassLoader().loadClass(calledClass);
-      MethodByConInfo info = new MethodByConInfo(this, calledClazz, callingIndex, calledMethod, calledMethodHash, null);
+      MethodByConInfo info = new MethodByConInfo(this, calledClazz, callingClass, callingIndex, calledMethod, calledMethodHash, null);
       calledMethodsMap.put(calledMethodHash, info);
       return info;
    }
 
-   private ConByConInfo initializeConCalledByConInterceptorsMap(int callingIndex, String calledClass, long calledConHash, Constructor calledCon) throws Exception
+   private ConByConInfo initializeConCalledByConInterceptorsMap(Class callingClass, int callingIndex, String calledClass, long calledConHash, Constructor calledCon) throws Exception
    {
       HashMap calledClassesMap = conCalledByConInterceptors[callingIndex];
       if (calledClassesMap == null)
@@ -678,13 +678,13 @@
          calledMethodsMap = new TLongObjectHashMap();
          calledClassesMap.put(calledClass, calledMethodsMap);
       }
-      ConByConInfo info = createConByConInfo(callingIndex, calledClass, calledCon, calledConHash);
+      ConByConInfo info = createConByConInfo(callingClass, callingIndex, calledClass, calledCon, calledConHash);
       calledMethodsMap.put(calledConHash, info);
       return info;
    }
 
 
-   private ConByConInfo createConByConInfo(int callingIndex, String calledClass, Constructor calledCon, long calledConHash) throws Exception
+   private ConByConInfo createConByConInfo(Class callingClass, int callingIndex, String calledClass, Constructor calledCon, long calledConHash) throws Exception
    {
       //The standard ConstructorCalledByXXXXInvocation class calls by reflection and needs access
       calledCon.setAccessible(true);
@@ -695,11 +695,11 @@
          int index = calledClass.lastIndexOf('.');
          String baseClassName = calledClass.substring(index + 1);
          Method wrapper = calledCon.getDeclaringClass().getDeclaredMethod(ConstructorExecutionTransformer.constructorFactory(baseClassName), calledCon.getParameterTypes());
-         return new ConByConInfo(this, calledClazz, callingIndex, calledCon, calledConHash, wrapper, null);
+         return new ConByConInfo(this, calledClazz, callingClass, callingIndex, calledCon, calledConHash, wrapper, null);
       }
       catch (NoSuchMethodException e)
       {
-         return new ConByConInfo(this, calledClazz, callingIndex, calledCon, calledConHash, null, null);
+         return new ConByConInfo(this, calledClazz, callingClass, callingIndex, calledCon, calledConHash, null, null);
       }
    }
 
@@ -1237,19 +1237,25 @@
       return new WeakReference(resolveCallerConstructorInfo(callingMethodHash, calledClass, calledConHash));
    }
 
+   @Deprecated
    public MethodByConInfo resolveConstructorCallerMethodInfo(int callingIndex, String calledClass, long calledMethodHash)
    {
+      return resolveConstructorCallerMethodInfo(this.getClazz(), callingIndex, calledClass, calledMethodHash);
+   }
+   
+   public MethodByConInfo resolveConstructorCallerMethodInfo(Class callingClass, int callingIndex, String calledClass, long calledMethodHash)
+   {
       if (System.getSecurityManager() == null)
       {
-         return ResolveConstructorCallerMethodInfoAction.NON_PRIVILEGED.resolveInfo(this, callingIndex, calledClass, calledMethodHash);
+         return ResolveConstructorCallerMethodInfoAction.NON_PRIVILEGED.resolveInfo(this, callingClass, callingIndex, calledClass, calledMethodHash);
       }
       else
       {
-         return ResolveConstructorCallerMethodInfoAction.PRIVILEGED.resolveInfo(this, callingIndex, calledClass, calledMethodHash);
+         return ResolveConstructorCallerMethodInfoAction.PRIVILEGED.resolveInfo(this, callingClass, callingIndex, calledClass, calledMethodHash);
       }
    }
 
-   private MethodByConInfo doResolveConstructorCallerMethodInfo(int callingIndex, String calledClass, long calledMethodHash)
+   private MethodByConInfo doResolveConstructorCallerMethodInfo(Class callingClass, int callingIndex, String calledClass, long calledMethodHash)
    {
       try
       {
@@ -1275,7 +1281,7 @@
             }
          }
          if (!matched) initializeEmptyConstructorCallerChain(callingIndex, calledClass, calledMethodHash);
-         MethodByConInfo info = initializeConstructorCallerInterceptorsMap(callingIndex, calledClass, calledMethodHash, calledMethod);
+         MethodByConInfo info = initializeConstructorCallerInterceptorsMap(callingClass, callingIndex, calledClass, calledMethodHash, calledMethod);
          ArrayList bindings = getConstructorCallerBindings(callingIndex, calledClass, calledMethodHash);
          bindConstructorCallerInterceptorChain(bindings, callingIndex, calledClass, calledMethodHash);
          return info;
@@ -1286,26 +1292,37 @@
       }
    }
 
-
+   @Deprecated
    public WeakReference resolveConstructorCallerMethodInfoAsWeakReference(int callingIndex, String calledClass, long calledMethodHash)
    {
       //Javassist doesn't like this in a field initialiser hence this method
       return new WeakReference(resolveConstructorCallerMethodInfo(callingIndex, calledClass, calledMethodHash));
    }
 
+   public WeakReference resolveConstructorCallerMethodInfoAsWeakReference(Class callingClass, int callingIndex, String calledClass, long calledMethodHash)
+   {
+      //Javassist doesn't like this in a field initialiser hence this method
+      return new WeakReference(resolveConstructorCallerMethodInfo(callingClass, callingIndex, calledClass, calledMethodHash));
+   }
+
    public ConByConInfo resolveConstructorCallerConstructorInfo(int callingIndex, String calledClass, long calledConHash)
    {
+      return resolveConstructorCallerConstructorInfo(this.getClazz(), callingIndex, calledClass, calledConHash);
+   }
+   
+   public ConByConInfo resolveConstructorCallerConstructorInfo(Class callingClass, int callingIndex, String calledClass, long calledConHash)
+   {
       if (System.getSecurityManager() == null)
       {
-         return ResolveConstructorCallerConstructorInfoAction.NON_PRIVILEGED.resolveInfo(this, callingIndex, calledClass, calledConHash);
+         return ResolveConstructorCallerConstructorInfoAction.NON_PRIVILEGED.resolveInfo(this, callingClass, callingIndex, calledClass, calledConHash);
       }
       else
       {
-         return ResolveConstructorCallerConstructorInfoAction.PRIVILEGED.resolveInfo(this, callingIndex, calledClass, calledConHash);
+         return ResolveConstructorCallerConstructorInfoAction.PRIVILEGED.resolveInfo(this, callingClass, callingIndex, calledClass, calledConHash);
       }
    }
 
-   private ConByConInfo doResolveConstructorCallerConstructorInfo(int callingIndex, String calledClass, long calledConHash)
+   private ConByConInfo doResolveConstructorCallerConstructorInfo(Class callingClass, int callingIndex, String calledClass, long calledConHash)
    {
       try
       {
@@ -1330,7 +1347,7 @@
             }
          }
          if (!matched) initializeConCalledByConEmptyChain(callingIndex, calledClass, calledConHash);
-         ConByConInfo info = initializeConCalledByConInterceptorsMap(callingIndex, calledClass, calledConHash, calledCon);
+         ConByConInfo info = initializeConCalledByConInterceptorsMap(callingClass, callingIndex, calledClass, calledConHash, calledCon);
          ArrayList bindings = getConCalledByConBindings(callingIndex, calledClass, calledConHash);
          bindConCalledByConInterceptorChain(bindings, callingIndex, calledClass, calledConHash);
          return info;
@@ -1341,11 +1358,19 @@
       }
    }
 
+   @Deprecated
    public WeakReference resolveConstructorCallerConstructorInfoAsWeakReference(int callingIndex, String calledClass, long calledConHash)
    {
       //Javassist doesn't like this in a field initialiser hence this method
       return new WeakReference(resolveConstructorCallerConstructorInfo(callingIndex, calledClass, calledConHash));
    }
+   
+   public WeakReference resolveConstructorCallerConstructorInfoAsWeakReference(Class callingClass, int callingIndex, String calledClass, long calledConHash)
+   {
+      //Javassist doesn't like this in a field initialiser hence this method
+      return new WeakReference(resolveConstructorCallerConstructorInfo(callingClass, callingIndex, calledClass, calledConHash));
+   }
+   
    /////////////////////////
    // Invoking
 
@@ -1827,11 +1852,11 @@
 
    interface ResolveConstructorCallerMethodInfoAction
    {
-      MethodByConInfo resolveInfo(ClassAdvisor advisor, int callingIndex, String calledClass, long calledMethodHash);
+      MethodByConInfo resolveInfo(ClassAdvisor advisor, Class callingClass, int callingIndex, String calledClass, long calledMethodHash);
 
       ResolveConstructorCallerMethodInfoAction PRIVILEGED = new ResolveConstructorCallerMethodInfoAction()
       {
-         public MethodByConInfo resolveInfo(final ClassAdvisor advisor, final int callingIndex, final String calledClass, final long calledMethodHash)
+         public MethodByConInfo resolveInfo(final ClassAdvisor advisor, final Class callingClass, final int callingIndex, final String calledClass, final long calledMethodHash)
          {
             try
             {
@@ -1839,7 +1864,7 @@
                {
                   public Object run() throws Exception
                   {
-                     return advisor.doResolveConstructorCallerMethodInfo(callingIndex, calledClass, calledMethodHash);
+                     return advisor.doResolveConstructorCallerMethodInfo(callingClass, callingIndex, calledClass, calledMethodHash);
                   }
                });
             }
@@ -1857,20 +1882,20 @@
 
       ResolveConstructorCallerMethodInfoAction NON_PRIVILEGED = new ResolveConstructorCallerMethodInfoAction()
       {
-         public MethodByConInfo resolveInfo(ClassAdvisor advisor, int callingIndex, String calledClass, long calledMethodHash)
+         public MethodByConInfo resolveInfo(ClassAdvisor advisor, Class callingClass, int callingIndex, String calledClass, long calledMethodHash)
          {
-            return advisor.doResolveConstructorCallerMethodInfo(callingIndex, calledClass, calledMethodHash);
+            return advisor.doResolveConstructorCallerMethodInfo(callingClass, callingIndex, calledClass, calledMethodHash);
          }
       };
    }
 
    interface ResolveConstructorCallerConstructorInfoAction
    {
-      ConByConInfo resolveInfo(ClassAdvisor advisor, int callingIndex, String calledClass, long calledConHash);
+      ConByConInfo resolveInfo(ClassAdvisor advisor, Class callingClass, int callingIndex, String calledClass, long calledConHash);
 
       ResolveConstructorCallerConstructorInfoAction PRIVILEGED = new ResolveConstructorCallerConstructorInfoAction()
       {
-         public ConByConInfo resolveInfo(final ClassAdvisor advisor, final int callingIndex, final String calledClass, final long calledConHash)
+         public ConByConInfo resolveInfo(final ClassAdvisor advisor, final Class callingClass, final int callingIndex, final String calledClass, final long calledConHash)
          {
             try
             {
@@ -1878,7 +1903,7 @@
                {
                   public Object run() throws Exception
                   {
-                     return advisor.doResolveConstructorCallerConstructorInfo(callingIndex, calledClass, calledConHash);
+                     return advisor.doResolveConstructorCallerConstructorInfo(callingClass, callingIndex, calledClass, calledConHash);
                   }
                });
             }
@@ -1896,9 +1921,9 @@
 
       ResolveConstructorCallerConstructorInfoAction NON_PRIVILEGED = new ResolveConstructorCallerConstructorInfoAction()
       {
-         public ConByConInfo resolveInfo(ClassAdvisor advisor, int callingIndex, String calledClass, long calledConHash)
+         public ConByConInfo resolveInfo(ClassAdvisor advisor, Class callingClass, int callingIndex, String calledClass, long calledConHash)
          {
-            return advisor.doResolveConstructorCallerConstructorInfo(callingIndex, calledClass, calledConHash);
+            return advisor.doResolveConstructorCallerConstructorInfo(callingClass, callingIndex, calledClass, calledConHash);
          }
       };
    }
@@ -2152,7 +2177,7 @@
          calledMethod.setAccessible(true);
 
          Class calledClazz = Thread.currentThread().getContextClassLoader().loadClass(calledClass);
-         MethodByMethodInfo info = new MethodByMethodInfo(ClassAdvisor.this, calledClazz, calledMethod, callingMethodHash, calledMethodHash, null);
+         MethodByMethodInfo info = new MethodByMethodInfo(ClassAdvisor.this, calledClazz, calledMethod, callingMethod, callingMethodHash, calledMethodHash, null);
          calledMethodsMap.put(calledMethodHash, info);
          return info;
       }
@@ -2296,7 +2321,7 @@
                }
             }
             if (!matched) initializeConCalledByMethodEmptyChain(callingMethodHash, calledClass, calledConHash);
-            ConByMethodInfo info = initializeConCalledByMethodInterceptorsMap(callingMethodHash, calledClass, calledConHash, calledCon);
+            ConByMethodInfo info = initializeConCalledByMethodInterceptorsMap(callingMethod, callingMethodHash, calledClass, calledConHash, calledCon);
             ArrayList bindings = getConCalledByMethodBindings(callingMethodHash, calledClass, calledConHash);
             bindConCalledByMethodInterceptorChain(bindings, callingMethodHash, calledClass, calledConHash);
             return info;
@@ -2345,7 +2370,7 @@
          else if (createdBindings) backrefs.add(bindings);
       }
 
-      private ConByMethodInfo initializeConCalledByMethodInterceptorsMap(long callingMethodHash, String calledClass, long calledConHash, Constructor calledCon) throws Exception
+      private ConByMethodInfo initializeConCalledByMethodInterceptorsMap(Method callingMethod, long callingMethodHash, String calledClass, long calledConHash, Constructor calledCon) throws Exception
       {
          HashMap calledClassesMap = (HashMap) conCalledByMethodInterceptors.get(callingMethodHash);
          if (calledClassesMap == null)
@@ -2360,7 +2385,7 @@
             calledClassesMap.put(calledClass, calledMethodsMap);
          }
 
-         ConByMethodInfo info = createConByMethodInfo(calledClass, callingMethodHash, calledCon, calledConHash);
+         ConByMethodInfo info = createConByMethodInfo(calledClass, callingMethod, callingMethodHash, calledCon, calledConHash);
          calledMethodsMap.put(calledConHash, info);
          return info;
       }
@@ -2395,7 +2420,7 @@
          return info;
       }
 
-      private ConByMethodInfo createConByMethodInfo(String calledClass, long callingMethodHash, Constructor calledCon, long calledConHash) throws Exception
+      private ConByMethodInfo createConByMethodInfo(String calledClass, Method callingMethod, long callingMethodHash, Constructor calledCon, long calledConHash) throws Exception
       {
          //The standard ConstructorCalledByXXXXInvocation class calls by reflection and needs access
          calledCon.setAccessible(true);
@@ -2406,11 +2431,11 @@
             int index = calledClass.lastIndexOf('.');
             String baseClassName = calledClass.substring(index + 1);
             Method wrapper = calledCon.getDeclaringClass().getDeclaredMethod(ConstructorExecutionTransformer.constructorFactory(baseClassName), calledCon.getParameterTypes());
-            return new ConByMethodInfo(ClassAdvisor.this, calledClazz, callingMethodHash, calledCon, calledConHash, wrapper, null);
+            return new ConByMethodInfo(ClassAdvisor.this, calledClazz, callingMethod, callingMethodHash, calledCon, calledConHash, wrapper, null);
          }
          catch (NoSuchMethodException e)
          {
-            return new ConByMethodInfo(ClassAdvisor.this, calledClazz, callingMethodHash, calledCon, calledConHash, null, null);
+            return new ConByMethodInfo(ClassAdvisor.this, calledClazz, callingMethod, callingMethodHash, calledCon, calledConHash, null, null);
          }
       }
 

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ConByConInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ConByConInfo.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ConByConInfo.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -25,8 +25,8 @@
 import java.lang.reflect.Method;
 
 import org.jboss.aop.advice.Interceptor;
+import org.jboss.aop.joinpoint.ConstructorCallByConstructor;
 import org.jboss.aop.joinpoint.ConstructorCalledByConstructorJoinpoint;
-import org.jboss.aop.joinpoint.ConstructorCallByConstructor;
 import org.jboss.aop.joinpoint.Joinpoint;
 
 /**
@@ -39,13 +39,18 @@
    private final int callingIndex;
    private final Constructor calling;
    
-   public ConByConInfo(Advisor advisor, Class calledClass, int callingIndex, Constructor called, long calledConHash, Method wrappingMethod, Interceptor[] in)
+   public ConByConInfo(Advisor advisor, Class calledClass, Class callingClass, int callingIndex, Constructor called, long calledConHash, Method wrappingMethod, Interceptor[] in)
    {
-      super(advisor, calledClass, called, calledConHash, wrappingMethod, in, advisor.getClazz());
+      super(advisor, calledClass, called, calledConHash, wrappingMethod, in, callingClass);
       this.callingIndex = callingIndex;
-      this.calling = advisor.constructors[callingIndex];
+      Advisor tempAdvisor = advisor;
+      if (advisor.getClazz() != callingClass)
+      {
+         tempAdvisor = advisor.manager.getAdvisor(callingClass);
+      }
+      this.calling = tempAdvisor.constructors[callingIndex];
    }
-
+   
    /*
     * For copying
     */

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/ConByMethodInfo.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -46,19 +46,12 @@
     * @param c
     * @param in
     */
-   public ConByMethodInfo(Advisor advisor, Class calledClass, long callingMethodHash, Constructor c, long calledConHash, Method wrappingMethod, Interceptor[] in)
+   public ConByMethodInfo(Advisor advisor, Class calledClass, Method callingMethod, long callingMethodHash, Constructor c, long calledConHash, Method wrappingMethod, Interceptor[] in)
    {
       // FIXME ConByMethodJoinPont constructor
-      super(advisor, calledClass, c, calledConHash, wrappingMethod, in, advisor.getClazz());
-      try
-      {
-         this.callingMethodHash = callingMethodHash;
-         callingMethod = MethodHashing.findMethodByHash(getCallingClass(), callingMethodHash);
-      }
-      catch (Exception e)
-      {
-         throw new RuntimeException(e);
-      }
+      super(advisor, calledClass, c, calledConHash, wrappingMethod, in, callingMethod.getDeclaringClass());
+      this.callingMethodHash = callingMethodHash;
+      this.callingMethod = callingMethod;
    }
 
    /*

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByConInfo.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -22,6 +22,7 @@
 package org.jboss.aop;
 
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 import org.jboss.aop.advice.Interceptor;
@@ -40,12 +41,17 @@
    private final int callingIndex;
    private final Constructor calling;
    
-   public MethodByConInfo(Advisor advisor, Class calledClass, int callingIndex, Method m, long calledMethodHash, Interceptor[] in)
+   public MethodByConInfo(Advisor advisor, Class calledClass, Class callingClass, int callingIndex, Method m, long calledMethodHash, Interceptor[] in)
    {
       // FIXME MethodByConInfo constructor
-      super(advisor, calledClass, m, calledMethodHash, in, advisor.getClazz());
+      super(advisor, calledClass, m, calledMethodHash, in, callingClass);
       this.callingIndex = callingIndex;
-      calling = advisor.constructors[callingIndex];
+      Advisor tempAdvisor = advisor;
+      if (advisor.getClazz() != callingClass)
+      {
+	      tempAdvisor = advisor.manager.getAdvisor(callingClass);
+      }
+      calling = tempAdvisor.constructors[callingIndex];
    }
 
    /*

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/MethodByMethodInfo.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -39,18 +39,11 @@
    private final long callingMethodHash;
    private final Method callingMethod;
    
-   public MethodByMethodInfo(Advisor advisor, Class calledClass, Method m, long callingMethodHash, long calledMethodHash, Interceptor[] in)
+   public MethodByMethodInfo(Advisor advisor, Class calledClass, Method m, Method callingMethod, long callingMethodHash, long calledMethodHash, Interceptor[] in)
    {
-      super(advisor, calledClass, m, calledMethodHash, in, advisor.getClazz());
-      try
-      {
-         this.callingMethodHash = callingMethodHash;
-         callingMethod = MethodHashing.findMethodByHash(getCallingClass(), callingMethodHash);
-      }
-      catch (Exception e)
-      {
-         throw new RuntimeException(e);
-      }
+      super(advisor, calledClass, m, calledMethodHash, in, callingMethod.getDeclaringClass());
+      this.callingMethodHash = callingMethodHash;
+      this.callingMethod = callingMethod;
    }
    
    /*

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/CallerInfoAdder.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/CallerInfoAdder.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/CallerInfoAdder.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -53,9 +53,9 @@
    
    protected abstract void addConByMethodInfoField(CtClass addTo, String fieldName, long callingHash, String classname, long calledHash) throws NotFoundException, CannotCompileException;
 
-   protected abstract void addConByConInfoField(CtClass addTo, String fieldName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException;
+   protected abstract void addConByConInfoField(CtClass addTo, String fieldName, String callingClassName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException;
 
-   protected abstract void addMethodByConInfoField(CtClass addTo, String fieldName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException;
+   protected abstract void addMethodByConInfoField(CtClass addTo, String fieldName, String callingClassName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException;
    
    
    protected void addConByConInfoField(CtClass addTo, String fieldName, String init) throws NotFoundException, CannotCompileException

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ClassicCallerInfoAdder.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ClassicCallerInfoAdder.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/ClassicCallerInfoAdder.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -51,15 +51,15 @@
       addConByMethodInfoField(addTo, fieldName, init);
    }
 
-   protected void addConByConInfoField(CtClass addTo, String fieldName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException
+   protected void addConByConInfoField(CtClass addTo, String fieldName, String callingClassName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException
    {
-      String init = "aop$classAdvisor$aop.resolveConstructorCallerConstructorInfoAsWeakReference(" + callingIndex + ", \"" + classname + "\", " + calledHash + "L)";
+      String init = "aop$classAdvisor$aop.resolveConstructorCallerConstructorInfoAsWeakReference(" + addTo.getName() +  ".class, " + callingIndex + ", \"" + classname + "\", " + calledHash + "L)";
       addConByConInfoField(addTo, fieldName, init);
    }
 
-   protected void addMethodByConInfoField(CtClass addTo, String fieldName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException
+   protected void addMethodByConInfoField(CtClass addTo, String fieldName, String callingClassName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException
    {
-      String init = "aop$classAdvisor$aop.resolveConstructorCallerMethodInfoAsWeakReference(" + callingIndex + ", \"" + classname + "\", " + calledHash + "L)";
+      String init = "aop$classAdvisor$aop.resolveConstructorCallerMethodInfoAsWeakReference(" + addTo.getName() + ".class, " + callingIndex + ", \"" + classname + "\", " + calledHash + "L)";
       addMethodByConInfoField(addTo, fieldName, init);
    }
 

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorCallerInfoAdder.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorCallerInfoAdder.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorCallerInfoAdder.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -42,6 +42,7 @@
 
    protected void addMethodByMethodInfoField(CtClass addTo, String fieldName, long callingHash, String classname, long calledHash) throws NotFoundException, CannotCompileException
    {
+      // addTo is the advisor class
       String init = "resolveCallerMethodInfo(" + callingHash + "L, \"" + classname + "\", " + calledHash + "L)";
       addMethodByMethodInfoField(addTo, fieldName, null);
       ((GeneratedAdvisorInstrumentor)instrumentor).initialiseCallerInfoField(fieldName, init);
@@ -54,16 +55,16 @@
       ((GeneratedAdvisorInstrumentor)instrumentor).initialiseCallerInfoField(fieldName, init);
    }
 
-   protected void addConByConInfoField(CtClass addTo, String fieldName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException
+   protected void addConByConInfoField(CtClass addTo, String fieldName, String callingClassName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException
    {
-      String init = "resolveConstructorCallerConstructorInfo(" + callingIndex + ", \"" + classname + "\", " + calledHash + "L)";
+      String init = "resolveConstructorCallerConstructorInfo(" + callingClassName +  ".class, " + callingIndex + ", \"" + classname + "\", " + calledHash + "L)";
       addConByConInfoField(addTo, fieldName, null);
       ((GeneratedAdvisorInstrumentor)instrumentor).initialiseCallerInfoField(fieldName, init);
    }
 
-   protected void addMethodByConInfoField(CtClass addTo, String fieldName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException
+   protected void addMethodByConInfoField(CtClass addTo, String fieldName, String callingClassName, int callingIndex, String classname, long calledHash) throws NotFoundException, CannotCompileException
    {
-      String init = "resolveConstructorCallerMethodInfo(" + callingIndex + ", \"" + classname + "\", " + calledHash + "L)";
+      String init = "resolveConstructorCallerMethodInfo(" + callingClassName +  ".class, " + callingIndex + ", \"" + classname + "\", " + calledHash + "L)";
       addMethodByConInfoField(addTo, fieldName, null);
       ((GeneratedAdvisorInstrumentor)instrumentor).initialiseCallerInfoField(fieldName, init);
    }

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorCallerTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorCallerTransformer.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorCallerTransformer.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -77,7 +77,7 @@
          if (callerInfos.get(cd.callerInfoField) == null)
          {
             callerInfos.put(cd.callerInfoField, NonOptimizedCallerTransformer.PLACEHOLDER);
-            callerInfoAdder.addMethodByConInfoField(getGenadvisor(), cd.callerInfoField, cd.callingIndex, cd.classname, cd.calledHash);
+            callerInfoAdder.addMethodByConInfoField(getGenadvisor(), cd.callerInfoField, callingClass.getName(), cd.callingIndex, cd.classname, cd.calledHash);
             addJoinpoint(cd);
             createGenAdvisorMethodByConMethod(cd);
          }
@@ -374,7 +374,7 @@
          if (callerInfos.get(cd.callerInfoField) == null)
          {
             callerInfos.put(cd.callerInfoField, NonOptimizedCallerTransformer.PLACEHOLDER);
-            callerInfoAdder.addConByConInfoField(getGenadvisor(), cd.callerInfoField, cd.callingIndex, cd.classname, cd.calledHash);
+            callerInfoAdder.addConByConInfoField(getGenadvisor(), cd.callerInfoField, callingClass.getName(), cd.callingIndex, cd.classname, cd.calledHash);
             addJoinpoint(cd);
             createGenAdvisorConByConMethod(cd);
          }

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/GeneratedAdvisorInstrumentor.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -278,7 +278,8 @@
             INITIALISE_CALLERS,
             EMPTY_SIG,
             EMPTY_EXCEPTIONS,
-            null, //"{" + GeneratedClassAdvisor.CLEAR_CALLERS + "();}",
+            (isBaseClass(clazz)) ?
+                  null : "{super." + INITIALISE_CALLERS + "();}",
             genadvisor);
       genadvisor.addMethod(initialiseCallers);
 

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedCallerTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedCallerTransformer.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/NonOptimizedCallerTransformer.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -64,7 +64,7 @@
             String invocationClassName = PLACEHOLDER;
          
             callerInfos.put(cd.callerInfoField, invocationClassName);
-            callerInfoAdder.addMethodByConInfoField(callingClass, cd.callerInfoField, cd.callingIndex, cd.classname, cd.calledHash);
+            callerInfoAdder.addMethodByConInfoField(callingClass, cd.callerInfoField, callingClass.getName(), cd.callingIndex, cd.classname, cd.calledHash);
          }
       }
 
@@ -97,7 +97,7 @@
             String invocationClassName = PLACEHOLDER;
             
             callerInfos.put(cd.callerInfoField, invocationClassName);
-            callerInfoAdder.addConByConInfoField(callingClass, cd.callerInfoField, cd.callingIndex, cd.classname, cd.calledHash);
+            callerInfoAdder.addConByConInfoField(callingClass, cd.callerInfoField, callingClass.getName(), cd.callingIndex, cd.classname, cd.calledHash);
          }
       }
 

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/OptimizedCallerTransformer.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/OptimizedCallerTransformer.java	2007-07-20 18:15:16 UTC (rev 64166)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/OptimizedCallerTransformer.java	2007-07-21 03:54:32 UTC (rev 64167)
@@ -63,7 +63,7 @@
             String invocationClassName = OptimizedCallerInvocations.createOptimizedMethodCalledByConInvocationClass(instrumentor, createName, callingClass, cd.calledMethod, cd.callingIndex, cd.calledHash);
 
             callerInfos.put(cd.callerInfoField, invocationClassName);
-            callerInfoAdder.addMethodByConInfoField(callingClass, cd.callerInfoField, cd.callingIndex, cd.classname, cd.calledHash);
+            callerInfoAdder.addMethodByConInfoField(callingClass, cd.callerInfoField, callingClass.getName(), cd.callingIndex, cd.classname, cd.calledHash);
          }
       }
 
@@ -116,7 +116,7 @@
             {
                callerInfos.put(cd.callerInfoField, NonOptimizedCallerTransformer.PLACEHOLDER);
             }
-            callerInfoAdder.addConByConInfoField(callingClass, cd.callerInfoField, cd.callingIndex, cd.classname, cd.calledHash);
+            callerInfoAdder.addConByConInfoField(callingClass, cd.callerInfoField, callingClass.getName(), cd.callingIndex, cd.classname, cd.calledHash);
          }
       }
 




More information about the jboss-cvs-commits mailing list