You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vasily Zakharov (JIRA)" <ji...@apache.org> on 2008/03/20 11:35:25 UTC
[jira] Commented: (HARMONY-5622) [drlvm][kernel][geronimo]
Method.getGeneric*() methods throw NPE for parametrized interface methods
[ https://issues.apache.org/jira/browse/HARMONY-5622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12580724#action_12580724 ]
Vasily Zakharov commented on HARMONY-5622:
------------------------------------------
It seems the problem is at AuxiliaryFinder, lines 287-294:
287: while (klass != null) {
288: klass = klass.getDeclaringClass();
293: va = klass.getTypeParameters(); <-- NPE is thrown
294: if (va != null) {
Clearly enough, a null check like the one at line 287 should occur between lines 288 and 293.
> [drlvm][kernel][geronimo] Method.getGeneric*() methods throw NPE for parametrized interface methods
> ---------------------------------------------------------------------------------------------------
>
> Key: HARMONY-5622
> URL: https://issues.apache.org/jira/browse/HARMONY-5622
> Project: Harmony
> Issue Type: Bug
> Components: App-Oriented Bug Reports, DRLVM
> Affects Versions: 5.0M5
> Reporter: Vasily Zakharov
> Priority: Critical
>
> 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 (i) {
> 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.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.