Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-5622

[drlvm][kernel][geronimo] Method.getGeneric*() methods throw NPE for parametrized interface methods

    XMLWordPrintableJSON

Details

    Description

      Class Method methods getGenericParameterTypes(), getGenericReturnType() and toGenericString() throw NPE if called for a parametrized method in an interface.

      Here's the test demonstrating the problem:

      import java.lang.reflect.Method;
      public class Test {
      public static void main(String[] args) {
      boolean success = true;
      try {
      Method method = Sample.class.getMethods()[0];
      for (int i = 0; i < 5; i++) {
      try {
      switch

      { case 0: method.getGenericParameterTypes(); break; case 1: method.getGenericReturnType(); break; case 2: method.getGenericExceptionTypes(); break; case 3: method.getTypeParameters(); break; case 4: method.toGenericString(); break; }

      } catch (Exception e)

      { success = false; System.out.print("FAIL: "); e.printStackTrace(System.out); }

      }
      System.out.println(success ? "SUCCESS" : "FAILURE");
      } catch (Exception e)

      { System.out.print("ERROR: "); e.printStackTrace(System.out); }

      }
      }
      interface Sample {
      public <T extends Sample, E extends Throwable> T test(T param) throws E;
      }

      Output on RI:

      SUCCESS

      Output on Harmony:

      FAIL: java.lang.NullPointerException
      at org.apache.harmony.lang.reflect.support.AuxiliaryFinder.findTypeVariable(AuxiliaryFinder.java:293)
      at org.apache.harmony.lang.reflect.parser.Parser.getGenericParameterTypes(Parser.java:742)
      at java.lang.reflect.Method.getGenericParameterTypes(Method.java:110)
      at Test.main(Test.java:10)
      FAIL: java.lang.NullPointerException
      at org.apache.harmony.lang.reflect.support.AuxiliaryFinder.findTypeVariable(AuxiliaryFinder.java:293)
      at org.apache.harmony.lang.reflect.parser.Parser.getGenericReturnTypeImpl(Parser.java:447)
      at java.lang.reflect.Method.getGenericReturnType(Method.java:126)
      at Test.main(Test.java:12)
      FAIL: java.lang.NullPointerException
      at org.apache.harmony.lang.reflect.support.AuxiliaryFinder.findTypeVariable(AuxiliaryFinder.java:293)
      at org.apache.harmony.lang.reflect.parser.Parser.getGenericParameterTypes(Parser.java:742)
      at java.lang.reflect.Method.toGenericString(Method.java:150)
      at Test.main(Test.java:18)
      FAILURE

      This issue is critical as it prevents Geronimo Deployer from working on Harmony.

      Attachments

        1. Harmony-5622.patch
          29 kB
          Vasily Zakharov
        2. Harmony-5622.patch
          29 kB
          Vasily Zakharov

        Issue Links

          Activity

            People

              vmz Vasily Zakharov
              vmz Vasily Zakharov
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: