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;