commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Niall Pemberton <niall.pember...@gmail.com>
Subject Re: [beanutils] beanutils library cannot invoke the correct accessor
Date Thu, 10 Jun 2010 14:28:17 GMT
On Sun, Jun 6, 2010 at 5:55 PM, Dimitris Tsitses <4.biz.etc@gmail.com> wrote:
> myProperty is of one type only. The overloaded setters are there only for convenience,
i.e., to convert to the type of myProperty before setting it. I don't think the JavaBeans
spec disallows that, if it did, that would mean that the JavaBeans spec undermines Java's
spec! (i.e., do you like method overloading? Well, you can't use it here!). That would of
course severally restrict JavaBeans usefulness.

Well you're wrong about this - if you go an read section "8.3 Design
Patterns for Properties" of the Java Bean Specification you will see
it specified a *pair" (i.e. getter & setter) of accessor methods for
properties.

http://java.sun.com/javase/technologies/desktop/javabeans/docs/spec.html

Niall

> On 2010-06-06, at 5:50 AM, James Carman wrote:
>
>> That violates the JavaBeans specification.  "myProperty" is supposed
>> to be of one type only.
>>
>> On Sat, Jun 5, 2010 at 10:02 PM, Dimitris Tsitses <4.biz.etc@gmail.com> wrote:
>>> Hi all, I'm trying to do something really simple but I can't seem to figure it
out, I hope someone can help.
>>>
>>> I have a simple bean:
>>>
>>>
>>> public class MyBean {
>>>        private ClassTypeA myProperty;
>>>
>>>        public void setMyProperty(ClassTypeA anObj) {
>>>                this.myProperty = anObj;
>>>        }
>>>        public void setMyProperty(ClassTypeB anObj) {
>>>                this.myProperty = Converter.convertBtoA(anObj);
>>>        }
>>>
>>> }
>>>
>>> If I invoke the setter by passing an instance of ClassTypeA, it works without
a problem:
>>> BeanUtils.setProperty(myBeanInst, "myProperty", instanceOfClassTypeA);
>>>
>>>
>>> However if I invoke the setter by passing an instance of ClassTypeB, I get an
exception and the setter is never actually called:
>>> BeanUtils.setProperty(myBeanInst, "myProperty", instanceOfClassTypeB);
>>> java.lang.IllegalArgumentException: Cannot invoke.. la la la - argument type
mismatch -
>>>
>>> I can't believe it is not possible to do that, I'm sure I'm just missing something.
Any help will be greatly appreciated.
>>>
>>> Many thanks
>>> Dimitris
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
>> For additional commands, e-mail: user-help@commons.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
> For additional commands, e-mail: user-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message