summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/src/main/java/com/vaadin/data/provider/DataCommunicator.java1
-rw-r--r--server/src/test/java/com/vaadin/data/provider/DataCommunicatorTest.java23
2 files changed, 24 insertions, 0 deletions
diff --git a/server/src/main/java/com/vaadin/data/provider/DataCommunicator.java b/server/src/main/java/com/vaadin/data/provider/DataCommunicator.java
index 0971c36755..054e86ca8d 100644
--- a/server/src/main/java/com/vaadin/data/provider/DataCommunicator.java
+++ b/server/src/main/java/com/vaadin/data/provider/DataCommunicator.java
@@ -185,6 +185,7 @@ public class DataCommunicator<T> extends AbstractExtension {
@Override
public void destroyAllData() {
+ droppedData.clear();
activeData.clear();
getKeyMapper().removeAll();
}
diff --git a/server/src/test/java/com/vaadin/data/provider/DataCommunicatorTest.java b/server/src/test/java/com/vaadin/data/provider/DataCommunicatorTest.java
index 1e75d57263..c6d80e6ab0 100644
--- a/server/src/test/java/com/vaadin/data/provider/DataCommunicatorTest.java
+++ b/server/src/test/java/com/vaadin/data/provider/DataCommunicatorTest.java
@@ -18,6 +18,8 @@ package com.vaadin.data.provider;
import java.util.Collections;
import java.util.concurrent.Future;
+import elemental.json.Json;
+import elemental.json.JsonArray;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
@@ -191,4 +193,25 @@ public class DataCommunicatorTest {
TEST_OBJECT, generator.generated);
}
+ @Test
+ public void testDestroyData() {
+ session.lock();
+ UI ui = new TestUI(session);
+ TestDataCommunicator communicator = new TestDataCommunicator();
+ TestDataProvider dataProvider = new TestDataProvider();
+ communicator.setDataProvider(dataProvider, null);
+ communicator.extend(ui);
+ // Put a test object into a cache
+ communicator.pushData(1, Collections.singletonList(TEST_OBJECT));
+ // Drop the test object from the cache
+ String key = communicator.getKeyMapper().key(TEST_OBJECT);
+ JsonArray keys = Json.createArray();
+ keys.set(0,key);
+ communicator.onDropRows(keys);
+ // Drop everything
+ communicator.dropAllData();
+ // The communicator does not have to throw exceptions during
+ // request finalization
+ communicator.beforeClientResponse(false);
+ }
}