Fix for when a bundle is removed.
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
index 9a4d00e..b3785e5 100644
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
+++ b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
@@ -173,8 +173,10 @@
// Check if we wired to a reprovided package (in which case the ResolverExport doesn't exist)
if (matchingExport == null && exporter != null) {
ResolverExport reprovidedExport = new ResolverExport(exporter, importSupplier);
- exporter.addExport(reprovidedExport);
- resolverExports.put(reprovidedExport);
+ if (exporter.getExport(imp) == null) {
+ exporter.addExport(reprovidedExport);
+ resolverExports.put(reprovidedExport);
+ }
imp.setMatchingExport(reprovidedExport);
}
// If we still have a null wire and it's not optional, then we have an error
@@ -183,7 +185,7 @@
// TODO log error!!
}
if (imp.getMatchingExport() != null) {
- rewireBundle(matchingExport.getExporter());
+ rewireBundle(imp.getMatchingExport().getExporter());
}
}