From f5e2275e70a42817c4786657c385f8213ec365ee Mon Sep 17 00:00:00 2001 From: Teemu Suo-Anttila Date: Mon, 19 Oct 2015 14:43:06 +0300 Subject: Fix Grid NPE when deselecting already removed row (#19152) Change-Id: I1361c8099e9f4a95e991f4937a406c5e4db67027 --- .../components/grid/basicfeatures/GridBasicFeatures.java | 13 +++++++++++++ .../grid/basicfeatures/server/GridSelectionTest.java | 14 ++++++++++++++ 2 files changed, 27 insertions(+) (limited to 'uitest') diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java index 94ee3ef348..777f5f6775 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java @@ -1396,6 +1396,19 @@ public class GridBasicFeatures extends AbstractComponentTest { ds.removeAllItems(); } }, null); + + createClickAction("Remove selected rows", "Body rows", + new Command() { + @Override + public void execute(Grid c, String value, Object data) { + // Usually you'd deselect all the rows before removing + // them. It is done this way to test for #19152 + for (Object itemId : c.getSelectedRows()) { + ds.removeItem(itemId); + } + c.select(null); + } + }, null); } protected void createEditorActions() { diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSelectionTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSelectionTest.java index 8bf8639d76..44a632bc49 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSelectionTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridSelectionTest.java @@ -382,6 +382,20 @@ public class GridSelectionTest extends GridBasicFeaturesTest { selectAll.isSelected()); } + @Test + public void testRemoveSelectedRow() { + openTestURL(); + + setSelectionModelSingle(); + getGridElement().getCell(0, 0).click(); + + selectMenuPath("Component", "Body rows", "Remove selected rows"); + + assertFalse( + "Unexpected NullPointerException when removing selected rows", + logContainsText("Exception occured, java.lang.NullPointerException: null")); + } + private void waitUntilCheckBoxValue(final WebElement checkBoxElememnt, final boolean expectedValue) { waitUntil(new ExpectedCondition() { -- cgit v1.2.3