private boolean isInvisibleItem(final HstSiteMapItem item, final String pageNotFound) { if (!item.isExplicitPath() || item.isContainerResource() || item.isHiddenInChannelManager()) { return true; } if (HstSiteMapUtils.getPath(item, null).equals(pageNotFound)) { return true; } return false; }
@Override public boolean isContainerResource() { if (Type.UNKNOWN == type) { if (RequestContextProvider.get() == null || mount == null ) { type = Type.CONTAINER_RESOURCE; } else if (!mount.isMapped()) { type = Type.MOUNT_RESOURCE; } else { final HstSiteMapItem hstSiteMapItem = resolveSiteMapItem(RequestContextProvider.get()); if (hstSiteMapItem == null || hstSiteMapItem.isContainerResource()) { type = Type.CONTAINER_RESOURCE; } else { type = Type.MOUNT_RESOURCE; } } } return Type.CONTAINER_RESOURCE == type; }
return; if (siteMapItem.isContainerResource() || siteMapItem.isHiddenInChannelManager()) { log.debug("Skip '{}' from page overview because represents container resource or is marked " + "explicitly to be hidden in channel manager", siteMapItem);
private void finishMatchingPhase(final HstMutableRequestContext requestContext) { requestContext.matchingFinished(); if (!requestContext.isCmsRequest()) { return; } final HttpSession session = requestContext.getServletRequest().getSession(false); if (session == null) { return; } final ResolvedSiteMapItem resolvedSiteMapItem = requestContext.getResolvedSiteMapItem(); // we must not set the CMS_REQUEST_RENDERING_MOUNT_ID on the http session in case the resolved sitemap item // is a 'container resource' : A container resource always matches the root mount, and loading an image, css, js // etc file should not (re)set the CMS_REQUEST_RENDERING_MOUNT_ID as it will break in case of concurrent requests // for a submount if container resource requests are also involved if (resolvedSiteMapItem == null || !resolvedSiteMapItem.getHstSiteMapItem().isContainerResource()) { session.setAttribute(ContainerConstants.CMS_REQUEST_RENDERING_MOUNT_ID, requestContext.getResolvedMount().getMount().getIdentifier()); session.setAttribute(ContainerConstants.RENDERING_HOST, requestContext.getRenderHost()); } }
public static String getLinkType(final HstRequestContext requestContext, final HstLink siteLink) { final HstSiteMapItem siteMapItem = siteLink.getHstSiteMapItem(); if (siteMapItem == null) { return "external"; } final String linkType; if (siteMapItem.isContainerResource()) { linkType = "resource"; } else { final Mount linkMount = siteLink.getMount(); if (linkMount != null && linkMount != requestContext.getResolvedMount().getMount().getParent()) { // this is a cross mount link since does not belong to the parent mount of the PageModelApi mount return "external"; } final String linkApplicationId = siteMapItem.getApplicationId(); // although this is the resolved sitemap item for the PAGE_MODEL_PIPELINE_NAME, it should resolve // to exactly the same hst sitemap item configuration node as the parent mount, hence we can compare // the application id. If there is *no* application id set for both site map items, the link type is // internal. *If* the SpaSitePipeline is configured on site map item level, a site map item *MUST* // have an application id to have correct indication of 'internal/external'. final String currentApplicationId = requestContext.getResolvedSiteMapItem().getHstSiteMapItem().getApplicationId(); linkType = Objects.equals(linkApplicationId, currentApplicationId) ? "internal" : "external"; } return linkType; }
containerResource = node.getValueProvider().getBoolean(SITEMAPITEM_PROPERTY_CONTAINER_RESOURCE); } else if(parentItem != null) { containerResource = parentItem.isContainerResource();
if (siteMapItem != null && siteMapItem.isContainerResource() && isCdnSupportedPipeline(siteMapItem.getNamedPipeline())) { log.debug("Using CDN host '{}' for container resource '{}'", mount.getVirtualHost().getCdnHost(), urlString);