On Thu, 18 Jun 2020 16:30:42 GMT, Ambarish Rapte <[email protected]> wrote:
> Node.getPseudoClassStates() returns a new UnmodifiableObservableSet of > PseudoClassState on each call. So in order to > listen to any changes in this set, user must call the method > Node.getPseudoClassStates() only once and keep a strong > reference to the returned UnmodifiableObservableSet. > > So the fix is that the method Node.getPseudoClassStates() should return the > same UnmodifiableObservableSet on every > call. As the returned set is an UnmodifiableObservableSet, it will not have > any impact on it's usage. > > Added a small unit test. and, > Altered(minor) a test which was modified in > past(https://github.com/openjdk/jfx/commit/0ac98695a1b11443c342fad4f009d6e03a052522) > (https://github.com/openjdk/jfx/commit/62323e0a9c5817b33daa262d6914eba0e8d274ff) > along with this method and should be > updated in view of this change. The fix looks good, given that `FXCollections.unmodifiableObservableSet()` wraps an observable set listens to changes to the backing set. Can you add a test to ensure that the listeners are getting called? modules/javafx.graphics/src/test/java/test/javafx/scene/NodeTest.java line 168: > 167: assertSame("getPseudoClassStates() should always return the same > instance", > 168: node.getPseudoClassStates(), > node.getPseudoClassStates()); > 169: } To make this more clear, I recommend to store the expected value in a local variable and then call assert. ------------- PR: https://git.openjdk.java.net/jfx/pull/253
