Make sure a fragment has wires before trying to remove a host
from the fragment's set of host wires. (FELIX-2901)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1089947 13f79535-47bb-0310-9956-ffa450edef68
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 26500b0..09c269a 100644
--- a/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
+++ b/framework/src/main/java/org/apache/felix/framework/ModuleImpl.java
@@ -1180,15 +1180,21 @@
// the module.
for (int i = 0; (m_fragments != null) && (i < m_fragments.size()); i++)
{
- List<Wire> hostWires = new ArrayList<Wire>(m_fragments.get(i).getWires());
- for (Iterator<Wire> it = hostWires.iterator(); it.hasNext(); )
+ // If the fragment has no wires, then there is no reason to try to
+ // remove ourself from its wires since it has apparently already
+ // been refreshed.
+ if (m_fragments.get(i).getWires() != null)
{
- Wire hostWire = it.next();
- if (hostWire.getExporter().equals(this))
+ List<Wire> hostWires = new ArrayList<Wire>(m_fragments.get(i).getWires());
+ for (Iterator<Wire> it = hostWires.iterator(); it.hasNext(); )
{
- it.remove();
- ((ModuleImpl) m_fragments.get(i)).setWires(hostWires);
- break;
+ Wire hostWire = it.next();
+ if (hostWire.getExporter().equals(this))
+ {
+ it.remove();
+ ((ModuleImpl) m_fragments.get(i)).setWires(hostWires);
+ break;
+ }
}
}
}