This is an automated email from the ASF dual-hosted git repository. reschke pushed a commit to branch SLING-12759b in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
commit 8b5c5b49b1454959baeb0a2fc4d96e0c319bb21d Author: Julian Reschke <[email protected]> AuthorDate: Wed May 14 11:00:10 2025 +0100 SLING-12759: ResourceResolver: push 'non-optimized' alias handling from ResourceResolverImpl into AliasHandler --- .../impl/ResourceResolverImpl.java | 65 ++++++---------------- 1 file changed, 18 insertions(+), 47 deletions(-) diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java index a123f83c..d0c25541 100644 --- a/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java +++ b/src/main/java/org/apache/sling/resourceresolver/impl/ResourceResolverImpl.java @@ -927,55 +927,26 @@ public class ResourceResolverImpl extends SlingAdaptable implements ResourceReso // we do not have a child with the exact name, so we look for // a child, whose alias matches the childName - if (factory.getMapEntries().isOptimizeAliasResolutionEnabled()) { - final String parentPath = parent.getPath(); - logger.debug( - "getChildInternal: Optimize Alias Resolution is Enabled, looking up {} in {}", - childName, - parentPath); - - // optimized alias resolution: aliases are cached by MapEntries - final Optional<String> aliasedResourceName = - factory.getMapEntries().getAliasMap(parentPath).entrySet().stream() - .filter(e -> e.getValue().contains(childName)) - .findFirst() - .map(Map.Entry::getKey); - if (aliasedResourceName.isPresent()) { - // we know that MapEntries already has checked for valid aliases - final String aliasPath = parentPath + '/' + aliasedResourceName.get(); - final Resource aliasedChild = - getAbsoluteResourceInternal(parent, ResourceUtil.normalize(aliasPath), EMPTY_PARAMETERS, true); - logger.debug("getChildInternal: Found Resource {} with alias {} to use", aliasedChild, childName); - return aliasedChild; - } + final String parentPath = parent.getPath(); + logger.debug("getChildInternal: looking up {} in {}", childName, parentPath); + + final Optional<String> aliasedResourceName = factory.getMapEntries().getAliasMap(parentPath).entrySet().stream() + .filter(e -> e.getValue().contains(childName)) + .findFirst() + .map(Map.Entry::getKey); + + if (aliasedResourceName.isPresent()) { + // we know that MapEntries already has checked for valid aliases + final String aliasPath = parentPath + '/' + aliasedResourceName.get(); + final Resource aliasedChild = + getAbsoluteResourceInternal(parent, ResourceUtil.normalize(aliasPath), EMPTY_PARAMETERS, true); + logger.debug("getChildInternal: Found Resource {} with alias {} to use", aliasedChild, childName); + return aliasedChild; } else { - if (this.factory.isOptimizeAliasResolutionEnabled()) { - this.factory.getMapEntries().logDisableAliasOptimization(); - } - logger.debug("getChildInternal: Optimize Alias Resolution is Disabled"); - final Iterator<Resource> children = listChildren(parent); - while (children.hasNext()) { - child = children.next(); - if (!child.getPath().endsWith(JCR_CONTENT_LEAF)) { - final String[] aliases = ResourceResolverControl.getProperty(child, PROP_ALIAS, String[].class); - if (aliases != null) { - for (final String alias : aliases) { - if (childName.equals(alias)) { - logger.debug( - "getChildInternal: Found Resource {} with alias {} to use", child, childName); - final Resource aliasedChild = getAbsoluteResourceInternal( - parent, ResourceUtil.normalize(child.getPath()), EMPTY_PARAMETERS, true); - return aliasedChild; - } - } - } - } - } + // no match for the childName found + logger.debug("getChildInternal: Resource {} has no child {}", parent, childName); + return null; } - - // no match for the childName found - logger.debug("getChildInternal: Resource {} has no child {}", parent, childName); - return null; } /**
