Framework implements FrameworkMBean { public CompositeData uninstallBundles(long[] bundleIdentifiers) throws IOException { if (bundleIdentifiers == null) { return new BatchActionResult("Failed uninstall bundles, bundle id's can't be null").toCompositeData(); } for (int i = 0; i < bundleIdentifiers.length; i++) { try { uninstallBundle(bundleIdentifiers[i]); } catch (Throwable t) { return createFailedBatchActionResult(bundleIdentifiers, i, t); } } return new BatchActionResult(bundleIdentifiers).toCompositeData(); } Framework(BundleContext context, StartLevel startLevel, PackageAdmin packageAdmin); long[] getDependencyClosure(long[] bundles); int getFrameworkStartLevel(); int getInitialBundleStartLevel(); String getProperty(String key); long[] getRemovalPendingBundles(); long installBundle(String location); long installBundleFromURL(String location, String url); InputStream createStream(String url); CompositeData installBundles(String[] locations); CompositeData installBundlesFromURL(String[] locations, String[] urls); void refreshBundle(long bundleIdentifier); boolean refreshBundleAndWait(long bundleIdentifier); void refreshBundles(long[] bundleIdentifiers); CompositeData refreshBundlesAndWait(long[] bundleIdentifiers); boolean resolveBundle(long bundleIdentifier); boolean resolveBundles(long[] bundleIdentifiers); CompositeData resolve(long[] bundleIdentifiers); void restartFramework(); void setBundleStartLevel(long bundleIdentifier, int newlevel); CompositeData setBundleStartLevels(long[] bundleIdentifiers, int[] newlevels); void setFrameworkStartLevel(int newlevel); void setInitialBundleStartLevel(int newlevel); void shutdownFramework(); void startBundle(long bundleIdentifier); CompositeData startBundles(long[] bundleIdentifiers); void stopBundle(long bundleIdentifier); CompositeData stopBundles(long[] bundleIdentifiers); void uninstallBundle(long bundleIdentifier); CompositeData uninstallBundles(long[] bundleIdentifiers); void updateBundle(long bundleIdentifier); void updateBundleFromURL(long bundleIdentifier, String url); CompositeData updateBundles(long[] bundleIdentifiers); CompositeData updateBundlesFromURL(long[] bundleIdentifiers, String[] urls); void updateFramework();  }
@Test public void testUninstallBundles() throws Exception { Bundle bundle = Mockito.mock(Bundle.class); Mockito.when(context.getBundle(5)).thenReturn(bundle); CompositeData data = mbean.uninstallBundles(new long[] { 5 }); Mockito.verify(bundle).uninstall(); BatchActionResult batch = BatchActionResult.from(data); Assert.assertEquals(5, batch.getCompleted()[0]); Assert.assertTrue(batch.isSuccess()); Assert.assertNull(batch.getError()); Assert.assertNull(batch.getRemainingItems()); CompositeData data2 = mbean.uninstallBundles(null); BatchActionResult batch2 = BatchActionResult.from(data2); Assert.assertNull(batch2.getCompleted()); Assert.assertFalse(batch2.isSuccess()); Assert.assertNotNull(batch2.getError()); Assert.assertNull(batch2.getRemainingItems()); }