[
https://issues.apache.org/jira/browse/TAP5-921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12836515#action_12836515
]
Peter Rietzler commented on TAP5-921:
-------------------------------------
java.beans.Introspector is there for a very long time and is not very good at
introspecting things, e.g. it does neither look into interfaces, nor does it
include interface hierarchies. We experienced the hell a lot of problems with
it, especially when you look at the static type (which may be an abstract or
interface type). Since you have to look at the static type, I think the
introspection must be done using the following steps:
1) Get all properties of the static type
2) Inspect all implemented interfaces (including those from the hierarchy) and
add properties that have not been added already before
3) Inspect all superinterfaces of all implemented interfaces and add properties
that have not been added already before
I think adding this behavior should be low risk since it will only add
additional properties to the current set of properties.
> Cannot reference property from property expression if backing type is
> abstract and property is defined in interface
> --------------------------------------------------------------------------------------------------------------------
>
> Key: TAP5-921
> URL: https://issues.apache.org/jira/browse/TAP5-921
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.1.0.5
> Reporter: Peter Rietzler
>
> Here is a simple example:
> public interface HasName {
> String getName();
> }
> public abstract class AbstractBean implements HasName {
> }
> public class TestPage {
> @Property
> private AbstractBean bean;
> public void onActivate() {
> bean = new AbstractBean() {
> public void setName(String name) {
> }
> };
> }
> }
> TestPage.tml
> ...
> <h1>${bean.name}</h1>
> ...
> Error message is:
> Exception assembling root component of page manager/tools/TestPage: Could not
> convert 'bean.name' into a component parameter binding: Class
> smarter.ecommerce.smeco.manager.pages.tools.AbstractBean does not contain a
> property named 'name' (within property expression 'bean.name'). Available
> properties: class, componentResources.
> Everything works fine if I change the bean class to:
> public abstract class AbstractBean implements HasName {
> public abstract String getName();
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.