You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2019/02/25 22:12:00 UTC

[jira] [Commented] (TAP5-2560) Error in GenericsUtils affecting property access

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

ASF subversion and git services commented on TAP5-2560:
-------------------------------------------------------

Commit 81c27804358d922e60446d6641a1f855c45eaa6f in tapestry-5's branch refs/heads/5.4.x from Thiago H. de Paula Figueiredo
[ https://gitbox.apache.org/repos/asf?p=tapestry-5.git;h=81c2780 ]

Revert "TAP5-2560: Error in GenericsUtils affecting property access"

This reverts commit 32fde0f8c38f89d596d78b7f2292b4a26958f484.


> Error in GenericsUtils affecting property access
> ------------------------------------------------
>
>                 Key: TAP5-2560
>                 URL: https://issues.apache.org/jira/browse/TAP5-2560
>             Project: Tapestry 5
>          Issue Type: Bug
>    Affects Versions: 5.4.1
>            Reporter: Chris Poulsen
>            Assignee: Thiago H. de Paula Figueiredo
>            Priority: Major
>         Attachments: generics-utils.patch
>
>
> There is an error somewhere in the GenericsUtils.resolve( TypeVariable typeVariable, Type containingType ) method.
> It resolves some type variables to their lower bound instead of the correct version.
> We have model classes that uses lots of generics and in some cases tapestry reports that a given property expression is invalid because some lower bound interface does not contain the property in the expression.
> I tried to see if I could find an easy fix, but ended up running out of time and simply replaced the bodies of the 5 resolution methods in the GenericsUtils with guava reflect code and then things started working as expected.
> The interface setup that gives the error looks like this:
> {code}
> public interface NonTranslatableContentUnit<T extends ContentData> {
>     T getContent();
> }
> public interface BinaryContentUnit<T extends BinaryContent> extends NonTranslatableContentUnit<T> {}
> public interface FileContentUnit extends BinaryContentUnit<FileContent> {}
> public interface ContentData {
>     isEmpty();
>     ...
> }
> public interface BinaryContent extends ContentData {
>     String getMimeType();
>     ...
> }   
> public interface FileContent extends BinaryContent {}
> {code}
> Then we have a property expression on a FileContentUnit like: "content.mimeType" and that fails with an error that says something like ContentData does not have a property MimeType.
> As far as I can tell the resolve(TypeVariable, ..) method fails to do anything sensible if the Type of the "containing class" is not an instance of ParameterizedType



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)