RFR: 8089398: [ChoiceBox, ComboBox] throws NPE on setting value on null selectionModel [v5]
Jeanette Winzenburg
fastegal at openjdk.java.net
Tue Jul 27 10:01:36 UTC 2021
On Thu, 22 Jul 2021 19:49:44 GMT, Marius Hanl <mhanl at openjdk.org> wrote:
>> This PR fixes multiple NPEs in Choice-and ComboBox, when the selection model is null.
>>
>> ChoiceBox:
>> - Null check in **valueProperty()** listener
>>
>> ComboBox:
>> - Null check in **editableProperty()** listener
>> - Null check in **valueProperty()** listener
>> - Null check in **ComboBoxListViewSkin#updateValue()**
>> - Null check in **ComboBoxListViewSkin#layoutChildren()**
>> - Null check in **ComboBoxListViewSkin#createListView()**
>>
>> ~~The tests checks, that no NPE is printed to the console.
>> Some checks, that the set value is still displayed (either in the ComboBox button cell or the ChoiceBox display label)~~
>
> Marius Hanl has updated the pull request incrementally with two additional commits since the last revision:
>
> - removed unneeded assert and added comment
> - removed unneeded asserts and added another NPE fix.
there were two NPEs in createLists - one is fixed, the other not yet :) See the failing test in my comment
copying the comment, don't know if you could find it otherwise (any way to un-resolve a review conversation?)
>````
> // another test, exposing one of the NPEs in createList
> ComboBox<String> comboBox = new ComboBox<>(items);
> comboBox.setSelectionModel(null);
> installDefaultSkin(comboBox);
>
> the difference is that setup already installs a skin - so at the time of init the selectionModel still is available ;)
still failing
>
> The other access is in the listener to listView's selectedIndex .. it might be a bit tricky to expose in a test, I would go for a combo in a stage/loader, access the list and change its selectedIndex (maybe needs the popup open and/or firing a key onto it)
good fix and test :)
-------------
Changes requested by fastegal (Reviewer).
PR: https://git.openjdk.java.net/jfx/pull/557
More information about the openjfx-dev
mailing list