diff options
author | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-02-08 17:17:54 +0200 |
---|---|---|
committer | Teemu Suo-Anttila <teemusa@vaadin.com> | 2016-02-08 17:20:06 +0200 |
commit | 49354006f5ccabe98ce367034cdda9c2cae16b08 (patch) | |
tree | f1ab25ca94fa1f84f757e3b7d05366c80b668ea3 | |
parent | db1d39b4cb2d39b9f041fc26d0493e4276639af1 (diff) | |
download | vaadin-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.java | 25 | ||||
-rw-r--r-- | server/src/com/vaadin/server/communication/data/typed/SimpleDataProvider.java | 13 |
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(); } |