]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix bookkeeping assertion error
authorIlia Motornyi <elmot@vaadin.com>
Fri, 30 Jun 2017 07:59:13 +0000 (10:59 +0300)
committerGitHub <noreply@github.com>
Fri, 30 Jun 2017 07:59:13 +0000 (10:59 +0300)
Fixes #9584

server/src/main/java/com/vaadin/data/provider/DataCommunicator.java
server/src/test/java/com/vaadin/data/provider/DataCommunicatorTest.java
shared/src/main/java/com/vaadin/shared/Range.java

index 0971c36755b0ca1120e94934a77214be05640e02..054e86ca8d22e2035a511faf57c900ab9cc73052 100644 (file)
@@ -185,6 +185,7 @@ public class DataCommunicator<T> extends AbstractExtension {
 
         @Override
         public void destroyAllData() {
+            droppedData.clear();
             activeData.clear();
             getKeyMapper().removeAll();
         }
index 1e75d5726368672a339de5c2b9df2188e2faf4cf..c6d80e6ab000607caa2beecba7ac6ad732ddd510 100644 (file)
@@ -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);
+    }
 }
index 49458d848b41da21885381d8f9a0c3f0fad0d443..3f670ca28cec1452c0ca98e3387404a585514e5b 100644 (file)
@@ -229,7 +229,7 @@ public final class Range implements Serializable {
     @Override
     public String toString() {
         return getClass().getSimpleName() + " [" + getStart() + ".." + getEnd()
-                + "[" + (isEmpty() ? " (empty)" : "");
+                + "]" + (isEmpty() ? " (empty)" : "");
     }
 
     @Override