Skip to content

Commit 57cb2a4

Browse files
fix: Make Flow Grid compatible with ASM versions older than 9 (#4615)
* SelectionMode changes for testing V24 CDI app with Payara * Simplifications * Use enhanced switch operator --------- Co-authored-by: Sascha Ißbrücker <sissbruecker@vaadin.com>
1 parent d6574d6 commit 57cb2a4

File tree

1 file changed

+31
-42
lines changed
  • vaadin-grid-flow-parent/vaadin-grid-flow/src/main/java/com/vaadin/flow/component/grid

1 file changed

+31
-42
lines changed

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

Lines changed: 31 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -318,60 +318,22 @@ public enum SelectionMode {
318318
*
319319
* @see GridSingleSelectionModel
320320
*/
321-
SINGLE {
322-
@Override
323-
protected <T> GridSelectionModel<T> createModel(Grid<T> grid) {
324-
return new AbstractGridSingleSelectionModel<T>(grid) {
325-
326-
@SuppressWarnings("unchecked")
327-
@Override
328-
protected void fireSelectionEvent(
329-
SelectionEvent<Grid<T>, T> event) {
330-
grid.fireEvent((ComponentEvent<Grid<T>>) event);
331-
}
332-
333-
@Override
334-
public void setDeselectAllowed(boolean deselectAllowed) {
335-
super.setDeselectAllowed(deselectAllowed);
336-
grid.getElement().setProperty("__deselectDisallowed",
337-
!deselectAllowed);
338-
}
339-
};
340-
}
341-
},
321+
SINGLE,
342322

343323
/**
344324
* Multiselection mode that maps to built-in
345325
* {@link SelectionModel.Multi}.
346326
*
347327
* @see GridMultiSelectionModel
348328
*/
349-
MULTI {
350-
@Override
351-
protected <T> GridSelectionModel<T> createModel(Grid<T> grid) {
352-
return new AbstractGridMultiSelectionModel<T>(grid) {
353-
354-
@SuppressWarnings("unchecked")
355-
@Override
356-
protected void fireSelectionEvent(
357-
SelectionEvent<Grid<T>, T> event) {
358-
grid.fireEvent((ComponentEvent<Grid<?>>) event);
359-
}
360-
};
361-
}
362-
},
329+
MULTI,
363330

364331
/**
365332
* Selection model that doesn't allow selection.
366333
*
367334
* @see GridNoneSelectionModel
368335
*/
369-
NONE {
370-
@Override
371-
protected <T> GridSelectionModel<T> createModel(Grid<T> grid) {
372-
return new GridNoneSelectionModel<>();
373-
}
374-
};
336+
NONE;
375337

376338
/**
377339
* Creates the selection model to use with this enum.
@@ -382,7 +344,34 @@ protected <T> GridSelectionModel<T> createModel(Grid<T> grid) {
382344
* the grid to create the selection model for
383345
* @return the selection model
384346
*/
385-
protected abstract <T> GridSelectionModel<T> createModel(Grid<T> grid);
347+
protected <T> GridSelectionModel<T> createModel(Grid<T> grid) {
348+
return switch (this) {
349+
case SINGLE -> new AbstractGridSingleSelectionModel<T>(grid) {
350+
@SuppressWarnings("unchecked")
351+
@Override
352+
protected void fireSelectionEvent(
353+
SelectionEvent<Grid<T>, T> event) {
354+
grid.fireEvent((ComponentEvent<Grid<T>>) event);
355+
}
356+
357+
@Override
358+
public void setDeselectAllowed(boolean deselectAllowed) {
359+
super.setDeselectAllowed(deselectAllowed);
360+
grid.getElement().setProperty("__deselectDisallowed",
361+
!deselectAllowed);
362+
}
363+
};
364+
case MULTI -> new AbstractGridMultiSelectionModel<T>(grid) {
365+
@SuppressWarnings("unchecked")
366+
@Override
367+
protected void fireSelectionEvent(
368+
SelectionEvent<Grid<T>, T> event) {
369+
grid.fireEvent((ComponentEvent<Grid<?>>) event);
370+
}
371+
};
372+
case NONE -> new GridNoneSelectionModel<>();
373+
};
374+
}
386375
}
387376

388377
/**

0 commit comments

Comments
 (0)