From b3ade570dbfed9cf074f333826ff5363a6db2a9c Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Sun, 13 Mar 2016 13:24:11 +0200 Subject: Ensure addItem(null) returns null Change-Id: I55d13a85d07e17a165aa6e78920c9ed3a5988f69 --- .../src/com/vaadin/data/util/ContainerHierarchicalWrapper.java | 3 +-- server/src/com/vaadin/data/util/IndexedContainer.java | 9 +++------ .../src/com/vaadin/data/util/AbstractContainerTestBase.java | 5 ++++- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/server/src/com/vaadin/data/util/ContainerHierarchicalWrapper.java b/server/src/com/vaadin/data/util/ContainerHierarchicalWrapper.java index 199d186fab..8590528f43 100644 --- a/server/src/com/vaadin/data/util/ContainerHierarchicalWrapper.java +++ b/server/src/com/vaadin/data/util/ContainerHierarchicalWrapper.java @@ -538,10 +538,9 @@ public class ContainerHierarchicalWrapper implements Container.Hierarchical, */ @Override public Item addItem(Object itemId) throws UnsupportedOperationException { - // Null ids are not accepted if (itemId == null) { - throw new NullPointerException("Container item id can not be null"); + return null; } final Item item = container.addItem(itemId); diff --git a/server/src/com/vaadin/data/util/IndexedContainer.java b/server/src/com/vaadin/data/util/IndexedContainer.java index b851baf674..c00dfe8e05 100644 --- a/server/src/com/vaadin/data/util/IndexedContainer.java +++ b/server/src/com/vaadin/data/util/IndexedContainer.java @@ -269,7 +269,9 @@ public class IndexedContainer extends public Item addItem(Object itemId) { Item item = internalAddItemAtEnd(itemId, new IndexedContainerItem( itemId), false); - if (!isFiltered()) { + if (item == null) { + return null; + } else if (!isFiltered()) { // always the last item fireItemAdded(size() - 1, itemId, item); } else if (passesFilters(itemId) && !containsId(itemId)) { @@ -726,11 +728,6 @@ public class IndexedContainer extends * the Item ID of the new Item. */ private IndexedContainerItem(Object itemId) { - - // Gets the item contents from the host - if (itemId == null) { - throw new NullPointerException(); - } this.itemId = itemId; } diff --git a/server/tests/src/com/vaadin/data/util/AbstractContainerTestBase.java b/server/tests/src/com/vaadin/data/util/AbstractContainerTestBase.java index 52acc5ab76..9071f5eb40 100644 --- a/server/tests/src/com/vaadin/data/util/AbstractContainerTestBase.java +++ b/server/tests/src/com/vaadin/data/util/AbstractContainerTestBase.java @@ -211,6 +211,9 @@ public abstract class AbstractContainerTestBase extends TestCase { // Add again Item item2 = container.addItem("foo"); Assert.assertNull(item2); + + // Null is not a valid itemId + Assert.assertNull(container.addItem(null)); } catch (UnsupportedOperationException e) { // Ignore contains which do not support addItem* } @@ -526,7 +529,7 @@ public abstract class AbstractContainerTestBase extends TestCase { /** * Override in subclasses to return false if the container getItem() method * returns a non-null value for an item that has been filtered out. - * + * * @return */ protected boolean isFilteredOutItemNull() { -- cgit v1.2.3