diff options
-rw-r--r-- | server/src/main/java/com/vaadin/ui/Grid.java | 13 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java | 5 |
2 files changed, 15 insertions, 3 deletions
diff --git a/server/src/main/java/com/vaadin/ui/Grid.java b/server/src/main/java/com/vaadin/ui/Grid.java index a27130903e..843db35e16 100644 --- a/server/src/main/java/com/vaadin/ui/Grid.java +++ b/server/src/main/java/com/vaadin/ui/Grid.java @@ -1635,14 +1635,19 @@ public class Grid<T> extends AbstractSingleSelect<T> implements HasComponents { * the column value type * * @return the new column + * @throws IllegalArgumentException + * if the same identifier is used for multiple columns * * @see {@link AbstractRenderer} */ public <V> Column<T, V> addColumn(String identifier, Function<T, ? extends V> valueProvider, - AbstractRenderer<? super T, V> renderer) { - assert !columnKeys.containsKey(identifier) : "Duplicate identifier: " - + identifier; + AbstractRenderer<? super T, V> renderer) + throws IllegalArgumentException { + if (columnKeys.containsKey(identifier)) { + throw new IllegalArgumentException( + "Multiple columns with the same identifier: " + identifier); + } final Column<T, V> column = new Column<>( SharedUtil.camelCaseToHumanFriendly(identifier), valueProvider, @@ -1661,6 +1666,8 @@ public class Grid<T> extends AbstractSingleSelect<T> implements HasComponents { * the value provider * * @return the new column + * @throws IllegalArgumentException + * if the same identifier is used for multiple columns */ public Column<T, String> addColumn(String identifier, Function<T, String> valueProvider) { diff --git a/server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java b/server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java index 7c4af0b5bf..eec20e2b9d 100644 --- a/server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java +++ b/server/src/test/java/com/vaadin/tests/server/component/grid/GridTest.java @@ -74,4 +74,9 @@ public class GridTest { "Random Column Id", grid.getColumn("randomColumnId").getCaption()); } + + @Test(expected = IllegalArgumentException.class) + public void testGridMultipleColumnsWithSameIdentifier() { + grid.addColumn("foo", t -> t); + } } |