Modify Bundle.findEntries() to also search fragment content. (FELIX-1249)


git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@785709 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/FindEntriesEnumeration.java b/framework/src/main/java/org/apache/felix/framework/FindEntriesEnumeration.java
index c95acf9..06736f5 100644
--- a/framework/src/main/java/org/apache/felix/framework/FindEntriesEnumeration.java
+++ b/framework/src/main/java/org/apache/felix/framework/FindEntriesEnumeration.java
@@ -35,7 +35,7 @@
         m_bundle = bundle;
         m_path = path;
         m_enumeration = (m_bundle.getCurrentModule().getContent() == null)
-            ? null : m_bundle.getCurrentModule().getContent().getEntries();
+            ? null : ((ModuleImpl) m_bundle.getCurrentModule()).getEntries();
         m_recurse = recurse;
 
         // Sanity check the parameters.
diff --git a/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java b/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
index e815250..bb20bb3 100644
--- a/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
@@ -36,6 +36,7 @@
 import java.util.Arrays;
 import java.util.Enumeration;
 
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -427,6 +428,20 @@
         return m_content;
     }
 
+    synchronized Enumeration getEntries()
+    {
+        Enumeration[] ens =
+            new Enumeration[(m_fragmentContents == null)
+                ? 1
+                : m_fragmentContents.length + 1];
+        ens[0] = m_content.getEntries();
+        for (int i = 1; i < ens.length; i++)
+        {
+            ens[i] = m_fragmentContents[i - 1].getEntries();
+        }
+        return new CompoundEnumeration(ens);
+    }
+
     private synchronized IContent[] getContentPath()
     {
         if (m_contentPath == null)
@@ -1058,6 +1073,7 @@
         }
     }
 
+    // This must be called holding the object lock.
     private void attachFragmentContents(IContent[] fragmentContents)
         throws Exception
     {