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
{