You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2015/09/08 18:00:36 UTC
svn commit: r1701828 - in
/sling/trunk/testing/mocks/resourceresolver-mock/src:
main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java
Author: sseifert
Date: Tue Sep 8 16:00:36 2015
New Revision: 1701828
URL: http://svn.apache.org/r1701828
Log:
SLING-5007 resourceresolver-mock: listChildren broken for root path "/"
Modified:
sling/trunk/testing/mocks/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
sling/trunk/testing/mocks/resourceresolver-mock/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java
Modified: sling/trunk/testing/mocks/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java?rev=1701828&r1=1701827&r2=1701828&view=diff
==============================================================================
--- sling/trunk/testing/mocks/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java (original)
+++ sling/trunk/testing/mocks/resourceresolver-mock/src/main/java/org/apache/sling/testing/resourceresolver/MockResourceResolver.java Tue Sep 8 16:00:36 2015
@@ -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 extend
@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 extend
// 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);
Modified: sling/trunk/testing/mocks/resourceresolver-mock/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/resourceresolver-mock/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java?rev=1701828&r1=1701827&r2=1701828&view=diff
==============================================================================
--- sling/trunk/testing/mocks/resourceresolver-mock/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java (original)
+++ sling/trunk/testing/mocks/resourceresolver-mock/src/test/java/org/apache/sling/testing/resourceresolver/SlingCrudResourceResolverTest.java Tue Sep 8 16:00:36 2015
@@ -181,6 +181,19 @@ public class SlingCrudResourceResolverTe
}
@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");