prov.start();
// The two consumers are started and use their own objects.
ServiceReference refcons1 = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), cons1.getInstanceName());
assertNotNull("Cons1 Service available", refcons1);
CheckService cs_cons1 = (CheckService) osgiHelper.getRawServiceObject(refcons1);
Properties props = cs_cons1.getProps();
FooService fscons1 = (FooService) props.get("object");
ServiceReference refcons2 = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), cons2.getInstanceName());
assertNotNull("Cons2 Service available", refcons2);
CheckService cs_cons2 = (CheckService) osgiHelper.getRawServiceObject(refcons2);
Properties props2 = cs_cons2.getProps();
FooService fscons2 = (FooService) props2.get("object");
checkCreatedObjects(prov, 2);
assertNotSame("Two objects", fscons1, fscons2);
// Stop the provider
prov.stop();
// Cons1 and 2 are invalid.
assertEquals("Cons1 invalidity", ComponentInstance.INVALID, cons1.getState());
assertEquals("Cons2 invalidity", ComponentInstance.INVALID, cons2.getState());
// No object created in prov
checkCreatedObjects(prov, 0);
// Restart the provider
prov.start();
// Consumers are valid.
assertEquals("Cons1 validity", ComponentInstance.VALID, cons1.getState());
assertEquals("Cons2 validity", ComponentInstance.VALID, cons2.getState());
// Check objects
refcons1 = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), cons1.getInstanceName());
assertNotNull("Cons1 Service available", refcons1);
cs_cons1 = (CheckService) osgiHelper.getRawServiceObject(refcons1);
props = cs_cons1.getProps();
Object fscons3 = (FooService) props.get("object");
refcons2 = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), cons2.getInstanceName());
assertNotNull("Cons2 Service available", refcons2);
cs_cons2 = (CheckService) osgiHelper.getRawServiceObject(refcons2);
props2 = cs_cons2.getProps();
Object fscons4 = (FooService) props2.get("object");
checkCreatedObjects(prov, 2);
assertNotSame("Two objects", fscons3, fscons4);
assertNotSame("Two new objects - 1", fscons3, fscons1);