assertNotNull("Check architecture availability", arch_dep);
PrimitiveInstanceDescription id_dep = (PrimitiveInstanceDescription) ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
assertTrue("Check instance invalidity - 1", id_dep.getState() == ComponentInstance.INVALID);
// Check dependency handler invalidity
DependencyHandlerDescription dhd = getDependencyDesc(id_dep);
DependencyDescription dd = getDependencyDescBySpecification(id_dep, FooService.class.getName());
assertFalse("Check dependency handler invalidity", dhd.isValid());
assertTrue("Check dependency invalidity", dd.getState() == Dependency.UNRESOLVED);
// Check dependency metadata
assertEquals("Check dependency interface", dhd.getDependencies()[0].getInterface(), FooService.class.getName());
assertTrue("Check dependency cardinality", dhd.getDependencies()[0].isMultiple());
assertFalse("Check dependency optionality", dhd.getDependencies()[0].isOptional());
assertNull("Check dependency ref -1", dhd.getDependencies()[0].getServiceReferences());
assertEquals("Check dependency interface", dd.getSpecification(), FooService.class.getName());
assertTrue("Check dependency cardinality", dd.isMultiple());
assertFalse("Check dependency optionality", dd.isOptional());
assertNull("Check dependency ref -1", dd.getServiceReferences());
assertFalse("Check dependency proxy", dhd.getDependencies()[0].isProxy());
fooProvider1.start();
ServiceReference arch_ps1 = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), fooProvider1.getInstanceName());
assertNotNull("Check architecture availability", arch_ps1);
PrimitiveInstanceDescription id_ps1 = (PrimitiveInstanceDescription) ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
assertTrue("Check instance validity - 1", id_ps1.getState() == ComponentInstance.VALID);
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
assertTrue("Check instance validity", id_dep.getState() == ComponentInstance.VALID);
dhd = getDependencyDesc(id_dep);
assertTrue("Check dependency handler validity", dhd.isValid());
assertEquals("Check dependency ref - 2 ", dhd.getDependencies()[0].getServiceReferences().size(), 1);
assertEquals("Check used ref - 1 (" + dhd.getDependencies()[0].getUsedServices().size() + ")", dhd.getDependencies()[0].getUsedServices().size(), 0);
ServiceReference cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance3.getInstanceName());
assertNotNull("Check CheckService availability", cs_ref);
CheckService cs = (CheckService) getContext().getService(cs_ref);
assertTrue("check CheckService invocation", cs.check());
// Check object graph
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
dhd = getDependencyDesc(id_dep);
//id_ps1 = ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
ProvidedServiceHandlerDescription psh = getPSDesc(id_ps1);
assertEquals("Check Service Reference equality", psh.getProvidedServices()[0].getServiceReference(), dhd.getDependencies()[0].getServiceReference());
assertEquals("Check POJO creation", id_ps1.getCreatedObjects().length, 1);
assertTrue("Check service reference - 2", dhd.getDependencies()[0].getUsedServices().contains(psh.getProvidedServices()[0].getServiceReference()));
// Start a second foo service provider
fooProvider2.start();
arch_ps1 = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), fooProvider1.getInstanceName());
ServiceReference arch_ps2 = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), fooProvider2.getInstanceName());
assertNotNull("Check architecture availability", arch_ps1);
assertNotNull("Check architecture 2 availability", arch_ps2);
//id_ps1 = ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
PrimitiveInstanceDescription id_ps2 = (PrimitiveInstanceDescription) ((Architecture) getContext().getService(arch_ps2)).getInstanceDescription();
assertTrue("Check instance invalidity - 1", id_ps1.getState() == ComponentInstance.VALID);
assertTrue("Check instance 2 invalidity - 1", id_ps2.getState() == ComponentInstance.VALID);
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
assertTrue("Check instance validity", id_dep.getState() == ComponentInstance.VALID);
dhd = getDependencyDesc(id_dep);
assertTrue("Check dependency handler validity", dhd.isValid());
assertEquals("Check dependency ref - 3 ", dhd.getDependencies()[0].getServiceReferences().size(), 2);
assertEquals("Check used ref - 2 ", dhd.getDependencies()[0].getUsedServices().size(), 1); // provider 2 not already used
cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance3.getInstanceName());
assertNotNull("Check CheckService availability", cs_ref);
cs = (CheckService) getContext().getService(cs_ref);
assertTrue("check CheckService invocation", cs.check());
// Check object graph
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
dhd = getDependencyDesc(id_dep);
//id_ps1 = ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
//id_ps2 = ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
ProvidedServiceHandlerDescription psh1 = getPSDesc(id_ps1);
ProvidedServiceHandlerDescription psh2 = getPSDesc(id_ps2);
assertEquals("Check POJO creation", id_ps1.getCreatedObjects().length, 1);
assertEquals("Check POJO creation", id_ps2.getCreatedObjects().length, 1);
assertTrue("Check service reference - 3.1", dhd.getDependencies()[0].getUsedServices().contains(psh1.getProvidedServices()[0].getServiceReference()));
assertTrue("Check service reference - 3.2", dhd.getDependencies()[0].getUsedServices().contains(psh2.getProvidedServices()[0].getServiceReference()));
assertEquals("Check used ref - 3 ("+dhd.getDependencies()[0].getUsedServices().size()+")", dhd.getDependencies()[0].getUsedServices().size(), 2);
fooProvider2.stop();
arch_ps1 = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), fooProvider1.getInstanceName());
assertNotNull("Check architecture availability", arch_ps1);
//id_ps1 = ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
assertTrue("Check instance validity - 1", id_ps1.getState() == ComponentInstance.VALID);
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
assertTrue("Check instance validity", id_dep.getState() == ComponentInstance.VALID);
dhd = getDependencyDesc(id_dep);
assertTrue("Check dependency handler validity", dhd.isValid());
assertEquals("Check dependency ref - 2 ", dhd.getDependencies()[0].getServiceReferences().size(), 1);
assertEquals("Check used ref - 4 ", dhd.getDependencies()[0].getUsedServices().size(), 1);
cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance3.getInstanceName());
assertNotNull("Check CheckService availability", cs_ref);
cs = (CheckService) getContext().getService(cs_ref);
assertTrue("check CheckService invocation", cs.check());
// Check object graph
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
dhd = getDependencyDesc(id_dep);
//id_ps1 = ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
psh = getPSDesc(id_ps1);
assertEquals("Check Service Reference equality", psh.getProvidedServices()[0].getServiceReference(), dhd.getDependencies()[0].getServiceReference());
assertEquals("Check POJO creation", id_ps1.getCreatedObjects().length, 1);
assertTrue("Check service reference - 1", dhd.getDependencies()[0].getUsedServices().contains(psh.getProvidedServices()[0].getServiceReference()));
assertEquals("Check used ref - 5 ", dhd.getDependencies()[0].getUsedServices().size(), 1);
fooProvider1.stop();
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
assertFalse("Check instance invalidity - 2", id_dep.getState() == ComponentInstance.VALID);
dhd = getDependencyDesc(id_dep);
assertFalse("Check dependency handler invalidity", dhd.isValid());
fooProvider2.start();
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
dhd = getDependencyDesc(id_dep);
arch_ps2 = Utils.getServiceReferenceByName(getContext(), Architecture.class.getName(), fooProvider2.getInstanceName());
assertNotNull("Check architecture availability", arch_ps1);
//id_ps1 = ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
assertTrue("Check instance invalidity - 1", id_ps2.getState() == ComponentInstance.VALID);
psh = getPSDesc(id_ps2);
assertTrue("Check instance validity", id_dep.getState() == ComponentInstance.VALID);
assertTrue("Check dependency handler validity", dhd.isValid());
assertEquals("Check dependency ref -3", dhd.getDependencies()[0].getServiceReferences().size(), 1);
assertEquals("Check used ref - 6 ", dhd.getDependencies()[0].getUsedServices().size(), 0);
cs_ref = Utils.getServiceReferenceByName(getContext(), CheckService.class.getName(), instance3.getInstanceName());
assertNotNull("Check CheckService availability", cs_ref);
cs = (CheckService) getContext().getService(cs_ref);
assertTrue("check CheckService invocation", cs.check());
// Check object graph
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
dhd = getDependencyDesc(id_dep);
//id_ps1 = ((Architecture) getContext().getService(arch_ps1)).getInstanceDescription();
psh = getPSDesc(id_ps2);
assertEquals("Check Service Reference equality", psh.getProvidedServices()[0].getServiceReference(), dhd.getDependencies()[0].getServiceReference());
assertTrue("Check service reference - 4", dhd.getDependencies()[0].getUsedServices().contains(psh.getProvidedServices()[0].getServiceReference()));
assertEquals("Check used ref - 7 ", dhd.getDependencies()[0].getUsedServices().size(), 1);
fooProvider2.stop();
//id_dep = ((Architecture) getContext().getService(arch_dep)).getInstanceDescription();
assertFalse("Check instance invalidity - 2", id_dep.getState() == ComponentInstance.VALID);
dhd = getDependencyDesc(id_dep);
assertFalse("Check dependency handler invalidity", dhd.isValid());
id_dep = null;
cs = null;
getContext().ungetService(arch_dep);
getContext().ungetService(cs_ref);