diff options
author | Thomas Watson | 2011-11-15 16:15:06 +0000 |
---|---|---|
committer | Thomas Watson | 2011-11-15 16:15:06 +0000 |
commit | 5a42c6ea2f82c3769228b69b3b1e4d706e0f0f4e (patch) | |
tree | 4ab37b276a599bd008b75c191b408930f76ce0ed /bundles | |
parent | 3ad7aae358066c7fe4ffebd230ea14f132468892 (diff) | |
download | rt.equinox.framework-5a42c6ea2f82c3769228b69b3b1e4d706e0f0f4e.tar.gz rt.equinox.framework-5a42c6ea2f82c3769228b69b3b1e4d706e0f0f4e.tar.xz rt.equinox.framework-5a42c6ea2f82c3769228b69b3b1e4d706e0f0f4e.zip |
Bug 363797 - NullPointerException in CompositeConfigurator.createClassLoaderR36x_v20111115
Diffstat (limited to 'bundles')
2 files changed, 24 insertions, 0 deletions
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java index f44adf87a..2e5e3d73f 100644 --- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java +++ b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java @@ -295,6 +295,27 @@ public class CompositeShareTests extends AbstractCompositeTests { uninstallCompositeBundle(compositeBundle); } + public void testCompositeShare04d_Bug363561() { + // create a composite bundle with one bundle that exports some api to parent + // install one bundle into parent that uses API from child + Map linkManifest = new HashMap(); + linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, getName()); //$NON-NLS-1$ + linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$ + linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"value1\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$ + CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare04a", null, linkManifest, false, false); //$NON-NLS-1$ + Bundle constituent = installIntoChild(compositeBundle.getCompositeFramework(), "test.link.a"); //$NON-NLS-1$ + Bundle testClient = installIntoCurrent("test.link.a.client"); //$NON-NLS-1$ + startCompositeBundle(compositeBundle, false); + + try { + constituent.uninstall(); + } catch (BundleException e) { + fail("Error on uninstall of constituent.", e); + } + stopCompositeBundle(compositeBundle); + uninstallCompositeBundle(compositeBundle); + } + public void testCompositeShare05() { // create a composite bundle with one bundle that exports some api to child // install one bundle into child that uses API from parent diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeImpl.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeImpl.java index f900dc6fa..143027660 100644 --- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeImpl.java +++ b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeImpl.java @@ -167,6 +167,9 @@ public class CompositeImpl extends CompositeBase implements CompositeBundle { } protected void stopHook() throws BundleException { + // bug 363561; need to make sure the class loader is created + // before stopping the composite framework + checkClassLoader(); trackerManager.stoppedComposite(); // do not stop the framework unless we are persistently stopped if ((bundledata.getStatus() & Constants.BUNDLE_STARTED) == 0) |