]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix data not being sent again when adding DataGenerators (#8947)
authorTeemu Suo-Anttila <tsuoanttila@users.noreply.github.com>
Tue, 28 Mar 2017 07:07:00 +0000 (10:07 +0300)
committerPekka Hyvönen <pekka@vaadin.com>
Tue, 28 Mar 2017 07:07:00 +0000 (10:07 +0300)
* Fix data not being sent again when adding DataGenerators

* Fix header component detaching, revert early header cleanup

client/src/main/java/com/vaadin/client/connectors/grid/ColumnConnector.java
server/src/main/java/com/vaadin/data/provider/DataCommunicator.java
server/src/main/java/com/vaadin/ui/components/grid/StaticSection.java
uitest/src/main/java/com/vaadin/tests/components/grid/GridAddColumn.java
uitest/src/test/java/com/vaadin/tests/components/grid/GridAddColumnTest.java

index 149ef4c1f94c2ac6cbc9acfc5f4e853ca825b6c2..bfc605ee2e546a700b80804cc44ce87ca3338d2b 100644 (file)
@@ -73,7 +73,12 @@ public class ColumnConnector extends AbstractExtensionConnector {
                 return null;
             }
         };
+
+        // Initially set a renderer
+        updateRenderer();
+
         getParent().addColumn(column, getState().internalId);
+
     }
 
     @SuppressWarnings("unchecked")
@@ -149,6 +154,7 @@ public class ColumnConnector extends AbstractExtensionConnector {
             // time to remove columns (and have problems with frozen columns)
             // before throwing everything away
             parent.removeColumn(column);
+            parent = null;
         }
         column = null;
     }
index 566c7c732f3bcfae8129665e2f1a11f84aef2a89..ae3c6f4cc1455569f48f59f6dd955485759168ed 100644 (file)
@@ -366,6 +366,9 @@ public class DataCommunicator<T> extends AbstractExtension {
     public void addDataGenerator(DataGenerator<T> generator) {
         Objects.requireNonNull(generator, "generator cannot be null");
         generators.add(generator);
+
+        // Make sure data gets generated when adding data generators.
+        reset();
     }
 
     /**
index dcf27fb3575481dbe1dd5328d8387966cefd112a..947be8f5223d195ce580264dae2c5f48f45390cd 100644 (file)
@@ -158,6 +158,7 @@ public abstract class StaticSection<ROW extends StaticSection.StaticRow<?>>
                         iterator.remove();
                     }
                 }
+                cell.detach();
             }
         }
 
index e771b9cc783d2ffc096b1c2ed360761bd042b07d..8846091512938e3eb885e9a1f83a379405d69d49 100644 (file)
@@ -1,18 +1,34 @@
 package com.vaadin.tests.components.grid;
 
+import com.vaadin.annotations.Widgetset;
 import com.vaadin.data.ValueProvider;
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
 import com.vaadin.ui.Grid;
 import com.vaadin.ui.Grid.Column;
 import com.vaadin.ui.Label;
+import com.vaadin.ui.Notification;
 import com.vaadin.ui.renderers.NumberRenderer;
 
+@Widgetset("com.vaadin.DefaultWidgetSet")
 public class GridAddColumn extends AbstractTestUI {
 
     @Override
     protected void setup(VaadinRequest request) {
         Grid<String> grid = new Grid<>();
+        createColumns(grid);
+        grid.setItems("a", "aa", "aaa");
+        addComponent(grid);
+
+        addComponent(new Button("Replace columns", e -> {
+            grid.removeAllColumns();
+            createColumns(grid);
+            Notification.show("Columns replaced.");
+        }));
+    }
+
+    private void createColumns(Grid<String> grid) {
         Column<String, String> col0 = grid.addColumn(ValueProvider.identity())
                 .setCaption("First column");
         grid.getDefaultHeaderRow().getCell(col0)
@@ -21,7 +37,5 @@ public class GridAddColumn extends AbstractTestUI {
         grid.addColumn(String::length);
         grid.addColumn(string -> -string.length());
         grid.addColumn(string -> new Object());
-        grid.setItems("a", "aa", "aaa");
-        addComponent(grid);
     }
 }
index ca5ad8ec50aeac3e5a1d76057972e2f47e94c1e4..e3595e7674ebac468949347ac079278de1691d50 100644 (file)
@@ -5,8 +5,10 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.vaadin.testbench.By;
+import com.vaadin.testbench.elements.ButtonElement;
 import com.vaadin.testbench.elements.GridElement;
 import com.vaadin.testbench.elements.GridElement.GridCellElement;
+import com.vaadin.testbench.elements.NotificationElement;
 import com.vaadin.tests.tb3.SingleBrowserTest;
 
 public class GridAddColumnTest extends SingleBrowserTest {
@@ -64,6 +66,19 @@ public class GridAddColumnTest extends SingleBrowserTest {
                 firstHeader.getText());
     }
 
+    @Test
+    public void replace_all_columns() {
+        $(ButtonElement.class).first().click();
+
+        // Verify button got clicked
+        Assert.assertTrue(isElementPresent(NotificationElement.class));
+        Assert.assertEquals("Columns replaced.",
+                $(NotificationElement.class).first().getText());
+
+        // Run default rendering test
+        columns_rendered_correctly();
+    }
+
     private void assertCellEquals(int rowIndex, int colIndex, String content) {
         Assert.assertEquals("Cell text should equal", content,
                 grid.getCell(rowIndex, colIndex).getText());