Uploaded image for project: 'JBoss AOP'
  1. JBoss AOP
  2. JBAOP-795

Don't copy signature attribute for introduced methods

    Details

    • Type: Bug
    • Status: Resolved (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: 2.2.1.Alpha2
    • Fix Version/s: 2.2.1.Alpha3
    • Component/s: None
    • Labels:
      None

      Description

      From: Kabir Khan <kabir.khan@jboss.com>
      Date: 7 June 2010 12:36:13 GMT+01:00
      To: Ales Justin <ales.justin@gmail.com>
      Cc: Flavia Rainone <flavia.rainone@jboss.com>
      Subject: Re: aop + scanning

      So it seems like the class has already been woven and the method comes from an introduction, it is falling over on

      public int org.jboss.test.aop.jdk15annotated.NoInterfacesPOJO2.compareTo(java.lang.Object)

      Which seems to be coming from this introduction

      @Mixin (target=org.jboss.test.aop.jdk15annotated.NoInterfacesPOJO2.class, interfaces=

      {Comparable.class}

      )
      public static ComparableMixin createComparableMixin()

      { return new ComparableMixin(); }

      So I guess AOP is not updating the target classes signature attribute when adding introductions, but might be when adding the method?

      This means that when we call getDeclaredMethods() on the target class, and then on that method try to call getGenericParameterTypes() behind the scenes it tries to load up the value of the type variable defined on the method

      public int compareTo(T o);

      it can not find T and returns the array [null], rather than an array containing Object.

      I can work around it in reflect by returning the typeinfo for Object if Type is null. We should fix aop, but there might be other things doing the same thing? I'll dig a bit into how aop handles the signature stuff for a few different things at the moment, and see if it is fixable. At least that will give us a good idea of what is wrong so I can generate some "faulty" classes in the reflect testsuite and make sure reflect works as it should in these cases.

      From: Kabir Khan <kabir.khan@jboss.com>
      Date: 7 June 2010 11:35:22 GMT+01:00
      To: Ales Justin <ales.justin@gmail.com>
      Subject: Re: aop + scanning

      The root exception when I run AS is:

      Caused by: java.lang.IllegalArgumentException: Null type
      at org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactoryImpl.getTypeInfo(IntrospectionTypeInfoFactoryImpl.java:360) [jboss-reflect.jar:2.2.0.Alpha5]
      at org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactoryImpl.getTypeInfos(IntrospectionTypeInfoFactoryImpl.java:306) [jboss-reflect.jar:2.2.0.Alpha5]
      at org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactoryImpl$2.run(IntrospectionTypeInfoFactoryImpl.java:236) [jboss-reflect.jar:2.2.0.Alpha5]
      at org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactoryImpl$2.run(IntrospectionTypeInfoFactoryImpl.java:222) [jboss-reflect.jar:2.2.0.Alpha5]
      at java.security.AccessController.doPrivileged(Native Method) [:1.6.0_20]
      at org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactoryImpl.getMethods(IntrospectionTypeInfoFactoryImpl.java:221) [jboss-reflect.jar:2.2.0.Alpha5]
      at org.jboss.reflect.plugins.ClassInfoImpl.getDeclaredMethods(ClassInfoImpl.java:416) [jboss-reflect.jar:2.2.0.Alpha5]
      at org.jboss.scanning.plugins.visitor.ClassHierarchyResourceVisitor.handleClass(ClassHierarchyResourceVisitor.java:78) [:1.0.0.Alpha2]
      at org.jboss.scanning.plugins.visitor.ReflectResourceVisitor.doVisit(ReflectResourceVisitor.java:108) [:1.0.0.Alpha2]
      at org.jboss.scanning.plugins.visitor.ReflectResourceVisitor.visit(ReflectResourceVisitor.java:86) [:1.0.0.Alpha2]
      ... 63 more

      Which seems to stem from this call in ITIFI.getMethods():

      @SuppressWarnings("deprecation")
      public MethodInfoImpl[] getMethods(final ClassInfoImpl classInfo)
      {
      return AccessController.doPrivileged(new PrivilegedAction<MethodInfoImpl[]>()
      {
      public MethodInfoImpl[] run()
      {
      Class<?> clazz = classInfo.getType();
      Method[] methods = getDeclaredMethods(clazz);
      if (methods == null || methods.length == 0)
      return null;

      ClassLoader requesting = SecurityActions.getClassLoaderOrSystemClassLoader(clazz);

      ReflectMethodInfoImpl[] infos = new ReflectMethodInfoImpl[methods.length];
      for (int i = 0; i < methods.length; ++i)

      { AnnotationValue[] annotations = getAnnotations(methods[i]); infos[i] = new ReflectMethodInfoImpl(annotations, methods[i].getName(), getTypeInfo(methods[i].getGenericReturnType()), getTypeInfos(methods[i].getGenericParameterTypes()), // <<<<<<<<<<<<<<< getParameterAnnotations(methods[i].getParameterAnnotations()), getClassInfos(methods[i].getGenericExceptionTypes()), methods[i].getModifiers(), (ClassInfo) getTypeInfo(methods[i].getDeclaringClass())); infos[i].setMethod(methods[i]); }

      return infos;
      }
      });
      }

      I'll get the alpha5 source and debug, what is happening, probably some corner case we have not covered in the tests

      On 3 Jun 2010, at 12:55, Ales Justin wrote:

      Can you have a look at this:

      What I would like to know is where this "Null type" is coming from.

      --------------------
      Test: org.jboss.test.aop.test.ScopedAnnotatedTestCase(aop-scoped)

      2010-06-02 21:19:10,325 DEBUG [org.jboss.aop.asintegration.jboss5.AOPDeploymentAopMetaDataDeployer] (RMI TCP Connection(2)-127.0.0.1) Finished deploying AbstractVFSDeploymentContext@7879273

      {vfs:///work/TRUNK/trunk/testsuite/output/lib/aop-scoped-annotated.sar/aop-scoped-annotated.aop/}

      2010-06-02 21:19:11,786 DEBUG [org.jboss.scanning.deployers.ScanningDeployer] (RMI TCP Connection(2)-127.0.0.1) Error during deploy: vfs:///work/TRUNK/trunk/testsuite/output/lib/aop-scoped-annotated.sar/aop-scoped-annotated.aop/: java.lang.Error: Error visiting "/work/TRUNK/trunk/testsuite/output/lib/aop-scoped-annotated.sar/aop-scoped-annotated.aop/org/jboss/test/aop/jdk15annotated/NoInterfacesPOJO2.class"
      at org.jboss.classloading.plugins.vfs.VFSResourceVisitor.visit(VFSResourceVisitor.java:268) [jboss-classloading-vfs.jar:2.2.0.Alpha5]
      at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:407) [jboss-vfs.jar:3.0.0.CR5]
      at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5]
      at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5]
      at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5]
      at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5]
      at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:409) [jboss-vfs.jar:3.0.0.CR5]
      at org.jboss.vfs.VirtualFile.visit(VirtualFile.java:395) [jboss-vfs.jar:3.0.0.CR5]
      at org.jboss.classloading.plugins.vfs.VFSResourceVisitor.visit(VFSResourceVisitor.java:102) [jboss-classloading-vfs.jar:2.2.0.Alpha5]
      at org.jboss.deployers.vfs.plugins.classloader.VFSDeploymentClassLoaderPolicyModule.visit(VFSDeploymentClassLoaderPolicyModule.java:181) [:2.2.0.Alpha5]
      at org.jboss.scanning.plugins.DeploymentUnitScanner.scan(DeploymentUnitScanner.java:111) [:1.0.0.Alpha2]
      at org.jboss.scanning.spi.helpers.UrlScanner.scan(UrlScanner.java:96) [:1.0.0.Alpha2]
      at org.jboss.scanning.deployers.ScanningDeployer.deploy(ScanningDeployer.java:90) [:1.0.0.Alpha2]
      at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179) [:2.2.0.Alpha5]
      at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1832) [:2.2.0.Alpha5]
      <snip>
      Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Null type
      at org.jboss.scanning.plugins.visitor.IgnoreSetErrorHandler.handleError(IgnoreSetErrorHandler.java:57) [:1.0.0.Alpha2]

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                kabirkhan Kabir Khan
                Reporter:
                kabirkhan Kabir Khan
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: