You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by "Chris Poulsen (JIRA)" <ji...@apache.org> on 2016/08/22 07:12:21 UTC
[jira] [Created] (TAP5-2560) Error in GenericsUtils affecting
property access
Chris Poulsen created TAP5-2560:
-----------------------------------
Summary: 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
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
(v6.3.4#6332)