in indexer-core/src/main/java/org/apache/maven/index/treeview/DefaultIndexTreeView.java [59:108]
public TreeNode listNodes(TreeViewRequest request) throws IOException {
// get the last path elem
String name;
if (!"/".equals(request.getPath())) {
if (request.getPath().endsWith("/")) {
name = request.getPath().substring(0, request.getPath().length() - 1);
} else {
name = request.getPath();
}
name = name.substring(name.lastIndexOf('/') + 1);
// root is "/"
if (!name.equals("/") && name.endsWith("/")) {
name = name.substring(0, name.length() - 1);
}
} else {
name = "/";
}
// the root node depends on request we have, so let's see
TreeNode result = request.getFactory().createGNode(this, request, request.getPath(), name);
if (request.hasFieldHints()) {
listChildren(result, request, null);
} else {
// non hinted way, the "old" way
if ("/".equals(request.getPath())) {
// get root groups and finish
Set<String> rootGroups = request.getIndexingContext().getRootGroups();
for (String group : rootGroups) {
if (group.length() > 0) {
result.getChildren()
.add(request.getFactory()
.createGNode(this, request, request.getPath() + group + "/", group));
}
}
} else {
Set<String> allGroups = request.getIndexingContext().getAllGroups();
listChildren(result, request, allGroups);
}
}
return result;
}