[ 
https://issues.apache.org/jira/browse/BCEL-170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Mashkov updated BCEL-170:
--------------------------------

    Attachment: 
BCEL-170_Type_getArgumentTypes()_throws_ClassFormatException.patch

I recommend the following patch to fix ClassFormatException.

The main idea is that we have to consider generics in the signature during 
parsing.

To get generics work with Type it should be discussed later.
                
> Type.getArgumentTypes() throws ClassFormatException: Invalid method 
> signature: >;)
> ----------------------------------------------------------------------------------
>
>                 Key: BCEL-170
>                 URL: https://issues.apache.org/jira/browse/BCEL-170
>             Project: Commons BCEL
>          Issue Type: Bug
>          Components: Main
>    Affects Versions: 5.1, 5.2
>            Reporter: Hendrik Brummermann
>         Attachments: 
> BCEL-170_Type_getArgumentTypes()_throws_ClassFormatException.patch
>
>
> {code:java}
> for (Attribute attribute : method.getAttributes()) {
>     if (attribute instanceof Signature) {
>         Signature sig = (Signature) attribute;
>         System.out.println("Sig: " + sig.getSignature());
>         System.out.println("Ret: " + Type.getReturnType(sig.getSignature()));
>         System.out.println("Prm: " + 
> Type.getArgumentTypes(sig.getSignature()));
>     }
> }
> {code}
> {code}
> Input:     public SampleReturn<SampleMethodReturnType> 
>            method
>              (SampleMethodParameter<SampleMethodParameterType> param1) {
>               ...
>            }
> {code}
> Output:
> {code}
> Sig: 
> (Lnet/sf/sample/SampleMethodParameter<Lnet/sf/sample/SampleMethodParameterType;>;)Lnet/sf/sample/SampleReturn<Lnet/sf/plugfy/sample/SampleMethodReturnType;>;
> Ret: net.sf.sample.SampleReturn<Lnet.sf.sample.SampleMethodReturnType
> org.apache.bcel.classfile.ClassFormatException: Invalid method signature: 
> >;)Lnet/sf/sample/SampleReturn<Lnet/sf/sample/SampleMethodReturnType;>;
> at org.apache.bcel.classfile.Utility.typeOfSignature(Utility.java:978)
> at org.apache.bcel.generic.Type.getType(Type.java:169)
> at org.apache.bcel.generic.Type.getArgumentTypes(Type.java:230)
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to