You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Josh Canfield (JIRA)" <ji...@apache.org> on 2011/06/23 04:58:47 UTC

[jira] [Commented] (TAP5-1554) Tapestry fails on OpenJDK with a java.lang.reflect.GenericSignatureFormatError

    [ https://issues.apache.org/jira/browse/TAP5-1554?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13053621#comment-13053621 ] 

Josh Canfield commented on TAP5-1554:
-------------------------------------

PlasticClassImpl is generating invalid setter signatures in createAccessors so any code that uses @Property fails on openJDK.

It's generating invalid signature in both JDKs, but the OpenJDK implementation of the bean Introspector seems to be parsing the signature instead of using the compiled Method object to determine parameter types.

Turns out it's a typo, the raw field signature was used instead of the generated signature. 




> Tapestry fails on OpenJDK with a java.lang.reflect.GenericSignatureFormatError 
> -------------------------------------------------------------------------------
>
>                 Key: TAP5-1554
>                 URL: https://issues.apache.org/jira/browse/TAP5-1554
>             Project: Tapestry 5
>          Issue Type: Bug
>          Components: plastic, tapestry-core
>    Affects Versions: 5.3.0
>            Reporter: Josh Canfield
>            Assignee: Josh Canfield
>
> The Environment
> java version "1.6.0_20"
> OpenJDK Runtime Environment (IcedTea6 1.9.7) (6b20-1.9.7-0ubuntu1~10.04.1)
> OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)
> The Exception
> org.apache.tapestry5.ioc.internal.OperationException: Exception
> assembling root component of page admin/Index: Could not convert
> 'list' into a component parameter binding: Exception generating
> conduit for expression 'list':
> java.lang.reflect.GenericSignatureFormatError
> The Property:
> @Property
> private List<Config> list;
> The TML:
> <t:loop source="list" value="item">...</t:loop>
> The  meat of the exception.
> java.lang.reflect.GenericSignatureFormatError
>        at sun.reflect.generics.parser.SignatureParser.error(SignatureParser.java:121)
>        at sun.reflect.generics.parser.SignatureParser.parseFormalParameters(SignatureParser.java:462)
>        at sun.reflect.generics.parser.SignatureParser.parseMethodTypeSignature(SignatureParser.java:454)
>        at sun.reflect.generics.parser.SignatureParser.parseMethodSig(SignatureParser.java:159)
>        at sun.reflect.generics.repository.ConstructorRepository.parse(ConstructorRepository.java:55)
>        at sun.reflect.generics.repository.ConstructorRepository.parse(ConstructorRepository.java:43)
>        at sun.reflect.generics.repository.AbstractRepository.<init>(AbstractRepository.java:74)
>        at sun.reflect.generics.repository.GenericDeclRepository.<init>(GenericDeclRepository.java:48)
>        at sun.reflect.generics.repository.ConstructorRepository.<init>(ConstructorRepository.java:51)
>        at sun.reflect.generics.repository.MethodRepository.<init>(MethodRepository.java:46)
>        at sun.reflect.generics.repository.MethodRepository.make(MethodRepository.java:59)
>        at java.lang.reflect.Method.getGenericInfo(Method.java:112)
>        at java.lang.reflect.Method.getGenericParameterTypes(Method.java:300)
>        at java.beans.FeatureDescriptor.getParameterTypes(FeatureDescriptor.java:385)
>        at java.beans.MethodDescriptor.setMethod(MethodDescriptor.java:116)
>        at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:74)
>        at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:58)
>        at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1196)
>        at java.beans.Introspector.getBeanInfo(Introspector.java:423)
>        at java.beans.Introspector.getBeanInfo(Introspector.java:189)
>        at org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.buildAdapter(PropertyAccessImpl.java:87)
>        at org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl.getAdapter(PropertyAccessImpl.java:68)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira