All,

We're getting ready to release 1.0.0.Alpha01 of the public API which aims to support all that is required for portal navigation. Whether that be creating a custom navigation menu or writing an application to administer navigation nodes of the portal. Pull request for implementation to merge to upstream can be found here https://github.com/gatein/gatein-portal/pull/324

Some quick highlights:

Simple access to navigation structure of portal
    Navigation navigation = PortalRequest.getInstance().getNavigation();
    Node rootNode = navigation.getRootNode(Nodes.visitChildren()); // Retrieves root node and loads it's children
Complete control on what is loaded
    Node rootNode = navigation.getNode(NodePath.path("foo", "bar"), Nodes.visitChildren()); // Retrieves the /foo/bar node and loads it's children
Refresh current node with backend
    navigation.refresh(rootNode)
Easy iteration
    for (Node child : rootNode)
Build in filtering
    Node filter = rootNode.filter().showDefault(); // Filters like the current navigation menu (based on if the current user has access to the page the node is pointing to)
    Node filter = rootNode.filter().showHasEdit(user).showVisibile(); // Same as above but instead of access permission, it checks edit permission

These are just some examples and I encourage anyone to check out the java docs http://gatein.github.com/gatein-api-java/ and the project on github https://github.com/gatein/gatein-api-java

- Nick