public void testDynamism() {
ServiceReference[] parentsFactoryReferences = Utils.getServiceReferences(getContext(), Factory.class.getName(), null);
ServiceContext sc1 = Utils.getServiceContext(empty);
ServiceReference[] Level1FactoryReferences = Utils.getServiceReferences(sc1, Factory.class.getName(), null);
Factory fact = Utils.getFactoryByName(sc1, "composite.empty");
Properties p = new Properties();
p.put("instance.name","empty2");
ComponentInstance empty2 = null;
try {
empty2 = fact.createComponentInstance(p);
} catch (Exception e) {
fail("Cannot instantiate empty2 instance : " + e.getMessage());
}
ServiceContext sc2 = Utils.getServiceContext(empty2);
ServiceReference[] Level2FactoryReferences = Utils.getServiceReferences(sc2, Factory.class.getName(), null);
assertEquals("Check the number of available factories - 1", parentsFactoryReferences.length, Level1FactoryReferences.length);
assertEquals("Check the number of available factories - 2", parentsFactoryReferences.length, Level2FactoryReferences.length);
assertEquals("Check the number of available factories - 3", Level1FactoryReferences.length, Level2FactoryReferences.length);
for(int i = 0; i < Level1FactoryReferences.length; i++) {
Factory factory = (Factory) getContext().getService(parentsFactoryReferences[i]);
assertTrue("Check the avaibility of " + factory.getName(), isExposed(factory, Level2FactoryReferences, sc2));
}
// Publish fake1
ServiceRegistration reg1 = getContext().registerService(Factory.class.getName(), fake1, null);