code: private void buildData(String path, WebPage page, List<TreePageData> data, WebSiteRequest req) throws IOException, SQLException {
  		if(isVisible(page)) {
  			if(path.length()>0) path=path+'/'+page.getShortTitle();
  			else path=page.getShortTitle();
  			WebPage[] pages=page.getCachedPages(req);
  			int len=pages.length;
  			data.add(
  				new TreePageData(
  					len>0 ? (path+'/') : path,
  					req.getContextPath()+req.getURL(page),
  					page.getDescription()
  				)
  			);
  			for(int c=0; c<len; c++) buildData(path, pages[c], data, req);
  		}
  	}
docs: Recursively builds the list of all sites.