Skip to content

Commit dbfb95a

Browse files
vaadin-botsissbrueckerTatuLundclaude
authored
fix: Change client selectAll update to use LinkedHashSet (CP: 25.1) (#9169) (#9175) (CP: 25.0) (#9178)
This PR cherry-picks changes from the original PR #9175 to branch 25.0. --- > This PR cherry-picks changes from the original PR #9169 to branch 25.1. > > --- > > > Fixes #9170 Co-authored-by: Sascha Ißbrücker <sissbruecker@vaadin.com> Co-authored-by: Tatu Lund <tatu@vaadin.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 2441b39 commit dbfb95a

2 files changed

Lines changed: 27 additions & 6 deletions

File tree

vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/grid/AbstractGridMultiSelectionModel.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ public void selectAll() {
224224
(Set<T>) getGrid().getDataCommunicator().getDataProvider()
225225
.fetch(getGrid().getDataCommunicator().buildQuery(0,
226226
Integer.MAX_VALUE))
227-
.collect(Collectors.toSet()),
227+
.collect(Collectors.toCollection(LinkedHashSet::new)),
228228
Collections.emptySet());
229229
selectionColumn.setSelectAllCheckboxState(true);
230230
selectionColumn.setSelectAllCheckboxIndeterminateState(false);
@@ -415,7 +415,9 @@ protected void clientSelectAll() {
415415
allItemsStream = dataProvider.fetch(getGrid().getDataCommunicator()
416416
.buildQuery(0, Integer.MAX_VALUE));
417417
}
418-
doUpdateSelection(allItemsStream.collect(Collectors.toSet()),
418+
doUpdateSelection(
419+
allItemsStream
420+
.collect(Collectors.toCollection(LinkedHashSet::new)),
419421
Collections.emptySet(), true);
420422
selectionColumn.setSelectAllCheckboxState(true);
421423
selectionColumn.setSelectAllCheckboxIndeterminateState(false);

vaadin-grid-flow-parent/vaadin-grid-flow/src/test/java/com/vaadin/flow/component/grid/GridMultiSelectionModelTest.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.util.function.Function;
3232

3333
import org.junit.Before;
34-
import org.junit.Ignore;
3534
import org.junit.Test;
3635
import org.mockito.Mockito;
3736

@@ -310,9 +309,29 @@ public void deselectAll() {
310309
}
311310

312311
@Test
313-
@Ignore
314-
// Ignored because selectAll is not implemented yet
315-
// See https://github.com/vaadin/flow/issues/2546
312+
public void clientSelectAll_preservesDataProviderOrder() {
313+
var model = (AbstractGridMultiSelectionModel<Person>) selectionModel;
314+
model.clientSelectAll();
315+
316+
var value = model.getSelectedItems().stream().toList();
317+
318+
assertEquals(PERSON_A, value.get(0));
319+
assertEquals(PERSON_B, value.get(1));
320+
assertEquals(PERSON_C, value.get(2));
321+
}
322+
323+
@Test
324+
public void selectAll_preservesDataProviderOrder() {
325+
selectionModel.selectAll();
326+
327+
var value = selectionModel.getSelectedItems().stream().toList();
328+
329+
assertEquals(PERSON_A, value.get(0));
330+
assertEquals(PERSON_B, value.get(1));
331+
assertEquals(PERSON_C, value.get(2));
332+
}
333+
334+
@Test
316335
public void selectAll() {
317336
selectionModel.selectAll();
318337

0 commit comments

Comments
 (0)