RFR: 8324797: Code example in JavaDoc of ObservableValue#when doesn't compile

Kevin Rushforth kcr at openjdk.org
Sat Jan 27 17:18:47 UTC 2024


On Sat, 27 Jan 2024 15:23:50 GMT, Philippe Altherr <duke at openjdk.org> wrote:

>> 8324797: Code example in JavaDoc of ObservableValue#when doesn't compile
>
> I did a quick search to see if there other instances of the same problem under [jfx/modules...](https://github.com/openjdk/jfx/blob/master/modules/). I didn't find any but I noticed that [here](https://github.com/openjdk/jfx/blob/37d7561c390f706b9e711dd535580fe5ae76e879/modules/javafx.base/src/main/java/javafx/beans/value/ObservableValue.java#L160) and [here](https://github.com/openjdk/jfx/blob/37d7561c390f706b9e711dd535580fe5ae76e879/modules/javafx.base/src/main/java/javafx/beans/value/ObservableValue.java#L191) in the same file you have the same issue and avoid it by using a `var`, which looks cleaner. My fix should probably do the same.
> 
> Below is the current code of the example. None of the calls to `setValue` compile.
> 
> 
>      ObservableValue<Boolean> condition = new SimpleBooleanProperty(true);
>      ObservableValue<String> longLivedProperty = new SimpleStringProperty("A");
>      ObservableValue<String> whenProperty = longLivedProperty.when(condition);
> 
>      // observe whenProperty, which will in turn observe longLivedProperty
>      whenProperty.addListener((ov, old, current) -> System.out.println(current));
> 
>      longLivedProperty.setValue("B");  // "B" is printed
> 
>      condition.setValue(false);
> 
>      // After condition becomes false, whenProperty stops observing longLivedProperty; condition
>      // and whenProperty may now be eligible for GC despite being observed by the ChangeListener
> 
>      longLivedProperty.setValue("C");  // nothing is printed
>      longLivedProperty.setValue("D");  // nothing is printed
> 
>      condition.setValue(true);  // longLivedProperty is observed again, and "D" is printed

@paltherr Can you enable GitHub actions for your repo so that the next time you push a commit GitHub will run them? To do this, go to the "Actions" page in your repo and press the green "I understand my workflows..." button. It's very unlikely to be a problem for this sort of PR, but we ask everyone to do that.

> I have enabled workflows. I have also filed an issue but it looks like this will go through a review of its own: review ID : 9076496 :-( In retrospect, I should have added a link to this PR.

I took care of the bug. It is now visible as [JDK-8324797](https://bugs.openjdk.org/browse/JDK-8324797). You can update this PR title with the bug ID and move this PR out of draft.

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1325#issuecomment-1913187928
PR Comment: https://git.openjdk.org/jfx/pull/1325#issuecomment-1913259106


More information about the openjfx-dev mailing list