BundleData { public CompositeData toCompositeData() { return toCompositeData(BundleStateMBean.BUNDLE_TYPE.keySet()); } private  BundleData();  BundleData(BundleContext localBundleContext, Bundle bundle, PackageAdmin packageAdmin, StartLevel startLevel); CompositeData toCompositeData(); CompositeData toCompositeData(Collection<String> itemNames); @SuppressWarnings("unchecked") static BundleData from(CompositeData compositeData); String[] getExportedPackages(); boolean isFragment(); long[] getFragments(); List<Header> getHeaders(); long[] getHosts(); long getIdentifier(); String[] getImportedPackages(); long getLastModified(); String getLocation(); boolean isPersistentlyStarted(); long[] getRegisteredServices(); boolean isRemovalPending(); boolean isRequired(); long[] getRequiredBundles(); long[] getRequiringBundles(); long[] getServicesInUse(); int getBundleStartLevel(); String getState(); String getSymbolicName(); String getVersion();  }
@Test public void testToCompositeData() throws Exception { Bundle bundle = mock(Bundle.class); BundleContext context = mock(BundleContext.class); PackageAdmin packageAdmin = mock(PackageAdmin.class); StartLevel startLevel = mock(StartLevel.class); Bundle b1 = mock(Bundle.class); when(b1.getSymbolicName()).thenReturn("b1"); when(b1.getBundleId()).thenReturn(new Long(44)); Bundle b2 = mock(Bundle.class); when(b2.getSymbolicName()).thenReturn("b2"); when(b2.getBundleId()).thenReturn(new Long(55)); Bundle b3 = mock(Bundle.class); when(b3.getSymbolicName()).thenReturn("b3"); when(b3.getBundleId()).thenReturn(new Long(66)); when(context.getBundles()).thenReturn(new Bundle[] { bundle, b1, b2, b3 }); when(bundle.getSymbolicName()).thenReturn("test"); when(bundle.getVersion()).thenReturn(Version.emptyVersion); when(bundle.getBundleId()).thenReturn(new Long(1)); when(bundle.getLastModified()).thenReturn(new Long(12345)); when(bundle.getLocation()).thenReturn("location"); Dictionary<String, String> headers = new Hashtable<String, String>(); headers.put(Constants.BUNDLE_SYMBOLICNAME, "test"); headers.put(Constants.BUNDLE_VERSION, "0.0.0"); when(bundle.getHeaders()).thenReturn(headers); ExportedPackage exported = mock(ExportedPackage.class); when(exported.getName()).thenReturn("org.apache.aries.jmx"); when(exported.getVersion()).thenReturn(new Version("1.0.0")); when(exported.getExportingBundle()).thenReturn(bundle); when(packageAdmin.getExportedPackages(bundle)).thenReturn(new ExportedPackage[] { exported }); ExportedPackage ep1 = mock(ExportedPackage.class); when(ep1.getImportingBundles()).thenReturn(new Bundle[] { bundle, b2, b3 }); when(ep1.getName()).thenReturn("org.apache.aries.jmx.b1"); when(ep1.getVersion()).thenReturn(Version.emptyVersion); when(ep1.getExportingBundle()).thenReturn(b1); ExportedPackage ep2 = mock(ExportedPackage.class); when(ep2.getImportingBundles()).thenReturn(new Bundle[] { bundle, b3 }); when(ep2.getName()).thenReturn("org.apache.aries.jmx.b2"); when(ep2.getVersion()).thenReturn(Version.parseVersion("2.0.1")); when(ep2.getExportingBundle()).thenReturn(b2); headers.put(Constants.DYNAMICIMPORT_PACKAGE, "*"); when(packageAdmin.getExportedPackages(b1)).thenReturn(new ExportedPackage[] { ep1 }); when(packageAdmin.getExportedPackages(b2)).thenReturn(new ExportedPackage[] { ep2 }); when(packageAdmin.getExportedPackages(b3)).thenReturn(null); RequiredBundle rb1 = mock(RequiredBundle.class); when(rb1.getBundle()).thenReturn(b1); when(rb1.getRequiringBundles()).thenReturn(new Bundle[] { bundle, b2 }); RequiredBundle rb2 = mock(RequiredBundle.class); when(rb2.getBundle()).thenReturn(b2); when(rb2.getRequiringBundles()).thenReturn(new Bundle[] { b1 }); RequiredBundle rb3 = mock(RequiredBundle.class); when(rb3.getBundle()).thenReturn(b3); when(rb3.getRequiringBundles()).thenReturn(new Bundle[] { bundle, b1, b2 }); headers.put(Constants.REQUIRE_BUNDLE, "b1;bundle-version=\"1.0.0\",b3;bundle-version=\"2.0.0\""); when(packageAdmin.getRequiredBundles("b1")).thenReturn(new RequiredBundle[] { rb1 }); when(packageAdmin.getRequiredBundles("b2")).thenReturn(new RequiredBundle[] { rb2 }); when(packageAdmin.getRequiredBundles("b3")).thenReturn(new RequiredBundle[] { rb3 }); ServiceReference s1 = mock(ServiceReference.class); when(s1.getProperty(Constants.SERVICE_ID)).thenReturn(new Long(15)); ServiceReference s2 = mock(ServiceReference.class); when(s2.getProperty(Constants.SERVICE_ID)).thenReturn(new Long(16)); ServiceReference s3 = mock(ServiceReference.class); when(s3.getProperty(Constants.SERVICE_ID)).thenReturn(new Long(17)); when(bundle.getServicesInUse()).thenReturn(new ServiceReference[] { s1, s2, s3 }); BundleData b = new BundleData(context, bundle, packageAdmin, startLevel); CompositeData compositeData = b.toCompositeData(); assertEquals("test", compositeData.get(SYMBOLIC_NAME)); assertEquals("0.0.0", compositeData.get(VERSION)); TabularData headerTable = (TabularData) compositeData.get(HEADERS); assertEquals(4, headerTable.values().size()); CompositeData header = headerTable.get(new Object[]{Constants.BUNDLE_SYMBOLICNAME}); assertNotNull(header); String value = (String) header.get(VALUE); assertEquals("test", value); String key = (String)header.get(KEY); assertEquals(Constants.BUNDLE_SYMBOLICNAME, key); TabularData bundleTable = new TabularDataSupport(BUNDLES_TYPE); bundleTable.put(b.toCompositeData()); CompositeData bundleData = bundleTable.get(new Object[]{Long.valueOf(1)}); assertNotNull(bundleData); String location = (String) bundleData.get(LOCATION); assertEquals("location", location); assertArrayEquals(new String[] { "org.apache.aries.jmx;1.0.0"} , (String[]) compositeData.get(EXPORTED_PACKAGES)); assertArrayEquals(new String[] { "org.apache.aries.jmx.b1;0.0.0" , "org.apache.aries.jmx.b2;2.0.1"}, (String[]) compositeData.get(IMPORTED_PACKAGES)); assertEquals(toSet(new long[] { 44, 55, 66 }), toSet((Long[]) compositeData.get(REQUIRED_BUNDLES))); assertArrayEquals(new Long[] { new Long(15), new Long(16), new Long(17) },(Long[]) compositeData.get(SERVICES_IN_USE)); assertEquals("UNKNOWN", compositeData.get(STATE)); assertEquals(0,((Long[]) compositeData.get(HOSTS)).length); assertEquals(0, ((Long[]) compositeData.get(FRAGMENTS)).length); }
@Test public void testHeaderToCompositeData() throws Exception{ Header h1 = new Header("a", "b"); CompositeData compositeData = h1.toCompositeData(); assertEquals("a", compositeData.get(KEY)); assertEquals("b", compositeData.get(VALUE)); }