@NotNull private static Iterator<SitemapItem> sitemapIteratorWithoutFirst(SitemapItem item) { if (item.getItems().isEmpty()) { return Collections.<SitemapItem>emptyList().iterator(); } else { Iterator<SitemapItem> iterator = item.getItems().iterator(); if (iterator.hasNext()) { iterator.next(); } return iterator; } }
private static SitemapItem findContextNavigationStructureGroup(SitemapItem item, String requestPath) { if (Objects.equals(item.getType(), TYPE_STRUCTURE_GROUP) && requestPath.startsWith(item.getUrl().toLowerCase())) { // Check if there is a matching subitem, if yes, then return it for (SitemapItem subItem : item.getItems()) { final SitemapItem matchingSubItem = findContextNavigationStructureGroup(subItem, requestPath); if (matchingSubItem != null) { return matchingSubItem; } } // Otherwise return this matching item return item; } // No matching item return null; }
@Override public NavigationLinks getTopNavigationLinks(String requestPath, Localization localization) throws NavigationProviderException { final SitemapItem navigationModel = getNavigationModel(localization); return new NavigationLinks(createLinksForVisibleItems(navigationModel.getItems())); }
@Override public NavigationLinks getContextNavigationLinks(String requestPath, Localization localization) throws NavigationProviderException { final SitemapItem navigationModel = getNavigationModel(localization); final SitemapItem contextNavigationItem = findContextNavigationStructureGroup(navigationModel, requestPath); final List<Link> links = contextNavigationItem != null ? createLinksForVisibleItems(contextNavigationItem.getItems()) : Collections.emptyList(); return new NavigationLinks(links); }
private SitemapItem resolveLinks(SitemapItem sitemapItem, Localization localization) { sitemapItem.setUrl(linkResolver.resolveLink(sitemapItem.getUrl(), localization.getId())); for (SitemapItem subItem : sitemapItem.getItems()) { resolveLinks(subItem, localization); } return sitemapItem; }