This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.testing.resourceresolver-mock-1.1.10 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-resourceresolver-mock.git
commit 34bf185a8463b6be8a833105c836f45f4c5ed00c Author: Stefan Seifert <[email protected]> AuthorDate: Tue Sep 8 16:00:36 2015 +0000 SLING-5007 resourceresolver-mock: listChildren broken for root path "/" git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/mocks/resourceresolver-mock@1701828 13f79535-47bb-0310-9956-ffa450edef68 --- .../testing/resourceresolver/MockResourceResolver.java | 9 +++++---- .../resourceresolver/SlingCrudResourceResolverTest.java | 13 +++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java index 338eef4..34f7d7f 100644 --- a/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java +++ b/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java @@ -29,6 +29,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; @@ -207,18 +208,19 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso @Override public Iterator<Resource> listChildren(final Resource parent) { - final String prefixPath = parent.getPath() + "/"; + final String pathPrefix = "/".equals(parent.getPath()) ? "" : parent.getPath(); + final Pattern childPathMatcher = Pattern.compile("^" + Pattern.quote(pathPrefix) + "/[^/]+$"); final Map<String, Map<String, Object>> candidates = new LinkedHashMap<String, Map<String,Object>>(); synchronized ( this.resources ) { for(final Map.Entry<String, Map<String, Object>> e : this.resources.entrySet()) { - if (e.getKey().startsWith(prefixPath) && e.getKey().lastIndexOf('/') < prefixPath.length() ) { + if (childPathMatcher.matcher(e.getKey()).matches()) { if ( !this.deletedResources.contains(e.getKey()) ) { candidates.put(e.getKey(), e.getValue()); } } } for(final Map.Entry<String, Map<String, Object>> e : this.temporaryResources.entrySet()) { - if (e.getKey().startsWith(prefixPath) && e.getKey().lastIndexOf('/') < prefixPath.length() ) { + if (childPathMatcher.matcher(e.getKey()).matches()) { if ( !this.deletedResources.contains(e.getKey()) ) { candidates.put(e.getKey(), e.getValue()); } @@ -235,7 +237,6 @@ public class MockResourceResolver extends SlingAdaptable implements ResourceReso // part of Resource API 2.5.0 public Iterable<Resource> getChildren(final Resource parent) { return new Iterable<Resource>() { - @Override public Iterator<Resource> iterator() { return listChildren(parent); diff --git a/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java b/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java index b0ca80f..7cbe7e0 100644 --- a/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java +++ b/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java @@ -181,6 +181,19 @@ public class SlingCrudResourceResolverTest { } @Test + public void testListChildren_RootNode() throws IOException { + Resource resource1 = resourceResolver.getResource("/"); + + List<Resource> children = Lists.newArrayList(resource1.listChildren()); + assertEquals(1, children.size()); + assertEquals("test", children.get(0).getName()); + + children = Lists.newArrayList(resource1.getChildren()); + assertEquals(1, children.size()); + assertEquals("test", children.get(0).getName()); + } + + @Test public void testBinaryData() throws IOException { Resource resource1 = resourceResolver.getResource(testRoot.getPath() + "/node1"); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
