1 2 Previous Next 25 Replies Latest reply on Apr 3, 2007 8:30 AM by kabirkhan Go to original post
      • 15. Re: Inteception on field inherited through generic superclas
        dunks80

        Kabir,
        I just downloaded AOP 1.5.3 and I'm still seeing the same behavior on my test case...here is the verbose output when running the testcase

        [debug] Passed in instrumentor: null
        [debug] Defaulting instrumentor to: org.jboss.aop.instrument.ClassicInstrumentor
        [debug] jboss.aop.class.path: /workspace/aop-problem/src/java
        [debug] Looking for aspects in: testcase.ZImpl
        [debug] Looking for aspects in: testcase.B
        [debug] Looking for aspects in: testcase.MyFieldAnnotation
        [debug] Looking for aspects in: testcase.A
        [debug] Looking for aspects in: testcase.Main
        [debug] Looking for aspects in: testcase.MyFieldInterceptor
        [debug] Found @InterceptorDef in: testcase.MyFieldInterceptor
        [debug] Looking for aspects in: testcase.C
        [debug] Looking for aspects in: testcase.Z
        [debug] jboss.aop.search.classpath: 'null' true
        [debug] jboss.aop.path: null
        [trying to transform] testcase.Main
        [debug] There are no caller pointcuts!
        [debug] javassist.CtMethod@44a4fe33[public static main ([Ljava/lang/String;)V] matches no pointcuts
        [debug] javassist.CtConstructor@366025e7[public Main ()V] matches no pointcuts
        [debug] javassist.CtConstructor@28d08633[public C ()V] matches no pointcuts
        [debug] javassist.CtConstructor@6037fb1e[public B ()V] matches no pointcuts
        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
        [debug] testcase.A.myField:Ljava/lang/String; matches no pointcuts
        [debug] javassist.CtConstructor@6686fe26[public A ()V] matches no pointcuts
        [debug] was testcase.Main converted: true
        [trying to transform] testcase.C
        [debug] There are no caller pointcuts!
        [debug] javassist.CtMethod@69cb6c6d[public toString ()Ljava/lang/String;] matches no pointcuts
        [debug] javassist.CtConstructor@41fc2fb[public C ()V] matches no pointcuts
        [debug] was testcase.C converted: false
        [trying to transform] testcase.B
        [debug] There are no caller pointcuts!
        [debug] javassist.CtConstructor@42704baa[public B ()V] matches no pointcuts
        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
        [debug] testcase.A.myField:Ljava/lang/String; matches no pointcuts
        [debug] was testcase.B converted: true
        [trying to transform] testcase.A
        [debug] There are no caller pointcuts!
        [debug] javassist.CtConstructor@65b4fad5[public A ()V] matches no pointcuts
        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
        [debug] testcase.A.myField:Ljava/lang/String; matches no pointcuts
        [debug] was testcase.A converted: true
        iterate binding testcase.MyFieldInterceptor
        field matched binding testcase.MyFieldInterceptor
        [debug] added advisor: testcase.A from binding: testcase.MyFieldInterceptor
        Using context classloader sun.misc.Launcher$AppClassLoader@64601bb1 to load aspect testcase.MyFieldInterceptor
        [trying to transform] testcase.MyFieldInterceptor
        [debug] There are no caller pointcuts!
        [debug] javassist.CtMethod@26562bc2[public getName ()Ljava/lang/String;] matches no pointcuts
        [debug] javassist.CtMethod@2ff3c113[public invoke (Lorg/jboss/aop/joinpoint/Invocation;)Ljava/lang/Object;] matches no pointcuts
        [debug] javassist.CtConstructor@2c76e369[public MyFieldInterceptor ()V] matches no pointcuts
        [debug] was testcase.MyFieldInterceptor converted: false
        null
        


        were you able to get the test case i sent you to run correctly (with the duplicated myField inherited variable in class B commented out)?

        Upon further investigation it seems that the interceptor is invoked on the inherited field as long as the field is not called from within the subclass itself...what I mean is that in subclass C I have a toString method that returns the inherited A.myField value....


        public class C extends B<ZImpl>
        {
         public String toString()
         {
         return myField;
         }
        }
        


        If the inherited field is not duplicated in class B and I call C.toString the interceptor is not run on the inherited A.myField...however...if within the main class i directly call C.myField like this..

        
        public class Main
        {
         /**
         * @author gdunkle
         * @param args
         * TODO Implement auto-generated method stub
         */
         public static void main(String[] args)
         {
         C cInstance=new C();
         System.out.println(cInstance.toString());
         System.out.println(cInstance.myField);
         }
        }
        


        the interceptor is run. I just reran the test case with the 1.5.2 release and the second print line in Main did not invoke the interceptor so it looks like that part of the issue was indeed solved by 1.5.3.

        So I guess my new issue is that the interceptors are not being called on fields inherited through the superclass from inside the subclass itself. Should this be expected behavior? Could you please comment?

        Thanks

        • 16. Re: Inteception on field inherited through generic superclas
          kabirkhan

          You've lost me :-) I tried reproducing the problem, but with no luck. Can you mail me an example, or create a NEW jira issue?

          Thanks

          • 17. Re: Inteception on field inherited through generic superclas
            dunks80

            Ugh sorry yeah it's hard to explain i reopened http://jira.jboss.org/jira/browse/JBAOP-339 and added an expanded test case.

            It seems that if I access an inherited field (one which is not inherited from the immediate parent class) from within the subclass the interceptor is not run. Does that make sense?

            • 18. Re: Inteception on field inherited through generic superclas
              kabirkhan

              You cannot reopen issues that have been released. I have added the new stuff to http://jira.jboss.org/jira/browse/JBAOP-346 and will investigate

              • 19. Re: Inteception on field inherited through generic superclas
                dunks80

                I apologize. Thanks for looking into it.

                • 20. Re: Inteception on field inherited through generic superclas
                  kabirkhan

                  That is odd indeed, I cannot see any difference between your test and mine apart from that in my test org.jboss.test.aop.field.FieldTestCase all the classes actually have some advised fields in addition to the inherited ones. I will add a test for this and fix.

                  • 21. Re: Inteception on field inherited through generic superclas
                    kabirkhan

                    OK, I have reproduced your problem and fixed in svn for Branch_AOP_1_5. Please let me know if I got it right this time :-)

                    I can't remember if you had problems building it from svn, but once you check it out

                    1) delete all subfolders of the thirdparty/ folder
                    2) go to the build/ folder and touch build-thirdparty.xml
                    3) execute build.sh/bat to download the thirdparty libs, it will then continue to build all of JBoss


                    If 3) works and builds all of JBoss then that's fine. Otherwise, you will need to:
                    - go to the common/ directory, and execute build.sh/bat
                    - go to the aop/ directory and execute build.sh/bat

                    • 22. Re: Inteception on field inherited through generic superclas
                      kabirkhan
                      • 23. Re: Inteception on field inherited through generic superclas
                        dunks80

                        Hi Kabir

                        I finally got around to upgrading to 1.4.5.SP2 when I installed Jboss-4.2.0.CR1 and I ran my test case against the latest build. It's almost right. Here is the out put I'm seeing from my test case (I've expanded the test case a bit b/c i was testing some other things as well).

                        [debug] Passed in instrumentor: null
                        [debug] Defaulting instrumentor to: org.jboss.aop.instrument.ClassicInstrumentor
                        [debug] jboss.aop.class.path: /home/gdunkle/workspace/aop-problem/src/java
                        [debug] Looking for aspects in: testcase.ZImpl
                        [debug] Looking for aspects in: testcase.B
                        [debug] Looking for aspects in: testcase.MyFieldAnnotation
                        [debug] Looking for aspects in: testcase.MyMethodInterceptor
                        [debug] Found @InterceptorDef in: testcase.MyMethodInterceptor
                        [debug] Looking for aspects in: testcase.A
                        [debug] Looking for aspects in: testcase.Main
                        [debug] Looking for aspects in: testcase.MyMethodAnnotation
                        [debug] Looking for aspects in: testcase.MyFieldInterceptor
                        [debug] Found @InterceptorDef in: testcase.MyFieldInterceptor
                        [debug] Looking for aspects in: testcase.C
                        [debug] Looking for aspects in: testcase.Z
                        [debug] Looking for aspects in: testcase.D
                        [debug] jboss.aop.search.classpath: 'null' true
                        [deploying] file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml
                        AspectXMLLoader using managerorg.jboss.aop.AspectManager@558385e3
                        [debug] jboss.aop.path: /home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml
                        jboss.aop.path[0]: /home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml
                        [deploying] file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml
                        AspectXMLLoader using managerorg.jboss.aop.AspectManager@558385e3
                        [trying to transform] testcase.Main
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] javassist.CtMethod@44a4fe33[public static main ([Ljava/lang/String;)V] matches no pointcuts
                        [debug] javassist.CtConstructor@159b5217[public Main ()V] matches no pointcuts
                        [debug] javassist.CtConstructor@5e7808b9[public C ()V] matches no pointcuts
                        [debug] javassist.CtConstructor@1a84da23[public D ()V] matches no pointcuts
                        [debug] javassist.CtConstructor@80d3d6f[public B ()V] matches no pointcuts
                        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
                        [debug] testcase.A.myField:Ljava/lang/String; matches no pointcuts
                        [debug] javassist.CtConstructor@380e28b9[public A ()V] matches no pointcuts
                        [debug] was testcase.Main converted: true
                        [trying to transform] testcase.C
                        [debug] javassist.CtMethod@69cb6c6d[public toString ()Ljava/lang/String;] matches no pointcuts
                        [debug] javassist.CtConstructor@2d5253d5[public C ()V] matches no pointcuts
                        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
                        [debug] was testcase.C converted: false
                        [trying to transform] testcase.B
                        [debug] javassist.CtConstructor@3b835282[public B ()V] matches no pointcuts
                        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
                        [debug] testcase.A.myField:Ljava/lang/String; matches no pointcuts
                        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
                        [debug] was testcase.B converted: true
                        [trying to transform] testcase.A
                        [debug] javassist.CtMethod@69e1d179[public getMyField ()Ljava/lang/String;] matches pointcut: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] javassist.CtConstructor@4ce32802[public A ()V] matches no pointcuts
                        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
                        [debug] testcase.A.myField:Ljava/lang/String; matches no pointcuts
                        [debug] was testcase.A converted: true
                        iterate binding testcase.MyMethodInterceptor
                        iterate binding testcase.MyFieldInterceptor
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml0
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml2
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml4
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml6
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml8
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml10
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml12
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml14
                        [debug] added advisor: testcase.Main from binding: file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml8
                        Using context classloader sun.misc.Launcher$AppClassLoader@181afa3 to load aspect org.jboss.aop.reflection.ReflectionAspect
                        iterate binding testcase.MyMethodInterceptor
                        [debug] added advisor: testcase.A from binding: testcase.MyMethodInterceptor
                        Using context classloader sun.misc.Launcher$AppClassLoader@181afa3 to load aspect testcase.MyMethodInterceptor
                        [trying to transform] testcase.MyMethodInterceptor
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] javassist.CtMethod@26562bc2[public getName ()Ljava/lang/String;] matches no pointcuts
                        [debug] javassist.CtMethod@2ff3c113[public invoke (Lorg/jboss/aop/joinpoint/Invocation;)Ljava/lang/Object;] matches no pointcuts
                        [debug] javassist.CtConstructor@6e811c88[public MyMethodInterceptor ()V] matches no pointcuts
                        [debug] was testcase.MyMethodInterceptor converted: false
                        iterate binding testcase.MyFieldInterceptor
                        [debug] added advisor: testcase.A from binding: testcase.MyFieldInterceptor
                        Using context classloader sun.misc.Launcher$AppClassLoader@181afa3 to load aspect testcase.MyFieldInterceptor
                        [trying to transform] testcase.MyFieldInterceptor
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* jmethod call matched binding call(* java.lang.Class->getMethod(..))
                        method matched binding execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..)) public java.lang.String testcase.A.getMyField()
                        field matched binding testcase.MyFieldInterceptor
                        ava.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] MethodCall does not match: execution(* $instanceof{testcase.A}->@testcase.MyMethodAnnotation(..))
                        [debug] MethodCall does not match: get(* *->@testcase.MyFieldAnnotation)
                        [debug] MethodCall does not match: call(* java.lang.Class->getInterfaces())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethods())
                        [debug] MethodCall does not match: call(* java.lang.Class->getMethod(..))
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredFields())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredClasses())
                        [debug] MethodCall does not match: call(* java.lang.Class->getDeclaredField(..))
                        [debug] javassist.CtMethod@26562bc2[public getName ()Ljava/lang/String;] matches no pointcuts
                        [debug] javassist.CtMethod@2ff3c113[public invoke (Lorg/jboss/aop/joinpoint/Invocation;)Ljava/lang/Object;] matches no pointcuts
                        [debug] javassist.CtConstructor@5d5bdc50[public MyFieldInterceptor ()V] matches no pointcuts
                        [debug] was testcase.MyFieldInterceptor converted: false
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml0
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml2
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml4
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml6
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml8
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml10
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml12
                        iterate binding file:/home/gdunkle/workspace/aop-problem/src/java/META-INF/jboss-aop.xml14
                        [trying to transform] testcase.D
                        [debug] javassist.CtMethod@69cb6c6d[public toString ()Ljava/lang/String;] matches no pointcuts
                        [debug] javassist.CtConstructor@bd86fd3[public D ()V] matches no pointcuts
                        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
                        [debug] testcase.A.myField:Ljava/lang/String; matches no pointcuts
                        [debug] testcase.A.myField:Ljava/lang/String; matches pointcut: get(* *->@testcase.MyFieldAnnotation)
                        [debug] was testcase.D converted: true
                        /*THIS IS THE PROBLEM THIS SHOULD NOT RETURN NULL*/
                        cInstance.toString()=null
                        cInstance.getMyField()=Invoked testcase.MyMethodInterceptor on testcase.C method getMyField
                        cInstance.myField=Invoked testcase.MyFieldInterceptor on testcase.C field myField
                        cInstance.cInstance.getClass().getMethod("getMyField",new Class[0]).getName()=getMyField
                        dInstance.toString()=Invoked testcase.MyFieldInterceptor on testcase.D field myField
                        dInstance.getMyField()=Invoked testcase.MyMethodInterceptor on testcase.D method getMyField
                        dInstance.myField=Invoked testcase.MyFieldInterceptor on testcase.D field myField
                        dInstance.cInstance.getClass().getMethod("getMyField",new Class[0]).getName()=getMyField
                        
                        


                        The call to C.toString() returns the inherited A.myField which should be intercepted my MyFieldInterceptor.

                        What do you think, should I open another jira issue?


                        Also the latest version of javassist and aop seems to hate java 6. Have your tested the latest release against java 6 or is it just me?

                        • 24. Re: Inteception on field inherited through generic superclas
                          dunks80

                          I've been running my application in jboss-4.2.0.CR1 and i've been seeing some really odd behavior with the aop system. Sometimes my pointcuts won't get picked up..i change nothing...i touch nothing..i just restart the server and bam! it works the next time.

                          Anyway trying to test this stuff to figure out what the problem is I noticed something in my test case. From my previous post I was getting this output which is wrong...

                          ...
                          cInstance.toString()=null
                          cInstance.getMyField()=Invoked testcase.MyMethodInterceptor on testcase.C method getMyField
                          cInstance.myField=Invoked testcase.MyFieldInterceptor on testcase.C field myField
                          cInstance.cInstance.getClass().getMethod("getMyField",new Class[0]).getName()=getMyField
                          dInstance.toString()=Invoked testcase.MyFieldInterceptor on testcase.D field myField
                          dInstance.getMyField()=Invoked testcase.MyMethodInterceptor on testcase.D method getMyField
                          dInstance.myField=Invoked testcase.MyFieldInterceptor on testcase.D field myField
                          dInstance.cInstance.getClass().getMethod("getMyField",new Class[0]).getName()=getMyField
                          ...
                          


                          As i said cInstance.toString() should not result in null because my interceptor should return a value but it doens't. Ok so I added another protected annotated field to the C class called myOtherField. Now checkout the output of cInstance.toString()...

                          cInstance.toString()=Invoked testcase.MyFieldInterceptor on testcase.C field myField
                          cInstance.getMyField()=Invoked testcase.MyMethodInterceptor on testcase.C method getMyField
                          cInstance.myField=Invoked testcase.MyFieldInterceptor on testcase.C field myField
                          cInstance.myOtherField=Invoked testcase.MyFieldInterceptor on testcase.C field myOtherField
                          cInstance.cInstance.getClass().getMethod("getMyField",new Class[0]).getName()=getMyField
                          dInstance.toString()=Invoked testcase.MyFieldInterceptor on testcase.D field myField
                          dInstance.getMyField()=Invoked testcase.MyMethodInterceptor on testcase.D method getMyField
                          dInstance.myField=Invoked testcase.MyFieldInterceptor on testcase.D field myField
                          dInstance.myOtherField=Invoked testcase.MyFieldInterceptor on testcase.D field myOtherField
                          dInstance.cInstance.getClass().getMethod("getMyField",new Class[0]).getName()=getMyField
                          


                          Suddenly the interceptor is run on the inherited myField attribute for C. It's almost like the aop system doens't see any direct annotations in the C class so it doesn't bother applying any aspects but if there is an annotation in C then it will also take the time to look for any inherited fields that may be annotated.



                          • 25. Re: Inteception on field inherited through generic superclas
                            kabirkhan

                            Sorry for the delay in getting back to you on this. Assuming that you have a checkout of jboss aop, would you be able to add a test demonstrating the behaviour and attach the svn diff and new classes to a new JIRA issue?

                            The test files to modify would be under
                            boss-aop\aop\src\test\org\jboss\test\aop\field

                            and the jboss-aop.xml file lives in
                            jboss-aop\aop\src\resources\test\field

                            1 2 Previous Next