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());