diff --git a/vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/grid/Grid.java b/vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/grid/Grid.java index 775decb61cd..a7b0e4cfb26 100755 --- a/vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/grid/Grid.java +++ b/vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/grid/Grid.java @@ -1356,6 +1356,8 @@ public void initialize() { private final CompositeDataGenerator gridDataGenerator; private final DataCommunicator dataCommunicator; + @SuppressWarnings("rawtypes") + private DataCommunicatorBuilder dataCommunicatorBuilder; private int nextColumnId = 0; @@ -1564,7 +1566,10 @@ public Grid(Class beanType) { * the data communicator builder type * @param * the GridArrayUpdater type + * @deprecated Override {@link #createDataCommunicator()} instead. This + * constructor will be removed in Vaadin 26. */ + @Deprecated(since = "25.3", forRemoval = true) protected > Grid( Class beanType, B dataCommunicatorBuilder) { this(beanType, dataCommunicatorBuilder, true); @@ -1597,7 +1602,10 @@ protected > * @param autoCreateColumns * when true, columns are created automatically for * the properties of the beanType + * @deprecated Override {@link #createDataCommunicator()} instead. This + * constructor will be removed in Vaadin 26. */ + @Deprecated(since = "25.3", forRemoval = true) protected > Grid( Class beanType, B dataCommunicatorBuilder, boolean autoCreateColumns) { @@ -1625,12 +1633,15 @@ protected > * the data communicator builder type * @param * the GridArrayUpdater type + * @deprecated Override {@link #createDataCommunicator()} instead. This + * constructor will be removed in Vaadin 26. */ - @SuppressWarnings("unchecked") + @Deprecated(since = "25.3", forRemoval = true) protected > Grid( int pageSize, B dataCommunicatorBuilder) { Objects.requireNonNull(dataCommunicatorBuilder, "Data communicator builder can't be null"); + this.dataCommunicatorBuilder = dataCommunicatorBuilder; arrayUpdater = createDefaultArrayUpdater(); gridDataGenerator = new CompositeDataGenerator<>(); gridDataGenerator.addDataGenerator(this::generateUniqueKeyData); @@ -1640,9 +1651,7 @@ protected > gridDataGenerator.addDataGenerator(this::generateDragData); gridDataGenerator.addDataGenerator(this::generateSelectableData); - dataCommunicator = dataCommunicatorBuilder.build(getElement(), - gridDataGenerator, (U) arrayUpdater, - this::getUniqueKeyProvider); + dataCommunicator = createDataCommunicator(); detailsManager = new DetailsManager(this); setPageSize(pageSize); @@ -1725,6 +1734,20 @@ protected void initConnector() { getElement()); } + /** + * Creates the {@link DataCommunicator} that this Grid uses to handle all + * data communication. + * + * @return the new data communicator + * + * @since 25.3 + */ + protected DataCommunicator createDataCommunicator() { + return dataCommunicatorBuilder.build(getElement(), + getCompositeDataGenerator(), getArrayUpdater(), + this::getUniqueKeyProvider); + } + /** * Builder for {@link DataCommunicator} object. * @@ -1733,7 +1756,11 @@ protected void initConnector() { * * @param * the ArrayUpdater type + * @deprecated Override {@link #createDataCommunicator()} instead. This + * class and the constructors that accept it will be removed in + * Vaadin 26. */ + @Deprecated(since = "25.3", forRemoval = true) protected static class DataCommunicatorBuilder implements Serializable { @@ -1753,6 +1780,7 @@ protected static class DataCommunicatorBuilder * communicator * @return the build data communicator object */ + @Deprecated(since = "25.3", forRemoval = true) protected DataCommunicator build(Element element, CompositeDataGenerator dataGenerator, U arrayUpdater, SerializableSupplier> uniqueKeyProviderSupplier) { @@ -4494,6 +4522,18 @@ protected GridArrayUpdater getArrayUpdater() { return arrayUpdater; } + /** + * Gets the {@link CompositeDataGenerator} that this Grid uses to generate + * data for the client side. + * + * @return the composite data generator + * + * @since 25.3 + */ + protected CompositeDataGenerator getCompositeDataGenerator() { + return gridDataGenerator; + } + /** * Callback which is called if a new data provider is set or any change * happen in the current data provider (an {@link DataChangeEvent} event is diff --git a/vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/treegrid/TreeGrid.java b/vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/treegrid/TreeGrid.java index b6e1951cb90..673ffeb23bd 100644 --- a/vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/treegrid/TreeGrid.java +++ b/vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/treegrid/TreeGrid.java @@ -96,7 +96,10 @@ public TreeGrid() { * @param dataCommunicatorBuilder * Builder for {@link DataCommunicator} implementation this Grid * uses to handle all data communication. + * @deprecated Override {@link #createDataCommunicator()} instead. This + * constructor will be removed in Vaadin 26. */ + @Deprecated(since = "25.3", forRemoval = true) protected TreeGrid(int pageSize, DataCommunicatorBuilder dataCommunicatorBuilder) { super(pageSize, dataCommunicatorBuilder); @@ -186,12 +189,16 @@ public TreeGrid(Class beanType, boolean autoCreateColumns) { * @param dataCommunicatorBuilder * Builder for {@link DataCommunicator} implementation this Grid * uses to handle all data communication. + * @deprecated Override {@link #createDataCommunicator()} instead. This + * constructor will be removed in Vaadin 26. */ + @Deprecated(since = "25.3", forRemoval = true) protected TreeGrid(Class beanType, DataCommunicatorBuilder dataCommunicatorBuilder) { this(beanType, dataCommunicatorBuilder, true); } + @Deprecated(since = "25.3", forRemoval = true) private TreeGrid(Class beanType, DataCommunicatorBuilder dataCommunicatorBuilder, boolean autoCreateColumns) {