diff options
Diffstat (limited to 'bundles/org.eclipse.osgi/resolver')
2 files changed, 14 insertions, 0 deletions
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java index 544ae47a9..8f16f561d 100644 --- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java +++ b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java @@ -496,6 +496,19 @@ public class ResolverBundle extends VersionSupplier implements Comparable<Resolv return newFragmentCapabilities; } + public void detachFromHosts() { + if (!isFragment()) { + return; + } + VersionSupplier[] hosts = getHost().getPossibleSuppliers(); + if (hosts == null) { + return; + } + for (VersionSupplier possibleHost : hosts) { + ((ResolverBundle) possibleHost).detachFragment(this, null); + } + } + void detachFragment(ResolverBundle fragment, ResolverConstraint reason) { if (isFragment()) return; 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 0f0653a66..beeed64c9 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 @@ -1681,6 +1681,7 @@ public class ResolverImpl implements Resolver { resolverExports.remove(bundle.getExportPackages()); removeGenerics(bundle.getGenericCapabilities()); bundle.detachAllFragments(); + bundle.detachFromHosts(); bundle.initialize(false); if (!removed) { // add back the available exports/capabilities |