public void testPropertiesProviders() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
ComponentInstance ci = factory2.createComponentInstance(new Properties());
ServiceReference ref = ipojoHelper.getServiceReferenceByName(Observable.class.getName(), ci.getInstanceName());
assertNotNull("Check Observable availability", ref);
Observable obs = (Observable) osgiHelper.getServiceObject(ref);
Map map = obs.getObservations();
assertEquals("Check empty list", ((List) map.get("list")).size(), 0);
Properties p1 = new Properties();
p1.put("foo", "foo");
ComponentInstance prov1 = provFactory.createComponentInstance(p1);
ServiceReference ref1 = ipojoHelper.getServiceReferenceByName(FooService.class.getName(), prov1.getInstanceName());
FooService fs1 = (FooService) osgiHelper.getServiceObject(ref1);
map = obs.getObservations();
assertEquals("Check list #1", ((List) map.get("list")).size(), 1);
Properties p2 = new Properties();
p2.put("foo", "foo");
ComponentInstance prov2 = provFactory.createComponentInstance(p2);
ServiceReference ref2 = ipojoHelper.getServiceReferenceByName(FooService.class.getName(), prov2.getInstanceName());
FooService fs2 = (FooService) osgiHelper.getServiceObject(ref2);
map = obs.getObservations();
assertEquals("Check list #2", ((List) map.get("list")).size(), 2);
fs1.foo();
map = obs.getObservations();
assertEquals("(1) Check list #1", ((List) map.get("list")).size(), 1);
fs2.foo();
map = obs.getObservations();
assertEquals("(2) Check list #0", ((List) map.get("list")).size(), 0);
fs2.foo();
map = obs.getObservations();
assertEquals("(3) Check list #1", ((List) map.get("list")).size(), 1);
fs1.foo();
map = obs.getObservations();
assertEquals("(4) Check list #2", ((List) map.get("list")).size(), 2);
prov1.dispose();
map = obs.getObservations();
assertEquals("(5) Check list #1", ((List) map.get("list")).size(), 1);
prov2.dispose();
map = obs.getObservations();
assertEquals("(6) Check list #0", ((List) map.get("list")).size(), 0);
bc.ungetService(ref1);
bc.ungetService(ref2);
bc.ungetService(ref);