Version 2
    import org.exoplatform.portal.mop.navigation.GenericScope;
    import org.exoplatform.portal.mop.navigation.Scope;
    import org.exoplatform.portal.mop.user.UserNavigation;
    import org.exoplatform.portal.mop.user.UserNode;
    import org.exoplatform.portal.mop.user.UserNodeFilterConfig;
    import org.exoplatform.portal.mop.user.UserPortal;
    import org.exoplatform.portal.mop.SiteType;
    import org.exoplatform.portal.mop.Visibility;
    import org.exoplatform.portal.webui.portal.UIPortal;
    import org.exoplatform.portal.webui.util.Util;
    import org.exoplatform.webui.application.WebuiRequestContext; 
    
    public class PortalNavigation{
    
        private final UserNodeFilterConfig NAVIGATION_FILTER_CONFIG;
        private static final int DEFAULT_LEVEL = 2;
        private Scope scope;
    
         public PortalNavigationImpl() {
            UserNodeFilterConfig.Builder filterConfigBuilder = UserNodeFilterConfig.builder();
            filterConfigBuilder.withReadWriteCheck().withVisibility(Visibility.DISPLAYED, new Visibility[] { Visibility.TEMPORAL });
            filterConfigBuilder.withTemporalCheck();
            this.NAVIGATION_FILTER_CONFIG = filterConfigBuilder.build();
            this.scope = GenericScope.treeShape(this.DEFAULT_LEVEL);
          }
    
          private UserNode getCurrentNavigation() throws SucursalVirtualException {
            UserNode rootNode = null;
            UserPortal userPortal = null;
            try {
                userPortal = Util.getPortalRequestContext().getUserPortalConfig().getUserPortal();
                UserNavigation userNavigation = Util.getUIPortal().getUserNavigation(); 
                rootNode = userPortal.getNode(userNavigation, this.scope, this.NAVIGATION_FILTER_CONFIG, null);            
            }
            catch (Exception ex){
                e.printStackTrace(); 
            }
            return rootNode;
          }
    
          public UserNode getSelectedNode() throws SucursalVirtualException
          {
            UIPortal uiPortal = Util.getUIPortal();
            if (uiPortal != null){
              try {
                return uiPortal.getSelectedUserNode();
            } catch (Exception e) {
                e.printStackTrace(); 
           }
            }
            return null;
          }
    
          public List<UserNode> getNavigations() throws SucursalVirtualException {
    
            WebuiRequestContext context = (WebuiRequestContext)WebuiRequestContext.getCurrentInstance();
            List<UserNode> nodes = new ArrayList<UserNode>();
            UserPortal userPortal;
            if (context.getRemoteUser() != null)
            {
              UserNode currRootNode = getCurrentNavigation();
              if (currRootNode != null)
              {
                nodes.add(currRootNode);
              }
            }
            else
            {
              userPortal = Util.getPortalRequestContext().getUserPortalConfig().getUserPortal();
              List<UserNavigation> navigations = userPortal.getNavigations();
              for (UserNavigation userNav : navigations)
              {
                if ( (userNav.getKey().getType().equals(SiteType.USER)))
                {
                  continue;
                }
    
                UserNode rootNode = userPortal.getNode(userNav, this.scope, this.NAVIGATION_FILTER_CONFIG, null);
                if (rootNode != null)
                {
                  nodes.add(rootNode);
                }
              }
            }
            return nodes;
          }
    
        public Scope getScope() {
            return scope;
        }
    
        public void setScope(Scope scope) {
            this.scope = scope;
        }
    
    }