aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTatu Lund <tatu@vaadin.com>2020-11-26 14:07:52 +0200
committerGitHub <noreply@github.com>2020-11-26 14:07:52 +0200
commitcd1dccd153ecfcdcb73e4f59f8f24c49b3f97ed7 (patch)
tree2c2ceacb82229bec3aa7d48fddec90556f805297
parenteaa5bf545bdb9dace0276dea771128db911a866b (diff)
downloadvaadin-framework-cd1dccd153ecfcdcb73e4f59f8f24c49b3f97ed7.tar.gz
vaadin-framework-cd1dccd153ecfcdcb73e4f59f8f24c49b3f97ed7.zip
Replace function reference with anonymous class for serialization (#12137)
Lambdas and function references do not serialize See: https://vaadin.com/forum/thread/18462951/vaadin-8-stateful-session
-rw-r--r--server/src/main/java/com/vaadin/ui/components/grid/GridDragSource.java39
1 files changed, 20 insertions, 19 deletions
diff --git a/server/src/main/java/com/vaadin/ui/components/grid/GridDragSource.java b/server/src/main/java/com/vaadin/ui/components/grid/GridDragSource.java
index e6f8ed2926..3912326a35 100644
--- a/server/src/main/java/com/vaadin/ui/components/grid/GridDragSource.java
+++ b/server/src/main/java/com/vaadin/ui/components/grid/GridDragSource.java
@@ -85,7 +85,26 @@ public class GridDragSource<T> extends DragSourceExtension<Grid<T>> {
super(target);
// Create drag data generator
- dragDataGenerator = this::generateDragData;
+ dragDataGenerator = new DataGenerator<T>() {
+ /**
+ * Drag data generator. Appends drag data to row data json if generator
+ * function(s) are set by the user of this extension.
+ *
+ * @param item
+ * Row item for data generation.
+ * @param jsonObject
+ * Row data in json format.
+ */
+ @Override
+ public void generateData(Object item, JsonObject jsonObject) {
+ JsonObject generatedValues = Json.createObject();
+
+ generatorFunctions.forEach((type, generator) -> generatedValues
+ .put(type, generator.apply((T) item)));
+
+ jsonObject.put(GridDragSourceState.JSONKEY_DRAG_DATA, generatedValues);
+ }
+ };
// Add drag data generator to Grid
target.getDataCommunicator().addDataGenerator(dragDataGenerator);
@@ -149,24 +168,6 @@ public class GridDragSource<T> extends DragSourceExtension<Grid<T>> {
}
/**
- * Drag data generator. Appends drag data to row data json if generator
- * function(s) are set by the user of this extension.
- *
- * @param item
- * Row item for data generation.
- * @param jsonObject
- * Row data in json format.
- */
- private void generateDragData(T item, JsonObject jsonObject) {
- JsonObject generatedValues = Json.createObject();
-
- generatorFunctions.forEach((type, generator) -> generatedValues
- .put(type, generator.apply(item)));
-
- jsonObject.put(GridDragSourceState.JSONKEY_DRAG_DATA, generatedValues);
- }
-
- /**
* Sets a generator function for customizing drag data. The generated value
* will be accessible using the same {@code type} as the generator is set
* here. The function is executed for each item in the Grid during data