This is an automated email from the ASF dual-hosted git repository. joerghoh pushed a commit to branch SLING-13326 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
commit 157c72aacc393bd30d8bb864cb004a55d2152293 Author: Joerg Hoh <[email protected]> AuthorDate: Sun Oct 4 12:48:30 2026 +0200 SLING-13326 add failing unit test case --- .../impl/ResourceResolverImplTest.java | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java index abdb2427..46ef768d 100644 --- a/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java +++ b/src/test/java/org/apache/sling/resourceresolver/impl/ResourceResolverImplTest.java @@ -39,6 +39,7 @@ import org.apache.sling.api.resource.PersistenceException; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.resource.ResourceResolverFactory; +import org.apache.sling.api.resource.ResourceWrapper; import org.apache.sling.api.resource.SyntheticResource; import org.apache.sling.api.security.ResourceAccessSecurity; import org.apache.sling.resourceresolver.impl.providers.ResourceProviderHandler; @@ -776,6 +777,35 @@ public class ResourceResolverImplTest { Mockito.verify(resolver, times(2)).getParentResourceTypeInternal(any(Resource.class)); } + /** + * @see <a href="https://issues.apache.org/jira/browse/SLING-13326">SLING-13326</a> + */ + @Test + public void testGetParentResourceTypeWithOverriddenResourceType() { + final PathBasedResourceResolverImpl resolver = getPathBasedResourceResolver(); + + resolver.add(new SyntheticResourceWithSupertype( + resolver, "/foo/pages/special", "types/component", "foo/pages/base")); + resolver.add(new SyntheticResourceWithSupertype( + resolver, "/foo/pages/base", "types/component", "generic/pages/page")); + resolver.add(new SyntheticResource(resolver, "/generic/pages/page", "types/component")); + final Resource resource = resolver.add(new SyntheticResource(resolver, "/content/foo", "foo/pages/special")); + final Resource decorated = new ResourceWrapper(resource) { + @Override + public String getResourceType() { + return "foo/pages/base"; + } + }; + + assertEquals(resource.getPath(), decorated.getPath()); + assertEquals("foo/pages/base", resolver.getParentResourceType(resource)); + assertEquals( + "The cached parent type must reflect the wrapper's overridden resource type", + "generic/pages/page", + resolver.getParentResourceType(decorated)); + assertEquals("foo/pages/base", resolver.getParentResourceType(resource)); + } + private PathBasedResourceResolverImpl getPathBasedResourceResolver() { return getPathBasedResourceResolver(new String[] {""}); }
