TreeStructureUtil.addValue(addRoot, "something", "", "child3", "child31", "child313");
Collection<MetadataValue> returnedValues = startRoot.addChildren(addRoot.getChildren());
//Verify the tree
Metadata leaf = TreeStructureUtil.getPath(startRoot, "child1", "child11");
assertNotNull(leaf);
assertEquals("something", leaf.getValue());
leaf = TreeStructureUtil.getPath(startRoot, "child1", "child12");
assertNotNull(leaf);
assertEquals("something", leaf.getValue());
leaf = TreeStructureUtil.getPath(startRoot, "child2");
assertNotNull(leaf);
assertEquals("something", leaf.getValue());
leaf = TreeStructureUtil.getPath(startRoot, "child3", "child31", "child311");
assertNotNull(leaf);
assertEquals("something", leaf.getValue());
leaf = TreeStructureUtil.getPath(startRoot, "child3", "child31", "child312");
assertNotNull(leaf);
assertEquals("something", leaf.getValue());
leaf = TreeStructureUtil.getPath(startRoot, "child3", "child31", "child313");
assertNotNull(leaf);
assertEquals("something", leaf.getValue());
//Verify the leftovers
assertNotNull(returnedValues);
Metadata child2 = null;
Metadata child3 = null;
for (Metadata value : returnedValues) {
if (value.getName().equalsIgnoreCase("child2")) {
child2 = value;
} else if (value.getName().equalsIgnoreCase("child3")) {
child3 = value;
} else {
fail("More values returned than expected! " + value.getName() + ": " + value.getValue());
}
}
assertNotNull(child2);
assertEquals("something else", child2.getValue());
assertNotNull(child3);
Metadata child31 = ((MetadataParent)child3).getChild("child31");
assertNotNull(child31);
assertEquals("something else", ((MetadataParent)child31).getChild("child312").getValue());
}