From 42f7eba5e70c7ae2f3958f4e75e196dedfacc9c3 Mon Sep 17 00:00:00 2001 From: Adam Wagner Date: Thu, 27 Jul 2017 14:09:28 +0300 Subject: Add method to get parent in TreeData (#9701) --- server/src/main/java/com/vaadin/data/TreeData.java | 19 +++++++++++++++++++ .../vaadin/data/provider/TreeDataProviderTest.java | 8 ++++++++ 2 files changed, 27 insertions(+) (limited to 'server') diff --git a/server/src/main/java/com/vaadin/data/TreeData.java b/server/src/main/java/com/vaadin/data/TreeData.java index bebf312614..1a5b0e4d3a 100644 --- a/server/src/main/java/com/vaadin/data/TreeData.java +++ b/server/src/main/java/com/vaadin/data/TreeData.java @@ -367,6 +367,25 @@ public class TreeData implements Serializable { .unmodifiableList(itemToWrapperMap.get(item).getChildren()); } + /** + * Get the parent item for the given item. + * + * @param item + * the item for which to retrieve the parent item for + * @return parent item for the given item or {@code null} if the item is a + * root item. + * @throws IllegalArgumentException + * if the item does not exist in this structure + * @since 8.1.1 + */ + public T getParent(T item) { + if (!contains(item)) { + throw new IllegalArgumentException( + "Item '" + item + "' not in hierarchy"); + } + return itemToWrapperMap.get(item).getParent(); + } + /** * Moves an item to become a child of the given parent item. The new parent * item must exist in the hierarchy. Setting the parent to {@code null} diff --git a/server/src/test/java/com/vaadin/data/provider/TreeDataProviderTest.java b/server/src/test/java/com/vaadin/data/provider/TreeDataProviderTest.java index 8232d2fc45..3ff94e9988 100644 --- a/server/src/test/java/com/vaadin/data/provider/TreeDataProviderTest.java +++ b/server/src/test/java/com/vaadin/data/provider/TreeDataProviderTest.java @@ -80,6 +80,14 @@ public class TreeDataProviderTest Assert.assertTrue(data.getChildren(null).contains(item)); } + @Test + public void treeData_get_parent() { + StrBean root = rootData.get(0); + StrBean firstChild = data.getChildren(root).get(0); + Assert.assertNull(data.getParent(root)); + Assert.assertEquals(root, data.getParent(firstChild)); + } + @Test public void treeData_set_parent() { StrBean item1 = rootData.get(0); -- cgit v1.2.3