Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1548

Property expressions fails when using a supertype that implements an interface with a matching method

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      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.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            thiagohp Thiago Henrique De Paula Figueiredo
            ongakugainochi Robert Zeigler
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment