Move to JIRA [was: Re: [8u] API Request: RT-25613, ObservableValue should have a hasListener(listener) method]

Daniel Blaukopf daniel.blaukopf at oracle.com
Wed Jan 22 09:47:51 PST 2014


Hi Martin, Randahl, Tom, Richard, Tomas and Ali,

This is a productive discussion, but once we get to this level of detail JIRA is the place to have it, so that we don’t lose our record of it. Would you continue the discussion on https://javafx-jira.kenai.com/browse/RT-25613 ?

See https://wiki.openjdk.java.net/display/OpenJFX/Code+Reviews#CodeReviews-TechnicalDiscussionsandCodeReviews

Thanks,
Daniel

On Jan 22, 2014, at 7:23 PM, Stephen F Northover <steve.x.northover at oracle.com> wrote:

> If we add this API, I like addListener(InvalidationListener, boolean) better than ensureListener().
> 
> Steve
> 
> On 2014-01-22 8:20 AM, Ali Ebrahimi wrote:
>> I suggest adding another overload for addListener method taking boolean
>> parameter  "duplicateAllowed" or "duplicateNotAllowed".
>> 
>> 
>> On Wed, Jan 22, 2014 at 3:00 PM, Richard Bair <richard.bair at oracle.com>wrote:
>> 
>>>>> The default implementation (for Observable) would look like this:
>>>>> 
>>>>> public default void ensureListener(InvalidationListener listener) {
>>>>>    removeListener(listener);
>>>>>    addListener(listener);
>>>>> }
>>>>> 
>>>>> subclasses might do something more effective. The same would apply to
>>>>> ObservableValue and ChangeListener and Observable[List|Set|Map] and
>>>>> [List|Set|Map]ChangeListener.
>>>> Well this would destroy the order! I expect listeners to be called in
>>>> the correct order not?
>>> That’s a good point :-(
>>> 
>>>> Why doing a remove and not simply check if the
>>>> listener has already been added?
>>> Because there is no way to check, except in the implementation. From the
>>> Observable interface level, there is no way to a) force all implementations
>>> of the interface to implement the method correctly (without breaking source
>>> compatibility anyway), or b) to provide a reasonable default implementation.
>>> 
>>> Maybe this is one of those things we can’t fix on the Observable interface
>>> and just have to provide implementations of on our concrete properties.
>>> 
>>> Richard
> 



More information about the openjfx-dev mailing list