protected void testBMD(BeanMetaData bmd) throws Throwable { assertNotNull(bmd); assertEquals(Collections.singleton((Object) "alias"), bmd.getAliases()); assertEquals( Collections.singleton((SupplyMetaData) new AbstractSupplyMetaData("supply")), bmd.getSupplies()); assertEquals( Collections.singleton((DemandMetaData) new AbstractDemandMetaData("demand")), bmd.getDemands()); assertEquals( Collections.singleton((DependencyMetaData) new AbstractDependencyMetaData("depend")), bmd.getDepends()); ConstructorMetaData cmd = bmd.getConstructor(); assertNotNull(cmd); assertEquals(AnnotationTester.class.getName(), cmd.getFactoryClass()); assertEquals("factoryMethod", cmd.getFactoryMethod()); testInstalls(bmd.getInstalls()); testInstalls(bmd.getUninstalls()); List<CallbackMetaData> callbacks = bmd.getInstallCallbacks(); assertNotNull(callbacks); assertEquals(1, callbacks.size()); CallbackMetaData callback = callbacks.get(0); assertTrue(callback.getMethodName().contains("Something")); callbacks = bmd.getUninstallCallbacks(); assertNotNull(callbacks); assertEquals(1, callbacks.size()); callback = callbacks.get(0); assertTrue(callback.getMethodName().contains("Something")); BeanAccessMode mode = bmd.getAccessMode(); if (mode == BeanAccessMode.ALL) { Set<PropertyMetaData> propertys = bmd.getProperties(); assertNotNull(propertys); assertEquals(2, propertys.size()); } else { Set<PropertyMetaData> propertys = bmd.getProperties(); assertNotNull(propertys); assertEquals(1, propertys.size()); PropertyMetaData pmd = propertys.iterator().next(); assertEquals("number", pmd.getName()); assertInstanceOf(pmd.getValue(), AbstractDependencyValueMetaData.class); } testLifecycle(bmd.getCreate(), "myCreate"); testLifecycle(bmd.getStart(), "myStart"); testLifecycle(bmd.getStop(), "myStop"); testLifecycle(bmd.getDestroy(), "myDestroy"); }