Info
- Vaadin Framework version: 8.10.5
- Web container name and version: Tomcat 8.5.55
Issue description
Re-selecting cached item after a dataprovider refresh
By dataprovider refresh I mean, clearing data from TreeData and adding data again
upon inspecting the the item returned by TreeGrid.asSingleSelect().getValue() I can verify that it's still the same cached item, when adding a small delay in the selection listener before printing the value, I do get the new item.
Steps to reproduce the issue
Here is the basic code setup I used to reproduce this issue
TreeData<Project> treeData = new TreeData<>();
treeData.addItems(getProjects(), Project::getProjects);
TreeDataProvider<Project> tdp = new TreeDataProvider<>(treeData);
treeGrid.setDataProvider(tdp);
layout.addComponents(treeGrid);
setContent(layout);
Button selectAndRefresh = new Button("Select and Refresh");
selectAndRefresh.addClickListener(e -> {
final Project cached = treeGrid.asSingleSelect().getValue();
logger.info("Cached value " + System.identityHashCode(cached));
tdp.getTreeData().clear();
tdp.getTreeData().addItems(getProjects(), Project::getProjects);
tdp.refreshAll();
treeGrid.setDataProvider(tdp);
treeGrid.asSingleSelect().select(cached);
});
treeGrid.addSelectionListener(selectionEvent -> {
new Thread(() -> {
// Adding the sleep here will give my my desired object
// try {
// Thread.sleep(3000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
logger.info("Selection listener " + System.identityHashCode(treeGrid.asSingleSelect().getValue()));
}).start();
});
Info
Issue description
Re-selecting cached item after a dataprovider refresh
upon inspecting the the item returned by
TreeGrid.asSingleSelect().getValue()I can verify that it's still the same cached item, when adding a small delay in the selection listener before printing the value, I do get the new item.Steps to reproduce the issue
Here is the basic code setup I used to reproduce this issue