This is an automated email from the ASF dual-hosted git repository. reschke pushed a commit to branch SLING-12799 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
commit 988beee2abaaa2e46f597e132a0df1a62ea96f19 Author: Julian Reschke <[email protected]> AuthorDate: Fri May 23 11:01:44 2025 +0100 SLING-12799: alias refactoring - check behavior when aliases both on node and jcr:content child node --- .../impl/mapping/AliasMapEntriesTest.java | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/AliasMapEntriesTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/AliasMapEntriesTest.java index 9157dee0..10aa16d1 100644 --- a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/AliasMapEntriesTest.java +++ b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/AliasMapEntriesTest.java @@ -324,6 +324,49 @@ public class AliasMapEntriesTest extends AbstractMappingMapEntriesTest { assertEquals(1, detectedConflictingAliases.get()); } + // checks that alias lists for "x" and "x/jcr:content" are merged + @Test + public void test_alias_on_parent_and_on_content_child() { + Resource parent = mock(Resource.class); + when(parent.getPath()).thenReturn("/parent"); + when(parent.getName()).thenReturn("parent"); + + final Resource node = mock(Resource.class); + when(node.getParent()).thenReturn(parent); + when(node.getPath()).thenReturn("/parent/node"); + when(node.getName()).thenReturn("node"); + when(node.getValueMap()).thenReturn(buildValueMap(ResourceResolverImpl.PROP_ALIAS, "alias")); + + final Resource content = mock(Resource.class); + when(content.getParent()).thenReturn(node); + when(content.getPath()).thenReturn("/parent/node/jcr:content"); + when(content.getName()).thenReturn("jcr:content"); + when(content.getValueMap()).thenReturn(buildValueMap(ResourceResolverImpl.PROP_ALIAS, "contentalias")); + + when(resourceResolver.findResources(anyString(), eq("JCR-SQL2"))) + .thenAnswer((Answer<Iterator<Resource>>) invocation -> { + if (invocation.getArguments()[0].toString().contains(ResourceResolverImpl.PROP_ALIAS)) { + return List.of(node, content).iterator(); + } else { + return Collections.emptyIterator(); + } + }); + + mapEntries.ah.initializeAliases(); + + // "/parent" has aliases both from "/parent/node" and "parent/node/jcr:content" + Map<String, Collection<String>> aliasMap = mapEntries.getAliasMap("/parent"); + assertNotNull(aliasMap); + assertTrue(aliasMap.containsKey("node")); + assertEquals(2, aliasMap.get("node").size()); + assertTrue("alias", aliasMap.get("node").containsAll(List.of("alias", "contentalias"))); + + // "/parent/node" has no aliases + Map<String, Collection<String>> nodeAliasMap = mapEntries.getAliasMap("/parent/node"); + assertNotNull(nodeAliasMap); + assertEquals(0, nodeAliasMap.size()); + } + @Test public void test_getActualContentPath() throws Exception {
