aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <teemusa@vaadin.com>2016-02-08 17:17:54 +0200
committerTeemu Suo-Anttila <teemusa@vaadin.com>2016-02-08 17:20:06 +0200
commit49354006f5ccabe98ce367034cdda9c2cae16b08 (patch)
treef1ab25ca94fa1f84f757e3b7d05366c80b668ea3
parentdb1d39b4cb2d39b9f041fc26d0493e4276639af1 (diff)
downloadvaadin-framework-49354006f5ccabe98ce367034cdda9c2cae16b08.tar.gz
vaadin-framework-49354006f5ccabe98ce367034cdda9c2cae16b08.zip
Move key mapper to super class and provide methods to customise it
Adds a note to create methods of data provider to remind the developer that the method is called from the constructor and should not depend anything initialised on init or in the subclass constructor. Change-Id: Ifb153d5e9ac382318f380e16a3552e316d8197d0
-rw-r--r--server/src/com/vaadin/server/communication/data/typed/DataProvider.java25
-rw-r--r--server/src/com/vaadin/server/communication/data/typed/SimpleDataProvider.java13
2 files changed, 27 insertions, 11 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 2c45c52ed5..320c1b60b7 100644
--- a/server/src/com/vaadin/server/communication/data/typed/DataProvider.java
+++ b/server/src/com/vaadin/server/communication/data/typed/DataProvider.java
@@ -181,6 +181,7 @@ public abstract class DataProvider<T> extends AbstractExtension {
protected DataSource<T> dataSource;
private DataChangeHandler<T> dataChangeHandler;
private DetachListener detachListener;
+ private DataKeyMapper<T> keyMapper;
protected DataProvider(DataSource<T> dataSource) {
addDataGenerator(handler);
@@ -189,6 +190,7 @@ public abstract class DataProvider<T> extends AbstractExtension {
registerRpc(createRpc());
dataChangeHandler = createDataChangeHandler();
this.dataSource.addDataChangeHandler(dataChangeHandler);
+ keyMapper = createKeyMapper();
}
@Override
@@ -238,6 +240,17 @@ public abstract class DataProvider<T> extends AbstractExtension {
}
/**
+ * Gets the {@link DataKeyMapper} used by this {@link DataProvider}. Key
+ * mapper can be used to map keys sent to the client-side back to their
+ * respective data objects.
+ *
+ * @return key mapper
+ */
+ public DataKeyMapper<T> getKeyMapper() {
+ return keyMapper;
+ }
+
+ /**
* Sends given collection of data objects to the client-side.
*
* @param firstIndex
@@ -313,14 +326,18 @@ public abstract class DataProvider<T> extends AbstractExtension {
}
/**
- * Gets the {@link DataKeyMapper} used by this {@link DataProvider}.
+ * Creates a {@link DataKeyMapper} to use with this {@link DataProvider}.
+ * <p>
+ * This method is called from the constructor.
*
* @return key mapper
*/
- protected abstract DataKeyMapper<T> getKeyMapper();
+ protected abstract DataKeyMapper<T> createKeyMapper();
/**
- * Creates a {@link DataRequestRpc} instance.
+ * Creates a {@link DataRequestRpc} used with this {@link DataProvider}.
+ * <p>
+ * This method is called from the constructor.
*
* @return data request rpc implementation
*/
@@ -328,6 +345,8 @@ public abstract class DataProvider<T> extends AbstractExtension {
/**
* Creates a {@link DataChangeHandler} to use with the {@link DataSource}.
+ * <p>
+ * This method is called from the constructor.
*
* @return data change handler
*/
diff --git a/server/src/com/vaadin/server/communication/data/typed/SimpleDataProvider.java b/server/src/com/vaadin/server/communication/data/typed/SimpleDataProvider.java
index c82ed119e5..2d40730530 100644
--- a/server/src/com/vaadin/server/communication/data/typed/SimpleDataProvider.java
+++ b/server/src/com/vaadin/server/communication/data/typed/SimpleDataProvider.java
@@ -65,9 +65,6 @@ public class SimpleDataProvider<T> extends DataProvider<T> {
private boolean reset = false;
private final Set<T> updatedData = new HashSet<T>();
- // TODO: Allow customizing the used key mapper
- private DataKeyMapper<T> keyMapper = new KeyMapper<T>();
-
/**
* Creates a new DataProvider with the given Collection.
*
@@ -105,11 +102,6 @@ public class SimpleDataProvider<T> extends DataProvider<T> {
updatedData.clear();
}
- @Override
- protected DataKeyMapper<T> getKeyMapper() {
- return keyMapper;
- }
-
/**
* Informs the DataProvider that a data object has been added. It is assumed
* to be the last object in the collection.
@@ -161,6 +153,11 @@ public class SimpleDataProvider<T> extends DataProvider<T> {
}
@Override
+ protected DataKeyMapper<T> createKeyMapper() {
+ return new KeyMapper<T>();
+ }
+
+ @Override
protected DataRequestRpc createRpc() {
return new SimpleDataRequestRpc();
}