commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joe Littlejohn (JIRA)" <j...@apache.org>
Subject [jira] Commented: (EL-13) Boolean bean property not found due to Introspector limitation
Date Mon, 20 Aug 2007 13:17:30 GMT

    [ https://issues.apache.org/jira/browse/EL-13?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12521077
] 

Joe Littlejohn commented on EL-13:
----------------------------------

Re above comment from Henri Yandell:

Hopefully the unit test will prove that my diagnosis is correct.

I'm not sure of the value of WONTFIX'ing this. This is something that can easily be supported
without any backwards compatibility changes. For Boolean properties, an 'is' method makes
so much more sense than a 'get' method, so why not allow this? 

Other introspection engines
 - weblogic EL implementation
 - java.beans.PropertyDescriptor

*do* support this, so why shouldn't commons-el? If you check my code, there's nothing dirty
about it - i'm just using java.beans.PropertyDescriptor which finds the method as expected.

Hopefully you can find find it in your heart to include this for the good of mankind ;¬)

> Boolean bean property not found due to Introspector limitation
> --------------------------------------------------------------
>
>                 Key: EL-13
>                 URL: https://issues.apache.org/jira/browse/EL-13
>             Project: Commons EL
>          Issue Type: Bug
>    Affects Versions: 1.0
>         Environment: Windows XP, Java 1.5.0_07-b03, Tomcat 5.5.17
>            Reporter: Joe Littlejohn
>             Fix For: 1.1
>
>         Attachments: AdditionalIntrospection.java, AdditionalIntrospection.java, AdditionalIntrospection.java,
AdditionalIntrospection.java, AdditionalIntrospection.java, BeanInfoManagerTest.java, el_exception.txt
>
>
> There is a bug in the java.beans.Introspector which means that it cannot find
> the read method for a property of Boolean type (because it looks for the "get"
> prefix, not the "is" prefix). This is arguably the expected behaviour of the
> Introspector, however since the java.beans.PropertyDescriptor acts differently
> (it can identify the property read method), this inconsistency hints it's a bug.
> Also, with the advent of autoboxing, developers are supposed to be able to free
> themselves from primitive types.
> The commons EL library is affected by this bug, so using an interface like: -
> public interface Bean {
>     Boolean isEnabled();
> }
> and an expression like: -
> ${bean.enabled}
> fails with an ELException saying that the property could not be found (see
> attached log snippet).
> WebLogic does not suffer from this problem, presumably because they implement
> their own EL parser (don't use commons.el) which doesn't use the Introspector. I
> have written a suggested workaround for this problem which would allow the
> commons.el library to continue its use of the Introspector, but deal with this
> flaw (see attached). The AdditionalIntrospection could be used in the
> BeanInfoManager.initialise() method, like so: -
> PropertyDescriptor [] pds = mBeanInfo.getPropertyDescriptors ();
> pds = AdditionalIntrospection.findMissingMethods(mBeanClass, pds); // new step

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message