SLING-7838 : Bundle resource overrides listChildren
diff --git a/src/main/java/org/apache/sling/bundleresource/impl/BundleResource.java b/src/main/java/org/apache/sling/bundleresource/impl/BundleResource.java
index 4286c1e..8b0f70a 100644
--- a/src/main/java/org/apache/sling/bundleresource/impl/BundleResource.java
+++ b/src/main/java/org/apache/sling/bundleresource/impl/BundleResource.java
@@ -26,7 +26,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -298,11 +297,6 @@
return resourceUrl;
}
- @Override
- public Iterator<Resource> listChildren() {
- return new BundleResourceIterator(this);
- }
-
BundleResourceCache getBundle() {
return cache;
}
diff --git a/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java b/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java
index ef504a6..6e1b87a 100644
--- a/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java
+++ b/src/main/java/org/apache/sling/bundleresource/impl/BundleResourceProvider.java
@@ -157,8 +157,8 @@
public Iterator<Resource> listChildren(final ResolveContext<Object> ctx, final Resource parent) {
if (parent instanceof BundleResource && ((BundleResource)parent).getBundle() == this.cache) {
// bundle resources can handle this request directly when the parent
- // resource is in the same bundle as this provider.
- return ((BundleResource) parent).listChildren();
+ // resource is in the same bundle as this provider.
+ return new BundleResourceIterator((BundleResource) parent);
}
// ensure this provider may have children of the parent
diff --git a/src/test/java/org/apache/sling/bundleresource/impl/BundleResourceProviderTest.java b/src/test/java/org/apache/sling/bundleresource/impl/BundleResourceProviderTest.java
index fda8f59..aa51f21 100644
--- a/src/test/java/org/apache/sling/bundleresource/impl/BundleResourceProviderTest.java
+++ b/src/test/java/org/apache/sling/bundleresource/impl/BundleResourceProviderTest.java
@@ -202,13 +202,7 @@
Resource rsrc = provider.getResource(mock(ResolveContext.class), "/libs/foo", mock(ResourceContext.class), null);
assertNotNull(rsrc);
- List<String> rsrcChildren = getChildren(rsrc.listChildren());
- assertEquals(3, rsrcChildren.size());
- assertTrue(rsrcChildren.contains("/libs/foo/a"));
- assertTrue(rsrcChildren.contains("/libs/foo/b"));
- assertTrue(rsrcChildren.contains("/libs/foo/test"));
-
- rsrcChildren = getChildren(provider.listChildren(mock(ResolveContext.class), rsrc));
+ List<String> rsrcChildren = getChildren(provider.listChildren(mock(ResolveContext.class), rsrc));
assertEquals(3, rsrcChildren.size());
assertTrue(rsrcChildren.contains("/libs/foo/a"));
assertTrue(rsrcChildren.contains("/libs/foo/b"));
@@ -217,12 +211,6 @@
rsrc = provider.getResource(mock(ResolveContext.class), "/libs/foo/test", mock(ResourceContext.class), null);
assertNotNull(rsrc);
- rsrcChildren = getChildren(rsrc.listChildren());
- assertEquals(3, rsrcChildren.size());
- assertTrue(rsrcChildren.contains("/libs/foo/test/x"));
- assertTrue(rsrcChildren.contains("/libs/foo/test/y"));
- assertTrue(rsrcChildren.contains("/libs/foo/test/z"));
-
rsrcChildren = getChildren(provider.listChildren(mock(ResolveContext.class), rsrc));
assertEquals(3, rsrcChildren.size());
assertTrue(rsrcChildren.contains("/libs/foo/test/x"));
@@ -307,14 +295,7 @@
Resource rsrc = provider.getResource(mock(ResolveContext.class), "/libs/foo", mock(ResourceContext.class), null);
assertNotNull(rsrc);
- List<String> rsrcChildren = getChildren(rsrc.listChildren());
- assertEquals(4, rsrcChildren.size());
- assertTrue(rsrcChildren.contains("/libs/foo/a"));
- assertTrue(rsrcChildren.contains("/libs/foo/b"));
- assertTrue(rsrcChildren.contains("/libs/foo/d"));
- assertTrue(rsrcChildren.contains("/libs/foo/test"));
-
- rsrcChildren = getChildren(provider.listChildren(mock(ResolveContext.class), rsrc));
+ List<String> rsrcChildren = getChildren(provider.listChildren(mock(ResolveContext.class), rsrc));
assertEquals(4, rsrcChildren.size());
assertTrue(rsrcChildren.contains("/libs/foo/a"));
assertTrue(rsrcChildren.contains("/libs/foo/b"));
@@ -324,12 +305,6 @@
rsrc = provider.getResource(mock(ResolveContext.class), "/libs/foo/test", mock(ResourceContext.class), null);
assertNotNull(rsrc);
- rsrcChildren = getChildren(rsrc.listChildren());
- assertEquals(3, rsrcChildren.size());
- assertTrue(rsrcChildren.contains("/libs/foo/test/x"));
- assertTrue(rsrcChildren.contains("/libs/foo/test/y"));
- assertTrue(rsrcChildren.contains("/libs/foo/test/z"));
-
rsrcChildren = getChildren(provider.listChildren(mock(ResolveContext.class), rsrc));
assertEquals(3, rsrcChildren.size());
assertTrue(rsrcChildren.contains("/libs/foo/test/x"));
@@ -339,10 +314,6 @@
// check children of d
rsrc = provider.getResource(mock(ResolveContext.class), "/libs/foo/d", mock(ResourceContext.class), null);
assertNotNull(rsrc);
- rsrcChildren = getChildren(rsrc.listChildren());
- assertEquals(2, rsrcChildren.size());
- assertTrue(rsrcChildren.contains("/libs/foo/d/g"));
- assertTrue(rsrcChildren.contains("/libs/foo/d/h"));
rsrcChildren = getChildren(provider.listChildren(mock(ResolveContext.class), rsrc));
assertEquals(2, rsrcChildren.size());