/** * Internal validation method that can be called recursively. * * @param element * @param level * @return */ private int validateNavigation(NavigationElement element, int level) { assertNotNull("Level: " + level + " The given root element must not be null", element); assertNotNull("Level: " + level + " The node field within one of the navigation elements was null.", element.getNode()); assertNotNull("Level: " + level + " The uuid of the navigation element must not be null", element.getUuid()); assertEquals("Level: " + level + " The uuid of the navigation element and the nested node did not match.", element.getUuid(), element.getNode().getUuid()); int elements = 1; if (element.getChildren() != null) { if (element.getChildren().isEmpty()) { fail("Level: " + level + " The children field should never be empty. Instead it should be null to avoid it being serialized to JSON"); } for (NavigationElement child : element.getChildren()) { elements += validateNavigation(child, level++); } } return elements; }