diff options
author | Tatu Lund <tatu@vaadin.com> | 2020-11-26 14:07:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-26 14:07:52 +0200 |
commit | cd1dccd153ecfcdcb73e4f59f8f24c49b3f97ed7 (patch) | |
tree | 2c2ceacb82229bec3aa7d48fddec90556f805297 | |
parent | eaa5bf545bdb9dace0276dea771128db911a866b (diff) | |
download | vaadin-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.java | 39 |
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 |