summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2015-10-19 14:43:06 +0300
committerTeemu Suo-Anttila <teemusa@vaadin.com>2015-10-26 14:01:41 +0000
commitf5e2275e70a42817c4786657c385f8213ec365ee (patch)
treeae1bcf0ef1c40786b91c7253ff43e04d6268ed69 /server
parentce161ac530bb9122e7a9c09d48b8f27218a8940b (diff)
downloadvaadin-framework-f5e2275e70a42817c4786657c385f8213ec365ee.tar.gz
vaadin-framework-f5e2275e70a42817c4786657c385f8213ec365ee.zip
Fix Grid NPE when deselecting already removed row (#19152)
Change-Id: I1361c8099e9f4a95e991f4937a406c5e4db67027
Diffstat (limited to 'server')
-rw-r--r--server/src/com/vaadin/server/communication/data/RpcDataProviderExtension.java16
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);