RFR: 8267505: {List, Set, Map}PropertyBase::bind should check against identity
Jose Pereda
jpereda at openjdk.java.net
Mon May 24 15:34:10 UTC 2021
On Mon, 24 May 2021 11:56:35 GMT, Jose Pereda <jpereda at openjdk.org> wrote:
> ListPropertyBase::bind, SetPropertyBase::bind, MapPropertyBase::bind have a check on whether a different instance of the observable is the same, and this PR changes that to check against identity.
>
> Tests are included.
Having a look at the `equals` implementation in ReadOnly{List/Set/Map}Property, it is oriented to check the contents of the collection. For the List case, for instance, `List::equals` javadoc clearly states that
> two lists are defined to be equal if they contain the same elements in the same order
While this makes sense in many cases, it doesn't for _binding_ a {List/Set/Map}PropertyBase, as we don't bind each collection's items one by one, but the collections themselves.
In this case, calling:
c.bind(a);
c.bind(b);
over two different collections, even if they have the exact same content, would necessary imply a change of observables, and the need to unbind first the old binding and update the observable/listener accordingly. If later on `b` is modified, but not `a`, it would be expected that `c` will react to those changes. However, that is not happening as `equals` is currently preventing it.
So I can't see a possible use case for this.
-------------
PR: https://git.openjdk.java.net/jfx/pull/516
More information about the openjfx-dev
mailing list