You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:21:28 UTC
[sling-org-apache-sling-testing-resourceresolver-mock] 23/26:
SLING-5007 resourceresolver-mock: listChildren broken for root path "/"
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 <ss...@apache.org>
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
"commits@sling.apache.org" <co...@sling.apache.org>.