diff options
3 files changed, 15 insertions, 1 deletions
diff --git a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF index 29267ae60..e812bd226 100644 --- a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF @@ -78,7 +78,7 @@ Bundle-Activator: org.eclipse.osgi.framework.internal.core.SystemBundleActivator Bundle-Description: %systemBundle Bundle-Copyright: %copyright Bundle-Vendor: %eclipse.org -Bundle-Version: 3.8.0.qualifier +Bundle-Version: 3.8.100.qualifier Bundle-Localization: systembundle Bundle-DocUrl: http://www.eclipse.org Eclipse-ExtensibleAPI: true 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 |