harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Ellison <t.p.elli...@gmail.com>
Subject Re: [classlib][beans] RI inconsistency in EventHandler
Date Fri, 13 Oct 2006 22:16:37 GMT
That is strange behavior, since as you point out it does not set a
parametrized value, however, I wonder if there is some assumption that
the setFoo() method may be a mutator anyway, e.g. setDefaults() or
something like that?  Just guessing.

In this case it may be safer to follow the RI -- but I'm open to persuasion.

Regards,
Tim

Alexei Zakharov wrote:
> Hi all,
> 
> Let me disturb you with another boring "RI inconsistency in beans"
> –type of message. :) It seems I found a bug in RI.  In
> java.beans.EventHandler. I think RI incorrectly determines properties
> here. According to spec, common sense and even the RI's implementation
> of java.beans.Introspector the following bean should not contain any
> properties:
> 
>    public static class MyBean {
>        public void setProp1() {}
>    }
> 
> because "setProp1()" is not a valid setter method – it does not
> contain a new value to set.
> However, the following test fails on RI:
> 
> <---
> import java.beans.*;
> 
> public class TestBeanInfo1 {
>    public static class MyBean {
>        public void setProp1() {}
>    }
> 
>    public static void main(String argv[]) throws Exception {
>        MyBean bean = new MyBean();
>        // "prop1" is neither the name of writeable property nor the
> name of any public method
>        Object proxy = EventHandler.create(
>                PropertyChangeListener.class, bean, "prop1");
> 
>        // just to show that Introspector doesn't see the property
> with name "prop1"
>        PropertyDescriptor[] pds = Introspector.getBeanInfo(MyBean.class,
>                Introspector.USE_ALL_BEANINFO).getPropertyDescriptors();
>        for (int i = 0; i < pds.length; i++) {
>            System.out.println("Property found: " + pds[i].getName());
>        }
> 
>        // should throw exception
>        try {
>            ((PropertyChangeListener) proxy).propertyChange(
>                    new PropertyChangeEvent(bean, "prop1", "1", "2"));
>            System.out.println("FAIL");
>        } catch (Throwable t) {
>            System.out.println("PASS");
>        }
>    }
> }
> <---
> 
> So it determines "prop1" as a valid property. IMHO this behavior is
> inconsistent and we should not follow RI. But I like to hear opinions
> from the rest of the community.
> 
> Thanks,
> 
> 

-- 

Tim Ellison (t.p.ellison@gmail.com)
IBM Java technology centre, UK.


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message