From b62869bfb112317fd2f5cdeaff954241b03b8191 Mon Sep 17 00:00:00 2001 From: Tatu Lund Date: Wed, 3 Nov 2021 14:01:48 +0200 Subject: feat: Add better API to configure maximum allowed rows (#12466) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Add better API to configure maximum allowed rows * Add unit test Co-authored-by: Olli Tietäväinen --- .../com/vaadin/data/provider/DataCommunicator.java | 18 ++++++++++++++---- .../com/vaadin/data/provider/DataCommunicatorTest.java | 8 ++++++++ 2 files changed, 22 insertions(+), 4 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 8d974c85d3..097cef622d 100644 --- a/server/src/main/java/com/vaadin/data/provider/DataCommunicator.java +++ b/server/src/main/java/com/vaadin/data/provider/DataCommunicator.java @@ -60,7 +60,7 @@ import elemental.json.JsonObject; public class DataCommunicator extends AbstractExtension { private Registration dataProviderUpdateRegistration; - private static final int MAXIMUM_ALLOWED_ROWS = 500; + private int maximumAllowedRows = 500; /** * Simple implementation of collection data provider communication. All data @@ -316,14 +316,24 @@ public class DataCommunicator extends AbstractExtension { } /** - * Set the maximum allowed rows to be fetched in one query. + * Get the maximum allowed rows to be fetched in one query. * * @return Maximum allowed rows for one query. * @since 8.14.1 */ protected int getMaximumAllowedRows() { - return MAXIMUM_ALLOWED_ROWS; - } + return maximumAllowedRows; + } + + /** + * Set the maximum allowed rows to be fetched in one query. + * + * @param maximumAllowedRows Maximum allowed rows for one query. + * @since + */ + public void setMaximumAllowedRows(int maximumAllowedRows) { + this.maximumAllowedRows = maximumAllowedRows; + } /** * Triggered when rows have been dropped from the client side cache. 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 ed681f298d..fda867eeef 100644 --- a/server/src/test/java/com/vaadin/data/provider/DataCommunicatorTest.java +++ b/server/src/test/java/com/vaadin/data/provider/DataCommunicatorTest.java @@ -322,4 +322,12 @@ public class DataCommunicatorTest { communicator.onRequestRows(0, communicator.getMaximumAllowedRows() + 10, 0, 0); } + + @Test + public void requestTooMuchRowsOverride() { + TestDataCommunicator communicator = new TestDataCommunicator(); + int maxRows = communicator.getMaximumAllowedRows(); + communicator.setMaximumAllowedRows(maxRows + 100); + communicator.onRequestRows(0, maxRows + 10, 0, 0); + } } -- cgit v1.2.3