diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-02-02 12:46:56 +0200 |
---|---|---|
committer | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-02-03 12:23:25 +0200 |
commit | 4b7b21d35cbf80ddfa6e16f62bc4ff65008a4cd5 (patch) | |
tree | 8a16cd09fd01eeb8e2f9be2ff63af66c7eeca302 /server/src | |
parent | e25dd72efe36de7e59780cda0de472c1183be028 (diff) | |
download | vaadin-framework-4b7b21d35cbf80ddfa6e16f62bc4ff65008a4cd5.tar.gz vaadin-framework-4b7b21d35cbf80ddfa6e16f62bc4ff65008a4cd5.zip |
Add simple data update support to DataProvider
This patch adds the option of updating an existing data object. Update
is done on the next client response to catch any possible changes before
and after the update is initiated.
Change-Id: I30ca4803dd7c47befcb8e5ae761860c09cbdb8bd
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/com/vaadin/server/communication/data/typed/DataProvider.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/server/src/com/vaadin/server/communication/data/typed/DataProvider.java b/server/src/com/vaadin/server/communication/data/typed/DataProvider.java index 9417d0a1f0..66489fe627 100644 --- a/server/src/com/vaadin/server/communication/data/typed/DataProvider.java +++ b/server/src/com/vaadin/server/communication/data/typed/DataProvider.java @@ -199,6 +199,7 @@ public class DataProvider<T> extends AbstractExtension { private Collection<TypedDataGenerator<T>> generators = new LinkedHashSet<TypedDataGenerator<T>>(); private boolean reset = false; + private final Set<T> updatedData = new HashSet<T>(); private Collection<T> data; private DataProviderClientRpc rpc; @@ -233,7 +234,19 @@ public class DataProvider<T> extends AbstractExtension { getRpcProxy(DataProviderClientRpc.class).resetSize(data.size()); pushData(0, data); reset = false; + updatedData.clear(); } + + if (updatedData.isEmpty()) { + return; + } + + JsonArray dataArray = Json.createArray(); + int i = 0; + for (T data : updatedData) { + dataArray.set(i++, getDataObject(data)); + } + rpc.updateData(dataArray); } /** @@ -369,4 +382,17 @@ public class DataProvider<T> extends AbstractExtension { markAsDirty(); } + /** + * Informs the DataProvider that a data object has been updated. + * + * @param data + * updated data object + */ + public void refresh(T data) { + if (updatedData.isEmpty()) { + markAsDirty(); + } + + updatedData.add(data); + } } |