Property expressions on properties that are covariant on a base class use the 
type of the base class property, not the covariant subclass
-----------------------------------------------------------------------------------------------------------------------------------------

                 Key: TAP5-1493
                 URL: https://issues.apache.org/jira/browse/TAP5-1493
             Project: Tapestry 5
          Issue Type: Bug
          Components: tapestry-core, tapestry-ioc
    Affects Versions: 5.2.5, 5.3.0
            Reporter: Howard M. Lewis Ship
            Priority: Critical


public abstract class AbstractFoo
{
 public abstract AbstractBar getBar();
}

public class Foo extends AbstractFoo
{
 public Bar getBar();
}


Here property bar is covariant; the subclass (Foo) changes the type of the 
return value (from AbstractBar to just Bar). Assuming that Bar is a subclass of 
AbstractBar, that's fine.

The bug is that in this circumstance, the PropertyConduitSource sees the type of
property "bar" of class Foo as AbstractBar, not Bar.

Interestingly, a little debugging showed that the getter method for property 
bar was "public AbstractBar Foo.getBar()" ... in other words, much like with 
Generics, covariant return types may be largely
a fiction of the compiler inserting the necessary casts in place.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to