From 7cd94ce0b02bb4ecd7826283d3928e3a66e39301 Mon Sep 17 00:00:00 2001 From: Tobse <1190109+TobseF@users.noreply.github.com> Date: Wed, 27 Mar 2019 18:59:08 +0100 Subject: Fix NPE in v7 compatibility Grid during datasource rebind (#11473) Add DataChangeHandler removal in v7 Grid just as in v8 Grid. Adding tests to the fix to verify, that NPE is not thrown. --- .../src/main/java/com/vaadin/v7/client/widgets/Grid.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'compatibility-client/src/main/java/com/vaadin') diff --git a/compatibility-client/src/main/java/com/vaadin/v7/client/widgets/Grid.java b/compatibility-client/src/main/java/com/vaadin/v7/client/widgets/Grid.java index 631f3bdb65..1d2f88f570 100755 --- a/compatibility-client/src/main/java/com/vaadin/v7/client/widgets/Grid.java +++ b/compatibility-client/src/main/java/com/vaadin/v7/client/widgets/Grid.java @@ -4152,6 +4152,7 @@ public class Grid extends ResizeComposite implements HasSelectionHandlers, * on initialization, but not after that. */ private DataSource dataSource; + private Registration changeHandler; /** * Currently available row range in DataSource. @@ -7023,12 +7024,13 @@ public class Grid extends ResizeComposite implements HasSelectionHandlers, selectionModel.reset(); - if (this.dataSource != null) { - this.dataSource.addDataChangeHandler((DataChangeHandler) null); + if (changeHandler != null) { + changeHandler.remove(); + changeHandler = null; } this.dataSource = dataSource; - dataSource.addDataChangeHandler(new DataChangeHandler() { + changeHandler = dataSource.addDataChangeHandler(new DataChangeHandler() { @Override public void dataUpdated(int firstIndex, int numberOfItems) { escalator.getBody().refreshRows(firstIndex, numberOfItems); -- cgit v1.2.3