diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-10-19 14:43:06 +0300 |
---|---|---|
committer | Teemu Suo-Anttila <teemusa@vaadin.com> | 2015-10-26 14:01:41 +0000 |
commit | f5e2275e70a42817c4786657c385f8213ec365ee (patch) | |
tree | ae1bcf0ef1c40786b91c7253ff43e04d6268ed69 /server/src/com/vaadin | |
parent | ce161ac530bb9122e7a9c09d48b8f27218a8940b (diff) | |
download | vaadin-framework-f5e2275e70a42817c4786657c385f8213ec365ee.tar.gz vaadin-framework-f5e2275e70a42817c4786657c385f8213ec365ee.zip |
Fix Grid NPE when deselecting already removed row (#19152)
Change-Id: I1361c8099e9f4a95e991f4937a406c5e4db67027
Diffstat (limited to 'server/src/com/vaadin')
-rw-r--r-- | server/src/com/vaadin/server/communication/data/RpcDataProviderExtension.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/server/src/com/vaadin/server/communication/data/RpcDataProviderExtension.java b/server/src/com/vaadin/server/communication/data/RpcDataProviderExtension.java index e3c48f1ec0..fed31646f4 100644 --- a/server/src/com/vaadin/server/communication/data/RpcDataProviderExtension.java +++ b/server/src/com/vaadin/server/communication/data/RpcDataProviderExtension.java @@ -367,15 +367,17 @@ public class RpcDataProviderExtension extends AbstractExtension { for (int i = 0; i < newRange.length() && i + diff < itemIds.size(); ++i) { Object itemId = itemIds.get(i + diff); - rows.set(i, getRowData(getGrid().getColumns(), itemId)); + Item item = container.getItem(itemId); + + rows.set(i, getRowData(getGrid().getColumns(), itemId, item)); } rpc.setRowData(firstRowToPush, rows); activeItemHandler.addActiveItems(itemIds); } - private JsonObject getRowData(Collection<Column> columns, Object itemId) { - Item item = container.getItem(itemId); + private JsonObject getRowData(Collection<Column> columns, Object itemId, + Item item) { final JsonObject rowObject = Json.createObject(); for (DataGenerator dg : dataGenerators) { @@ -497,12 +499,16 @@ public class RpcDataProviderExtension extends AbstractExtension { return; } + List<Column> columns = getGrid().getColumns(); JsonArray rowData = Json.createArray(); int i = 0; for (Object itemId : itemIds) { if (activeItemHandler.getActiveItemIds().contains(itemId)) { - JsonObject row = getRowData(getGrid().getColumns(), itemId); - rowData.set(i++, row); + Item item = container.getItem(itemId); + if (item != null) { + JsonObject row = getRowData(columns, itemId, item); + rowData.set(i++, row); + } } } rpc.updateRowData(rowData); |