public void testAfterInstantiationBeanInfo() throws Throwable
{
KernelController controller = getController();
// other
KernelControllerContext occ = controller.install(new AbstractBeanMetaData("other", OtherVerifier.class.getName()));
assertNotNull(occ);
Object tcc = occ.getTarget();
assertNotNull(tcc);
// tester
AbstractBeanMetaData abmd = new AbstractBeanMetaData();
BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(abmd);
builder.setName("tester");
builder.setAccessMode(BeanAccessMode.ALL);
builder.setFactoryClass(AfterInstantiateTester.class.getName());
builder.setFactoryMethod("getTester");
KernelControllerContext kcc = controller.install(builder.getBeanMetaData());
try
{
assertNotNull(kcc);
BeanMetaData beanMetaData = kcc.getBeanMetaData();
// test aliases
assertNotNull(controller.getContext("qwert", null));
// propertys
Set<PropertyMetaData> properties = beanMetaData.getProperties();
assertNotNull(properties);
assertEquals(2, properties.size());
// lifecycle
LifecycleMetaData create = beanMetaData.getCreate();
assertNotNull(create);
assertEquals("createMe", create.getMethodName());
LifecycleMetaData start = beanMetaData.getStart();
assertNotNull(start);
assertEquals("startMe", start.getMethodName());
LifecycleMetaData stop = beanMetaData.getStop();
assertNotNull(stop);
assertEquals("stopMe", stop.getMethodName());
LifecycleMetaData destroy = beanMetaData.getDestroy();
assertNotNull(destroy);
assertEquals("destroyMe", destroy.getMethodName());
// callbacks
List<CallbackMetaData> incallbacks = beanMetaData.getInstallCallbacks();
assertNotNull(incallbacks);
assertEquals(2, incallbacks.size());
List<CallbackMetaData> uncallbacks = beanMetaData.getUninstallCallbacks();
assertNotNull(uncallbacks);
assertEquals(2, uncallbacks.size());
// installs
List<InstallMetaData> installs = beanMetaData.getInstalls();
assertNotNull(installs);
assertEquals(2, installs.size());
List<InstallMetaData> uninstalls = beanMetaData.getUninstalls();
assertNotNull(uninstalls);
assertEquals(2, uninstalls.size());
Object tkcc = kcc.getTarget();
assertNotNull(tkcc);
AfterInstantiateTester tester = assertInstanceOf(tkcc, AfterInstantiateTester.class);
assertTrue(tester.time != 0);
}
finally
{
controller.uninstall(kcc.getName());
}
}