The importing bundles for an exported package were being calculated
incorrectly. (FELIX-1005)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@759040 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/main/java/org/apache/felix/framework/Felix.java b/framework/src/main/java/org/apache/felix/framework/Felix.java
index 90403f9..fd0a5a0 100644
--- a/framework/src/main/java/org/apache/felix/framework/Felix.java
+++ b/framework/src/main/java/org/apache/felix/framework/Felix.java
@@ -2975,10 +2975,20 @@
IModule[] expModules = exporter.getModules();
for (int expIdx = 0; (expModules != null) && (expIdx < expModules.length); expIdx++)
{
+ // Include any importers that have wires to the specific
+ // exported package.
IModule[] dependents = ((ModuleImpl) expModules[expIdx]).getDependentImporters();
for (int depIdx = 0; (dependents != null) && (depIdx < dependents.length); depIdx++)
{
- list.add(dependents[depIdx].getBundle());
+ IWire[] wires = dependents[depIdx].getWires();
+ for (int wireIdx = 0; (wires != null) && (wireIdx < wires.length); wireIdx++)
+ {
+ if ((wires[wireIdx].getExporter() == expModules[expIdx])
+ && (wires[wireIdx].hasPackage(ep.getName())))
+ {
+ list.add(dependents[depIdx].getBundle());
+ }
+ }
}
dependents = ((ModuleImpl) expModules[expIdx]).getDependentRequirers();
for (int depIdx = 0; (dependents != null) && (depIdx < dependents.length); depIdx++)
@@ -4042,6 +4052,7 @@
public void stop()
{
+// TODO: LOCKING - This is not really correct.
if (m_bundle.getState() == Bundle.ACTIVE)
{
m_oldState = Bundle.ACTIVE;