Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/OptionalDependencies.java URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/OptionalDependencies.java?rev=602115&view=auto ============================================================================== --- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/OptionalDependencies.java (added) +++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/di/OptionalDependencies.java Fri Dec 7 07:00:34 2007 @@ -0,0 +1,372 @@ +package org.apache.felix.ipojo.test.scenarios.dependency.di; + +import java.util.Properties; + +import org.apache.felix.ipojo.ComponentInstance; +import org.apache.felix.ipojo.architecture.Architecture; +import org.apache.felix.ipojo.architecture.InstanceDescription; +import org.apache.felix.ipojo.test.scenarios.service.CheckService; +import org.apache.felix.ipojo.test.scenarios.util.Utils; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; + +import fr.imag.adele.escoffier.utf.framework.TestCase; + +public class OptionalDependencies extends TestCase { + + ComponentInstance instance1, instance2, instance3, instance4, instance5; + ComponentInstance fooProvider; + + public OptionalDependencies(BundleContext bc) {super(bc); } + + public void setUp() { + try { + Properties prov = new Properties(); + prov.put("name", "FooProvider"); + fooProvider = Utils.getFactoryByName(context, "FooProviderType-1").createComponentInstance(prov); + fooProvider.stop(); + + Properties i1 = new Properties(); + i1.put("name", "Simple"); + instance1 = Utils.getFactoryByName(context, "DISimpleOptionalCheckServiceProvider").createComponentInstance(i1); + + Properties i2 = new Properties(); + i2.put("name", "Void"); + instance2 = Utils.getFactoryByName(context, "DIVoidOptionalCheckServiceProvider").createComponentInstance(i2); + + Properties i3 = new Properties(); + i3.put("name", "Object"); + instance3 = Utils.getFactoryByName(context, "DIObjectOptionalCheckServiceProvider").createComponentInstance(i3); + + Properties i4 = new Properties(); + i4.put("name", "Ref"); + instance4 = Utils.getFactoryByName(context, "DIRefOptionalCheckServiceProvider").createComponentInstance(i4); + + Properties i5 = new Properties(); + i5.put("name", "Both"); + instance5 = Utils.getFactoryByName(context, "DIBothOptionalCheckServiceProvider").createComponentInstance(i5); + } catch(Exception e) { fail(e.getMessage()); } + } + + public void tearDown() { + instance1.dispose(); + instance2.dispose(); + instance3.dispose(); + instance4.dispose(); + instance5.dispose(); + fooProvider.dispose(); + instance1 = null; + instance2 = null; + instance3 = null; + instance4 = null; + instance5 = null; + fooProvider = null; + } + + public void testSimple() { + ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance1.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) context.getService(cs_ref); + Properties props = cs.getProps(); + + //Check properties + assertFalse("check CheckService invocation - 1", ((Boolean)props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation - 1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 1", ((Integer)props.get("refU")).intValue(), 0); + assertNull("Check FS invocation (object) - 1", props.get("object")); + assertEquals("Check FS invocation (int) - 1", ((Integer)props.get("int")).intValue(), 5); + assertEquals("Check FS invocation (long) - 1", ((Long)props.get("long")).longValue(), 5); + assertEquals("Check FS invocation (double) - 1", ((Double)props.get("double")).doubleValue(), 5.0); + + fooProvider.start(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + + //Check properties + assertTrue("check CheckService invocation - 2", ((Boolean)props.get("result")).booleanValue()); // True, a provider is there + assertEquals("check void bind invocation - 2", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 2", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 2", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 2", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 2", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 2", ((Integer)props.get("refU")).intValue(), 0); + assertNotNull("Check FS invocation (object) - 2", props.get("object")); + assertEquals("Check FS invocation (int) - 2", ((Integer)props.get("int")).intValue(), 1); + assertEquals("Check FS invocation (long) - 2", ((Long)props.get("long")).longValue(), 1); + assertEquals("Check FS invocation (double) - 2", ((Double)props.get("double")).doubleValue(), 1.0); + + fooProvider.stop(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 3", id.getState() == ComponentInstance.VALID); + + id = null; + cs = null; + context.ungetService(arch_ref); + context.ungetService(cs_ref); + } + + public void testVoid() { + ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance2.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance2.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) context.getService(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation - 1", ((Boolean)props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation - 1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 1", ((Integer)props.get("refU")).intValue(), 0); + assertNull("Check FS invocation (object) - 1", props.get("object")); + assertEquals("Check FS invocation (int) - 1", ((Integer)props.get("int")).intValue(), 5); + assertEquals("Check FS invocation (long) - 1", ((Long)props.get("long")).longValue(), 5); + assertEquals("Check FS invocation (double) - 1", ((Double)props.get("double")).doubleValue(), 5.0); + + fooProvider.start(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer)props.get("voidB")).intValue(), 1); + assertEquals("check void unbind callback invocation -2", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -2", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -2", ((Integer)props.get("refU")).intValue(), 0); + assertNotNull("Check FS invocation (object) - 2", props.get("object")); + assertEquals("Check FS invocation (int) - 2", ((Integer)props.get("int")).intValue(), 1); + assertEquals("Check FS invocation (long) - 2", ((Long)props.get("long")).longValue(), 1); + assertEquals("Check FS invocation (double) - 2", ((Double)props.get("double")).doubleValue(), 1.0); + + fooProvider.stop(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 3", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation -3", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer)props.get("voidB")).intValue(), 1); + assertEquals("check void unbind callback invocation -3 ("+((Integer)props.get("voidU")) + ")", ((Integer)props.get("voidU")).intValue(), 1); + assertEquals("check object bind callback invocation -3", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -3", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -3", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -3", ((Integer)props.get("refU")).intValue(), 0); + assertNull("Check FS invocation (object) - 3", props.get("object")); + assertEquals("Check FS invocation (int) - 3", ((Integer)props.get("int")).intValue(), 5); + assertEquals("Check FS invocation (long) - 3", ((Long)props.get("long")).longValue(), 5); + assertEquals("Check FS invocation (double) - 3", ((Double)props.get("double")).doubleValue(), 5.0); + + id = null; + cs = null; + context.ungetService(arch_ref); + context.ungetService(cs_ref); + } + + public void testObject() { + ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance3.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance3.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) context.getService(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + + fooProvider.start(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -2", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2 (" + ((Integer)props.get("objectB")).intValue() + ")", ((Integer)props.get("objectB")).intValue(), 1); + assertEquals("check object unbind callback invocation -2", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -2", ((Integer)props.get("refU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 3", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation -3", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -3", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -3", ((Integer)props.get("objectB")).intValue(), 1); + assertEquals("check object unbind callback invocation -3", ((Integer)props.get("objectU")).intValue(), 1); + assertEquals("check ref bind callback invocation -3", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -3", ((Integer)props.get("refU")).intValue(), 0); + + id = null; + cs = null; + context.ungetService(arch_ref); + context.ungetService(cs_ref); + } + + public void testRef() { + ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance4.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance4.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) context.getService(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + + fooProvider.start(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -2", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -2", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer)props.get("refB")).intValue(), 1); + assertEquals("check ref unbind callback invocation -2", ((Integer)props.get("refU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 3", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation -3", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -3", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -3", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -3", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -3", ((Integer)props.get("refB")).intValue(), 1); + assertEquals("check ref unbind callback invocation -3", ((Integer)props.get("refU")).intValue(), 1); + + id = null; + cs = null; + context.ungetService(arch_ref); + context.ungetService(cs_ref); + } + + public void testBoth() { + ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance5.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance5.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) context.getService(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0); + + fooProvider.start(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -2", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -2", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -2", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -2", ((Integer)props.get("bothB")).intValue(), 1); + assertEquals("check both unbind callback invocation -2", ((Integer)props.get("bothU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) context.getService(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 3", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) context.getService(cs_ref); + props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation -3", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -3", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -3", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -3", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -3", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -3", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -3", ((Integer)props.get("bothB")).intValue(), 1); + assertEquals("check both unbind callback invocation -3", ((Integer)props.get("bothU")).intValue(), 1); + + id = null; + cs = null; + context.ungetService(arch_ref); + context.ungetService(cs_ref); + } + + +}
Modified: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tota.java URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tota.java?rev=602115&r1=602114&r2=602115&view=diff ============================================================================== --- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tota.java (original) +++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tota.java Fri Dec 7 07:00:34 2007 @@ -9,6 +9,7 @@ "$specification=\"org.apache.felix.ipojo.test.scenarios.service.Toto\" " + "$optional=\"true\" " + "$aggregate=\"true\" " + + "$type=\"service\" " + "} }"; public Properties getProps() throws UnsupportedOperationException;; Modified: felix/sandbox/clement/Tests/Suite/src/main/resources/metadata.xml URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/resources/metadata.xml?rev=602115&r1=602114&r2=602115&view=diff ============================================================================== --- felix/sandbox/clement/Tests/Suite/src/main/resources/metadata.xml (original) +++ felix/sandbox/clement/Tests/Suite/src/main/resources/metadata.xml Fri Dec 7 07:00:34 2007 @@ -268,6 +268,62 @@ </requires> <provides/> </component> + + <!-- Simple & Optional Dependencies with default-implementation --> + <component className="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" factory="DISimpleOptionalCheckServiceProvider" architecture="true"> + <requires field="fs" optional="true" default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl"/> + <provides/> + </component> + <component className="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" factory="DIVoidOptionalCheckServiceProvider" architecture="true"> + <requires field="fs" optional="true" default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl"> + <callback type="bind" method="voidBind"/> + <callback type="unbind" method="voidUnbind"/> + </requires> + <provides/> + </component> + <component className="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" factory="DIObjectOptionalCheckServiceProvider" architecture="true"> + <requires field="fs" optional="true" default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl"> + <callback type="bind" method="objectBind"/> + <callback type="unbind" method="objectUnbind"/> + </requires> + <provides/> + </component> + <component className="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" factory="DIRefOptionalCheckServiceProvider" architecture="true"> + <requires field="fs" optional="true" default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl"> + <callback type="bind" method="refBind"/> + <callback type="unbind" method="refUnbind"/> + </requires> + <provides/> + </component> + <component className="org.apache.felix.ipojo.test.scenarios.component.CheckServiceProvider" factory="DIBothOptionalCheckServiceProvider" architecture="true"> + <requires field="fs" optional="true" default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl"> + <callback type="bind" method="bothBind"/> + <callback type="unbind" method="bothUnbind"/> + </requires> + <provides/> + </component> + + <component className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider" factory="DIMObjectOptionalCheckServiceProvider" architecture="true"> + <requires optional="true" default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl"> + <callback type="bind" method="objectBind"/> + <callback type="unbind" method="objectUnbind"/> + </requires> + <provides/> + </component> + <component className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider" factory="DIMRefOptionalCheckServiceProvider" architecture="true"> + <requires interface="org.apache.felix.ipojo.test.scenarios.service.FooService" optional="true" default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl"> + <callback type="bind" method="refBind"/> + <callback type="unbind" method="refUnbind"/> + </requires> + <provides/> + </component> + <component className="org.apache.felix.ipojo.test.scenarios.component.MethodCheckServiceProvider" factory="DIMBothOptionalCheckServiceProvider" architecture="true"> + <requires interface="org.apache.felix.ipojo.test.scenarios.service.FooService" optional="true" default-implementation="org.apache.felix.ipojo.test.scenarios.component.FooServiceDefaultImpl"> + <callback type="bind" method="bothBind"/> + <callback type="unbind" method="bothUnbind"/> + </requires> + <provides/> + </component> <!-- Multiple Dependencies --> <component className="org.apache.felix.ipojo.test.scenarios.component.MultipleCheckService" factory="SimpleMultipleCheckServiceProvider" architecture="true">
