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

    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

              People

              • Assignee:
                thiagohp Thiago H. de Paula Figueiredo
                Reporter:
                ongakugainochi Robert Zeigler
              • Votes:
                1 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: