[ https://issues.apache.org/jira/browse/TAP5-1548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14046858#comment-14046858 ]
ASF subversion and git services commented on TAP5-1548: ------------------------------------------------------- Commit af6518b97e1ef307e64c1664115d67345a68d274 in tapestry-5's branch refs/heads/master from [~thiagohp] [ https://git-wip-us.apache.org/repos/asf?p=tapestry-5.git;h=af6518b ] TAP5-1885: Error in PropertyAccess service TAP5-1548: Property expressions fails when using a supertype that implements an interface with a matching method > Property expressions fails when using a supertype that implements an > interface with a matching method > ----------------------------------------------------------------------------------------------------- > > Key: TAP5-1548 > URL: https://issues.apache.org/jira/browse/TAP5-1548 > Project: Tapestry 5 > Issue Type: Bug > Components: tapestry-core > Affects Versions: 5.2 > Reporter: Robert Zeigler > Assignee: Thiago H. de Paula Figueiredo > Labels: month-of-tapestry > Fix For: 5.4 > > Attachments: generics.bug1demo.tgz > > > Given: > public interface Baz { > String getBar(); > } > public class AbstractFoo implements Baz { > private String bar; > public String getBar() { return bar; } > public void setBar(String bar) { this.bar =bar; } > } > public class Foo extends AbstractFoo {} > public class AComponent { > @Parameter > @Property > private AbstractFoo foo; > } > .tml: > <t:form><t:textfield value="foo.bar"/></t:form> > The update of the textfield will fail with "Failure writing parameter 'value' > of component Index:layout.acomponent.textfield: Expression 'foo.bar' for > class org.apache.tapestry5.generics1.components.AComponent is read-only". > Note that if you: > a) Specify Foo directly, it works > b) Remove the "getFoo" from interface "Baz", it works > c) add "setFoo" to the interface "Baz", it works. > I would expect Tapestry to find the property from the base class first. In > fact, it used to, in T5.1.0.4 at least, because I found this issue upgrading > a project from 5.1.0.4 to 5.2.5 and a component that used to work broke. In > that case, the component was using generic types (public class AComponent<T > extends AbstractFoo>), but the problem shows up with or without the generics. > > I can accept that if I specify the type of the property as "Baz", I will get > the above exception even if I pass in a "Foo" or "AbstractFoo". But using > the (read-only) property from the Baz interface when I explicitly declare the > property type to be AbstractFoo is unacceptable and a regression from > previous behavior. -- This message was sent by Atlassian JIRA (v6.2#6252)