From 32cfd092800685e59b8a7b3862aafd7854f9e939 Mon Sep 17 00:00:00 2001 From: Denis Date: Wed, 8 Feb 2017 15:45:20 +0200 Subject: Provide a convenience method to get items set via setItems(). Fixes #8357 --- .../main/java/com/vaadin/data/HasDataProvider.java | 7 --- .../com/vaadin/data/HasFilterableDataProvider.java | 7 --- server/src/main/java/com/vaadin/data/HasItems.java | 66 +++++++++++++++++++++- .../com/vaadin/data/provider/ListDataProvider.java | 9 +++ 4 files changed, 74 insertions(+), 15 deletions(-) (limited to 'server/src/main/java/com') diff --git a/server/src/main/java/com/vaadin/data/HasDataProvider.java b/server/src/main/java/com/vaadin/data/HasDataProvider.java index 0dc0fc1c2c..c853f5c092 100644 --- a/server/src/main/java/com/vaadin/data/HasDataProvider.java +++ b/server/src/main/java/com/vaadin/data/HasDataProvider.java @@ -36,13 +36,6 @@ import com.vaadin.data.provider.DataProvider; */ public interface HasDataProvider extends HasItems { - /** - * Returns the source of data items used by this listing. - * - * @return the data provider, not null - */ - public DataProvider getDataProvider(); - /** * Sets the data provider for this listing. The data provider is queried for * displayed items as needed. diff --git a/server/src/main/java/com/vaadin/data/HasFilterableDataProvider.java b/server/src/main/java/com/vaadin/data/HasFilterableDataProvider.java index 4d2964b2e5..e84349c794 100644 --- a/server/src/main/java/com/vaadin/data/HasFilterableDataProvider.java +++ b/server/src/main/java/com/vaadin/data/HasFilterableDataProvider.java @@ -37,13 +37,6 @@ import com.vaadin.server.SerializableFunction; */ public interface HasFilterableDataProvider extends HasItems { - /** - * Returns the source of data items used by this listing. - * - * @return the data provider, not null - */ - public DataProvider getDataProvider(); - /** * Sets the data provider for this listing. The data provider is queried for * displayed items as needed. diff --git a/server/src/main/java/com/vaadin/data/HasItems.java b/server/src/main/java/com/vaadin/data/HasItems.java index 16ae8a2d25..03e85be6fd 100644 --- a/server/src/main/java/com/vaadin/data/HasItems.java +++ b/server/src/main/java/com/vaadin/data/HasItems.java @@ -22,6 +22,8 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import com.vaadin.data.provider.BackEndDataProvider; +import com.vaadin.data.provider.DataProvider; +import com.vaadin.data.provider.ListDataProvider; import com.vaadin.ui.Component; /** @@ -33,9 +35,33 @@ import com.vaadin.ui.Component; * the type of the displayed item */ public interface HasItems extends Component, Serializable { + + /** + * Returns the source of data items used by this listing. + * + * @return the data provider, not null + */ + public DataProvider getDataProvider(); + /** * Sets the data items of this component provided as a collection. *

+ * The provided items are wrapped into a {@link ListDataProvider} and this + * instance is used as a data provider for the + * {@link #setDataProvider(DataProvider)} method. It means that the items + * collection can be accessed later on via + * {@link ListDataProvider#getItems()}: + * + *

+     * 
+     * HasDataProvider listing = new CheckBoxGroup<>();
+     * listing.setItems(Arrays.asList("a","b"));
+     * ...
+     * 
+     * Collection collection = ((ListDataProvider)listing.getDataProvider()).getItems();
+     * 
+     * 
+ *

* The provided collection instance may be used as-is. Subsequent * modification of the collection might cause inconsistent data to be shown * in the component unless it is explicitly instructed to read the data @@ -49,7 +75,26 @@ public interface HasItems extends Component, Serializable { /** * Sets the data items of this listing. - * + *

+ * The provided items are wrapped into a {@link ListDataProvider} and this + * instance is used as a data provider for the + * {@link #setDataProvider(DataProvider)} method. It means that the items + * collection can be accessed later on via + * {@link ListDataProvider#getItems()}: + * + *

+     * 
+     * HasDataProvider listing = new CheckBoxGroup<>();
+     * listing.setItems(Arrays.asList("a","b"));
+     * ...
+     * 
+     * Collection collection = ((ListDataProvider)listing.getDataProvider()).getItems();
+     * 
+     * 
+ *

+ * + * @see #setItems(Collection) + * * @param items * the data items to display */ @@ -65,6 +110,25 @@ public interface HasItems extends Component, Serializable { * instead of its array and Collection variations, doesn't save any memory. * If you have a large data set to bind, using a lazy data provider is * recommended. See {@link BackEndDataProvider} for more info. + *

+ * The provided items are wrapped into a {@link ListDataProvider} and this + * instance is used as a data provider for the + * {@link #setDataProvider(DataProvider)} method. It means that the items + * collection can be accessed later on via + * {@link ListDataProvider#getItems()}: + * + *

+     * 
+     * HasDataProvider listing = new CheckBoxGroup<>();
+     * listing.setItems(Arrays.asList("a","b"));
+     * ...
+     * 
+     * Collection collection = ((ListDataProvider)listing.getDataProvider()).getItems();
+     * 
+     * 
+ *

+ * + * @see #setItems(Collection) * * @param streamOfItems * the stream of data items to display, not {@code null} diff --git a/server/src/main/java/com/vaadin/data/provider/ListDataProvider.java b/server/src/main/java/com/vaadin/data/provider/ListDataProvider.java index b452a16383..039366418a 100644 --- a/server/src/main/java/com/vaadin/data/provider/ListDataProvider.java +++ b/server/src/main/java/com/vaadin/data/provider/ListDataProvider.java @@ -72,6 +72,15 @@ public class ListDataProvider sortOrder = null; } + /** + * Returns the underlying data items. + * + * @return the underlying data items + */ + public Collection getItems() { + return backend; + } + @Override public Stream fetch(Query> query) { Stream stream = getFilteredStream(query); -- cgit v1.2.3