felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clem...@apache.org
Subject svn commit: r585152 [2/3] - in /felix/sandbox/clement/Tests/Suite/src/main: java/org/apache/felix/ipojo/test/ java/org/apache/felix/ipojo/test/scenarios/architecture/ java/org/apache/felix/ipojo/test/scenarios/component/inherited/ java/org/apache/felix...
Date Tue, 16 Oct 2007 14:21:51 GMT
Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/OptionalDependencies.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/OptionalDependencies.java?rev=585152&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/OptionalDependencies.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/OptionalDependencies.java Tue Oct 16 07:21:31 2007
@@ -0,0 +1,492 @@
+package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.ConfigurationException;
+import org.apache.felix.ipojo.MissingHandlerException;
+import org.apache.felix.ipojo.UnacceptableConfiguration;
+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, "StaticSimpleOptionalCheckServiceProvider").createComponentInstance(i1);
+		
+			Properties i2 = new Properties();
+			i2.put("name", "Void");
+			instance2 = Utils.getFactoryByName(context, "StaticVoidOptionalCheckServiceProvider").createComponentInstance(i2);
+		
+			Properties i3 = new Properties();
+			i3.put("name", "Object");
+			instance3 = Utils.getFactoryByName(context, "StaticObjectOptionalCheckServiceProvider").createComponentInstance(i3);
+		
+			Properties i4 = new Properties();
+			i4.put("name", "Ref");
+			instance4 = Utils.getFactoryByName(context, "StaticRefOptionalCheckServiceProvider").createComponentInstance(i4);
+			
+			Properties i5 = new Properties();
+            i5.put("name", "Both");
+            instance5 = Utils.getFactoryByName(context, "StaticBothOptionalCheckServiceProvider").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(), 0);
+		assertEquals("Check FS invocation (long) - 1", ((Long)props.get("long")).longValue(), 0);
+		assertEquals("Check FS invocation (double) - 1", ((Double)props.get("double")).doubleValue(), 0.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
+		assertFalse("check CheckService invocation - 2", ((Boolean)props.get("result")).booleanValue()); // False, the provider was not bound
+		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);
+		assertNull("Check FS invocation (object) - 2", props.get("object"));
+		assertEquals("Check FS invocation (int) - 2", ((Integer)props.get("int")).intValue(), 0);
+		assertEquals("Check FS invocation (long) - 2", ((Long)props.get("long")).longValue(), 0);
+		assertEquals("Check FS invocation (double) - 2", ((Double)props.get("double")).doubleValue(), 0.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 testDelayedSimple() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
+	    instance1.stop();
+	    fooProvider.start();
+	    instance1.start();
+        
+	    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
+        assertTrue("check CheckService invocation - 2", ((Boolean)props.get("result")).booleanValue()); // True, the provider was bound
+        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.INVALID); // Dependency broken
+        
+        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(), 0);
+		assertEquals("Check FS invocation (long) - 1", ((Long)props.get("long")).longValue(), 0);
+		assertEquals("Check FS invocation (double) - 1", ((Double)props.get("double")).doubleValue(), 0.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
+		assertFalse("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);
+		assertNull("Check FS invocation (object) - 2", props.get("object"));
+		assertEquals("Check FS invocation (int) - 2", ((Integer)props.get("int")).intValue(), 0);
+		assertEquals("Check FS invocation (long) - 2", ((Long)props.get("long")).longValue(), 0);
+		assertEquals("Check FS invocation (double) - 2", ((Double)props.get("double")).doubleValue(), 0.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")) + ")", ((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);
+		assertNull("Check FS invocation (object) - 3", props.get("object"));
+		assertEquals("Check FS invocation (int) - 3", ((Integer)props.get("int")).intValue(), 0);
+		assertEquals("Check FS invocation (long) - 3", ((Long)props.get("long")).longValue(), 0);
+		assertEquals("Check FS invocation (double) - 3", ((Double)props.get("double")).doubleValue(), 0.0);
+		
+		id = null;
+		cs = null;
+		context.ungetService(arch_ref);
+		context.ungetService(cs_ref);	
+	}
+	
+	public void testDelayedVoid() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
+        instance2.stop();
+        fooProvider.start();
+        instance2.start();
+        
+        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
+        assertTrue("check CheckService invocation - 2", ((Boolean)props.get("result")).booleanValue()); // True, the provider was bound
+        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.INVALID); // Dependency broken
+        
+        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
+		assertFalse("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(), 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);
+		
+		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);
+		
+		id = null;
+		cs = null;
+		context.ungetService(arch_ref);
+		context.ungetService(cs_ref);		
+	}
+	
+	public void testDelayedObject() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException {
+        instance3.stop();
+        fooProvider.start();
+        instance3.start();
+        
+        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
+        assertTrue("check CheckService invocation - 2", ((Boolean)props.get("result")).booleanValue()); // True, the provider was bound
+        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(), 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);
+        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.INVALID); // Dependency broken
+        
+        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
+		assertFalse("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);
+		
+		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);
+		
+		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
+        assertFalse("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(), 0);
+        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(), 0);
+        assertEquals("check both unbind callback invocation -3", ((Integer)props.get("bothU")).intValue(), 0);
+  
+        id = null;
+        cs = null;
+        context.ungetService(arch_ref);
+        context.ungetService(cs_ref);
+    }
+
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/SimpleDependencies.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/SimpleDependencies.java?rev=585152&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/SimpleDependencies.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/SimpleDependencies.java Tue Oct 16 07:21:31 2007
@@ -0,0 +1,305 @@
+package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+
+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 SimpleDependencies extends TestCase {
+	
+	ComponentInstance instance1, instance2, instance3, instance4, instance5;
+	ComponentInstance fooProvider;
+	
+	public SimpleDependencies(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, "StaticSimpleCheckServiceProvider").createComponentInstance(i1);
+		
+			Properties i2 = new Properties();
+			i2.put("name", "Void");
+			instance2 = Utils.getFactoryByName(context, "StaticVoidCheckServiceProvider").createComponentInstance(i2);
+		
+			Properties i3 = new Properties();
+			i3.put("name", "Object");
+			instance3 = Utils.getFactoryByName(context, "StaticObjectCheckServiceProvider").createComponentInstance(i3);
+		
+			Properties i4 = new Properties();
+			i4.put("name", "Ref");
+			instance4 = Utils.getFactoryByName(context, "StaticRefCheckServiceProvider").createComponentInstance(i4);
+			
+			Properties i5 = new Properties();
+            i5.put("name", "Both");
+            instance5 = Utils.getFactoryByName(context, "StaticBothCheckServiceProvider").createComponentInstance(i5);
+		} catch(Exception e) { 
+		    e.printStackTrace();
+		    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 invalidity - 1", id.getState() == ComponentInstance.INVALID);
+		
+		fooProvider.start();
+		
+		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);
+		assertTrue("check CheckService invocation", cs.check());
+		
+		fooProvider.stop();
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+		
+		fooProvider.start();
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.INVALID);
+		
+		cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance1.getInstanceName());
+		assertNull("Check CheckService availability", cs_ref);
+		
+		fooProvider.stop();
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+		
+		id = null;
+		cs = null;
+		context.ungetService(arch_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 invalidity - 1", id.getState() == ComponentInstance.INVALID);
+		
+		fooProvider.start();
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID);
+		
+		ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance2.getInstanceName());
+		assertNotNull("Check CheckService availability", cs_ref);
+		Object o = context.getService(cs_ref);
+		CheckService cs = (CheckService) o;
+		Properties props = cs.getProps();
+		//Check properties
+		assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+		assertEquals("check void bind invocation -1 ("+((Integer)props.get("voidB")).intValue()+")", ((Integer)props.get("voidB")).intValue(), 1);
+		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);
+		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.stop();
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+		
+		fooProvider.start();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance2.getInstanceName());
+        assertNull("Check CheckService availability - 2", cs_ref);
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+		
+		id = null;
+		cs = null;
+		context.ungetService(arch_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 invalidity - 1", id.getState() == ComponentInstance.INVALID);
+		
+		fooProvider.start();
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity", 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
+		assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+		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(), 1);
+		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);
+		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.stop();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance3.getInstanceName());
+        assertNull("Check CheckService availability - 2", cs_ref);
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        id = null;
+        cs = null;
+        context.ungetService(arch_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 invalidity - 1", id.getState() == ComponentInstance.INVALID);
+		
+		fooProvider.start();
+		
+		id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity", 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
+		assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+		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(), 1);
+		assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).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.stop();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance4.getInstanceName());
+        assertNull("Check CheckService availability - 2", cs_ref);
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        id = null;
+        cs = null;
+        context.ungetService(arch_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 invalidity - 1", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity", 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
+        assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue());
+        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);
+        assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 1);
+        assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0);
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        fooProvider.start();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance5.getInstanceName());
+        assertNull("Check CheckService availability - 2", cs_ref);
+        
+        fooProvider.stop();
+        
+        id = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID);
+        
+        id = null;
+        cs = null;
+        context.ungetService(arch_ref);     
+    }
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/StaticDependencyTestSuite.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/StaticDependencyTestSuite.java?rev=585152&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/StaticDependencyTestSuite.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/dependency/statics/StaticDependencyTestSuite.java Tue Oct 16 07:21:31 2007
@@ -0,0 +1,27 @@
+package org.apache.felix.ipojo.test.scenarios.dependency.statics;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osgi.framework.BundleContext;
+
+import fr.imag.adele.escoffier.utf.framework.TestSuite;
+
+public class StaticDependencyTestSuite extends TestSuite {
+	
+	public StaticDependencyTestSuite(BundleContext bc) { super(bc); }
+
+	public List suite() {
+		List list = new ArrayList();
+		list.add(new SimpleDependencies(context));
+		list.add(new OptionalDependencies(context));
+		list.add(new MultipleDependencies(context));
+//		list.add(new OptionalMultipleDependencies(context));
+		list.add(new MethodSimpleDependencies(context));
+        list.add(new MethodOptionalDependencies(context));
+//        list.add(new MethodMultipleDependencies(context));
+//        list.add(new MethodOptionalMultipleDependencies(context));
+		return list;
+	}
+
+}

Modified: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java?rev=585152&r1=585151&r2=585152&view=diff
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java (original)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java Tue Oct 16 07:21:31 2007
@@ -146,11 +146,11 @@
         assertEquals("Check validity", arch.getInstanceDescription().getState(), ComponentInstance.VALID);
         
         // Kill the handler factory
-        HandlerFactory f = (HandlerFactory) Utils.getFactoryByName(context, "check");
+        HandlerFactory f = (HandlerFactory) Utils.getHandlerFactoryByName(context, "check");
         f.stop();
         
         sr = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "HandlerTest-1");
-        assertNull("Check the check service availability", sr);
+        assertNull("Check the check service unavailability", sr);
         
         sr_arch = Utils.getServiceReferenceByName(context, Architecture.class.getName(), "HandlerTest-1");
         assertNull("Check the architecture unavailability", sr_arch);

Modified: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java?rev=585152&r1=585151&r2=585152&view=diff
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java (original)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java Tue Oct 16 07:21:31 2007
@@ -44,6 +44,8 @@
 		
 		lazzyRef = Utils.getServiceReference(bc, Architecture.class.getName(), "(instance.name="+compName+")");
 		immRef =   Utils.getServiceReference(bc, Architecture.class.getName(), "(instance.name="+compName2+")");
+		assertNotNull("LazzyRef", lazzyRef);
+		assertNotNull("ImmRef", immRef);
 	}
 	
 	public void tearDown() {

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ChildInterface.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ChildInterface.java?rev=585152&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ChildInterface.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ChildInterface.java Tue Oct 16 07:21:31 2007
@@ -0,0 +1,7 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+public interface ChildInterface extends ParentInterface1, ParentInterface2 {
+    
+    public void processChild();
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface1.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface1.java?rev=585152&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface1.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface1.java Tue Oct 16 07:21:31 2007
@@ -0,0 +1,7 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+public interface ParentInterface1 extends ParentParentInterface {
+    
+    public void processParent1();
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface2.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface2.java?rev=585152&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface2.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentInterface2.java Tue Oct 16 07:21:31 2007
@@ -0,0 +1,7 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+public interface ParentInterface2 {
+    
+    public void processParent2();
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentParentInterface.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentParentInterface.java?rev=585152&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentParentInterface.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/ParentParentInterface.java Tue Oct 16 07:21:31 2007
@@ -0,0 +1,7 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+public interface ParentParentInterface {
+    
+    public void processParentParent();
+
+}

Modified: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/FactoryProps.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/FactoryProps.java?rev=585152&r1=585151&r2=585152&view=diff
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/FactoryProps.java (original)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/FactoryProps.java Tue Oct 16 07:21:31 2007
@@ -40,8 +40,8 @@
 		assertNotNull("The factory is available", ref1);
 		String[] spec = (String[]) ref1.getProperty("component.providedServiceSpecifications");
 		assertEquals("Check array length", spec.length, 2);
-		assertEquals("Check spec 1", spec[0], FooService.class.getName());
-		assertEquals("Check spec 2", spec[1], BarService.class.getName());
+		assertEquals("Check spec 1", spec[1], FooService.class.getName());
+		assertEquals("Check spec 2", spec[0], BarService.class.getName());
 	}
 	
 	public void testProps() {

Modified: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/ProvidedServiceTestSuite.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/ProvidedServiceTestSuite.java?rev=585152&r1=585151&r2=585152&view=diff
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/ProvidedServiceTestSuite.java (original)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/ProvidedServiceTestSuite.java Tue Oct 16 07:21:31 2007
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.felix.ipojo.test.scenarios.service.providing.inherited.InheritedTest;
 import org.osgi.framework.BundleContext;
 
 import fr.imag.adele.escoffier.utf.framework.TestSuite;
@@ -22,6 +23,7 @@
 		suite.add(new FactoryProps(context));
 		suite.add(new StaticPropsReconfiguration(context));
 		suite.add(new DynamicPropsReconfiguration(context));
+		suite.add(new InheritedTest(context));
 		return suite;
 	}
 

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/inherited/InheritedTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/inherited/InheritedTest.java?rev=585152&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/inherited/InheritedTest.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/inherited/InheritedTest.java Tue Oct 16 07:21:31 2007
@@ -0,0 +1,181 @@
+package org.apache.felix.ipojo.test.scenarios.service.providing.inherited;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.test.scenarios.service.ChildInterface;
+import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.service.ParentInterface1;
+import org.apache.felix.ipojo.test.scenarios.service.ParentInterface2;
+import org.apache.felix.ipojo.test.scenarios.service.ParentParentInterface;
+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 InheritedTest extends TestCase {
+    
+    private Factory pi1, pi11, pi12, pi2, pi21, pi3;
+    
+    public InheritedTest(BundleContext bc) {
+        super(bc);
+    }
+    
+    public void setUp() {
+        pi1 = Utils.getFactoryByName(context, "PI1");
+        pi11 = Utils.getFactoryByName(context, "PI1-1");
+        pi12 = Utils.getFactoryByName(context, "PI1-2");
+        
+        pi2 = Utils.getFactoryByName(context, "PI2");
+        pi21 = Utils.getFactoryByName(context, "PI2-1");
+        
+        pi3 = Utils.getFactoryByName(context, "PI3");
+    }
+    
+    private boolean contains(String[] arr, String txt) {
+        for (int i = 0; i < arr.length; i++) {
+            if (arr[i].equals(txt)) {
+                return true;
+            }
+        }
+        return false;
+    }
+    
+    public void testPI1Factory() {
+        String[] specs = pi1.getComponentDescription().getprovidedServiceSpecification();
+        assertEquals("Check provides count", specs.length, 4);
+        assertTrue("Check Child", contains(specs, ChildInterface.class.getName()));
+        assertTrue("Check Parent1", contains(specs, ParentInterface1.class.getName()));
+        assertTrue("Check Parent2", contains(specs, ParentInterface2.class.getName()));
+        assertTrue("Check ParentParent", contains(specs, ParentParentInterface.class.getName()));
+    }
+    
+    public void testPI11Factory() {
+        String[] specs = pi11.getComponentDescription().getprovidedServiceSpecification();
+        assertEquals("Check provides count", specs.length, 1);
+        assertTrue("Check ParentParent", contains(specs, ParentParentInterface.class.getName()));
+    }
+    
+    public void testPI12Factory() {
+        String[] specs = pi12.getComponentDescription().getprovidedServiceSpecification();
+        assertEquals("Check provides count", specs.length, 2);
+        assertTrue("Check Parent2", contains(specs, ParentInterface2.class.getName()));
+        assertTrue("Check ParentParent", contains(specs, ParentParentInterface.class.getName()));
+    }
+    
+    public void testPI2Factory() {
+        String[] specs = pi2.getComponentDescription().getprovidedServiceSpecification();
+        assertEquals("Check provides count ("+specs.length+")", specs.length, 4);
+        assertTrue("Check Child", contains(specs, ChildInterface.class.getName()));
+        assertTrue("Check Parent1", contains(specs, ParentInterface1.class.getName()));
+        assertTrue("Check Parent2", contains(specs, ParentInterface2.class.getName()));
+        assertTrue("Check ParentParent", contains(specs, ParentParentInterface.class.getName()));
+    }
+    
+    public void testPI21Factory() {
+        String[] specs = pi21.getComponentDescription().getprovidedServiceSpecification();
+        assertEquals("Check provides count", specs.length, 1);
+        assertTrue("Check ParentParent", contains(specs, ParentParentInterface.class.getName()));
+    }
+    
+    public void testPI3Factory() {
+        String[] specs = pi3.getComponentDescription().getprovidedServiceSpecification();
+        assertEquals("Check provides count", specs.length, 5);
+        assertTrue("Check Child", contains(specs, ChildInterface.class.getName()));
+        assertTrue("Check Parent1", contains(specs, ParentInterface1.class.getName()));
+        assertTrue("Check Parent2", contains(specs, ParentInterface2.class.getName()));
+        assertTrue("Check ParentParent", contains(specs, ParentParentInterface.class.getName()));
+        assertTrue("Check FS", contains(specs, FooService.class.getName()));
+    }
+    
+    public void testIP1() {
+        ComponentInstance ci = Utils.getComponentInstanceByName(context, pi1.getName(), "ci");
+        
+        ServiceReference ref1 = Utils.getServiceReferenceByName(context, ChildInterface.class.getName(), "ci");
+        assertNotNull("Check Child", ref1);
+        
+        ServiceReference ref2 = Utils.getServiceReferenceByName(context, ParentInterface1.class.getName(), "ci");
+        assertNotNull("Check Parent1", ref2);
+        
+        ServiceReference ref3 = Utils.getServiceReferenceByName(context, ParentInterface2.class.getName(), "ci");
+        assertNotNull("Check Parent2", ref3);
+        
+        ServiceReference ref4 = Utils.getServiceReferenceByName(context, ParentParentInterface.class.getName(), "ci");
+        assertNotNull("Check PP", ref4);
+        
+        ci.dispose();
+    }
+    
+    public void testIP11() {
+        ComponentInstance ci = Utils.getComponentInstanceByName(context, pi11.getName(), "ci");
+        
+        ServiceReference ref4 = Utils.getServiceReferenceByName(context, ParentParentInterface.class.getName(), "ci");
+        assertNotNull("Check PP", ref4);
+        
+        ci.dispose();
+    }
+    
+    public void testIP12() {
+        ComponentInstance ci = Utils.getComponentInstanceByName(context, pi12.getName(), "ci");
+        
+        ServiceReference ref3 = Utils.getServiceReferenceByName(context, ParentInterface2.class.getName(), "ci");
+        assertNotNull("Check Parent2", ref3);
+        
+        ServiceReference ref4 = Utils.getServiceReferenceByName(context, ParentParentInterface.class.getName(), "ci");
+        assertNotNull("Check PP", ref4);
+        
+        ci.dispose();
+    }
+    
+    public void testIP2() {
+        ComponentInstance ci = Utils.getComponentInstanceByName(context, pi2.getName(), "ci");
+        
+        ServiceReference ref1 = Utils.getServiceReferenceByName(context, ChildInterface.class.getName(), "ci");
+        assertNotNull("Check Child", ref1);
+        
+        ServiceReference ref2 = Utils.getServiceReferenceByName(context, ParentInterface1.class.getName(), "ci");
+        assertNotNull("Check Parent1", ref2);
+        
+        ServiceReference ref3 = Utils.getServiceReferenceByName(context, ParentInterface2.class.getName(), "ci");
+        assertNotNull("Check Parent2", ref3);
+        
+        ServiceReference ref4 = Utils.getServiceReferenceByName(context, ParentParentInterface.class.getName(), "ci");
+        assertNotNull("Check PP", ref4);
+        
+        ci.dispose();
+    }
+    
+    public void testIP21() {
+        ComponentInstance ci = Utils.getComponentInstanceByName(context, pi21.getName(), "ci");
+        
+        ServiceReference ref4 = Utils.getServiceReferenceByName(context, ParentParentInterface.class.getName(), "ci");
+        assertNotNull("Check PP", ref4);
+        
+        ci.dispose();
+    }
+    
+    public void testIP3() {
+        ComponentInstance ci = Utils.getComponentInstanceByName(context, pi3.getName(), "ci");
+        
+        ServiceReference ref1 = Utils.getServiceReferenceByName(context, ChildInterface.class.getName(), "ci");
+        assertNotNull("Check Child", ref1);
+        
+        ServiceReference ref2 = Utils.getServiceReferenceByName(context, ParentInterface1.class.getName(), "ci");
+        assertNotNull("Check Parent1", ref2);
+        
+        ServiceReference ref3 = Utils.getServiceReferenceByName(context, ParentInterface2.class.getName(), "ci");
+        assertNotNull("Check Parent2", ref3);
+        
+        ServiceReference ref4 = Utils.getServiceReferenceByName(context, ParentParentInterface.class.getName(), "ci");
+        assertNotNull("Check PP", ref4);
+        
+        ServiceReference ref5 = Utils.getServiceReferenceByName(context, FooService.class.getName(), "ci");
+        assertNotNull("Check FS", ref5);
+        
+        ci.dispose();
+    }
+    
+    
+    
+
+}

Modified: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java?rev=585152&r1=585151&r2=585152&view=diff
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java (original)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/util/Utils.java Tue Oct 16 07:21:31 2007
@@ -1,10 +1,13 @@
 package org.apache.felix.ipojo.test.scenarios.util;
 
 import java.util.Dictionary;
+import java.util.Properties;
 
 import org.apache.felix.ipojo.ComponentInstance;
 import org.apache.felix.ipojo.CompositeManager;
 import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.Handler;
+import org.apache.felix.ipojo.HandlerFactory;
 import org.apache.felix.ipojo.ServiceContext;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.InvalidSyntaxException;
@@ -12,188 +15,256 @@
 import org.osgi.service.cm.ManagedServiceFactory;
 
 public class Utils {
-	
-	public static Factory getFactoryByName(BundleContext bc, String factoryName){
-		ServiceReference[] refs;
-		try {
-			refs = bc.getServiceReferences(Factory.class.getName(), "(factory.name="+factoryName+")");
-			if(refs == null) {
-			    System.err.println("Cannot get the factory " + factoryName);
-			    return null; 
-			}
-			return ((Factory) bc.getService(refs[0]));
-		} catch (InvalidSyntaxException e) {
-			System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
-			return null;
-		}
-	}
-	
-	public static ComponentInstance getComponentInstance(BundleContext bc, String factoryName, Dictionary configuration) {
-		Factory fact = getFactoryByName(bc, factoryName);
-		
-		if (fact == null) {
-		    System.err.println("Factory " + factoryName + " not found");
-		    return null;
-		}
-		
-		//if(fact.isAcceptable(configuration)) {
-			try {
-				return fact.createComponentInstance(configuration);
-			} catch(Exception e) {
-				System.err.println("Cannot create the instance from " + factoryName + " : " + e.getMessage());
-				e.printStackTrace();
-				return null;
-			}
-		//} 
-		//else {
-		//	System.err.println("Configuration not accepted by : " + factoryName);
-		//	return null;
-		//}
-	}
-	
-	public static ServiceReference[] getServiceReferences(BundleContext bc, String itf, String filter) {
-		ServiceReference[] refs = null;
-		try {
-			refs = bc.getServiceReferences(itf, filter);
-		} catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
-		if(refs == null) { return new ServiceReference[0]; }
-		else { return refs; }
-	}
-	
-	public static ServiceReference getServiceReference(BundleContext bc, String itf, String filter) {
-		ServiceReference[] refs = null;
-		try {
-			refs = bc.getServiceReferences(itf, filter);
-		} catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
-		if(refs == null) { return null; }
-		else { return refs[0]; }
-	}
-	
-	public static ServiceReference getServiceReferenceByName(BundleContext bc, String itf, String name) {
-		ServiceReference[] refs = null;
-		String filter = null;
-		if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
-		    filter = "("+"factory.name"+"="+name+")";
-		} else {
-		    filter = "("+"instance.name"+"="+name+")";   
-		}
-		try {
-			refs = bc.getServiceReferences(itf, filter);
-		} catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
-		if(refs == null) { return null; }
-		else { return refs[0]; }
-	}	
-	
-	public static Object getServiceObject(BundleContext bc, String itf, String filter) {
-		ServiceReference ref = getServiceReference(bc, itf, filter);
-		if(ref != null) { return bc.getService(ref); }
-		else { return null; }
-	}
-	
-	public static Object[] getServiceObjects(BundleContext bc, String itf, String filter) {
-		ServiceReference[] refs = getServiceReferences(bc, itf, filter);
-		if(refs != null) { 
-			Object[] list = new Object[refs.length];
-			for(int i = 0; i < refs.length; i++) {
-				list[i] = bc.getService(refs[i]);
-			}
-			return list;
-		}
-		else { return new Object[0]; }
-	}
-	
-	public static ServiceContext getServiceContext(ComponentInstance ci) {
-		if(ci instanceof CompositeManager) {
-			return ((CompositeManager) ci).getServiceContext();
-		} else {
-			throw new RuntimeException("Cannot get the service context form an non composite instance");
-		}
-	}
-	
-	public static Factory getFactoryByName(ServiceContext bc, String factoryName){
-		ServiceReference[] refs;
-		try {
-			refs = bc.getServiceReferences(Factory.class.getName(), "(factory.name="+factoryName+")");
-			if(refs == null) { return null; }
-			return ((Factory) bc.getService(refs[0]));
-		} catch (InvalidSyntaxException e) {
-			System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
-			return null;
-		}
-	}
-	
-	public static ComponentInstance getComponentInstance(ServiceContext bc, String factoryName, Dictionary configuration) {
-		Factory fact = getFactoryByName(bc, factoryName);
-		
-		if (fact == null) { return null; }
-		
-		if(fact.isAcceptable(configuration)) {
-			try {
-				return fact.createComponentInstance(configuration);
-			} catch(Exception e) {
-				System.err.println(e.getMessage());
-				e.printStackTrace();
-				return null;
-			}
-		} 
-		else {
-			System.err.println("Configuration not accepted by : " + factoryName);
-			return null;
-		}
-	}
-	
-	public static ServiceReference[] getServiceReferences(ServiceContext bc, String itf, String filter) {
-		ServiceReference[] refs = null;
-		try {
-			refs = bc.getServiceReferences(itf, filter);
-		} catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
-		if(refs == null) { return new ServiceReference[0]; }
-		else { return refs; }
-	}
-	
-	public static ServiceReference getServiceReference(ServiceContext bc, String itf, String filter) {
-		ServiceReference[] refs = null;
-		try {
-			refs = bc.getServiceReferences(itf, filter);
-		} catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
-		if(refs == null) { return null; }
-		else { return refs[0]; }
-	}
-	
-	public static ServiceReference getServiceReferenceByName(ServiceContext bc, String itf, String name) {
-		ServiceReference[] refs = null;
+
+    public static Factory getFactoryByName(BundleContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(factory.name=" + factoryName + ")");
+            if (refs == null) {
+                System.err.println("Cannot get the factory " + factoryName);
+                return null;
+            }
+            return ((Factory) bc.getService(refs[0]));
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static HandlerFactory getHandlerFactoryByName(BundleContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(" + Handler.HANDLER_NAME_PROPERTY + "=" + factoryName + ")");
+            if (refs == null) {
+                System.err.println("Cannot get the factory " + factoryName);
+                return null;
+            }
+            return (HandlerFactory) bc.getService(refs[0]);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static ComponentInstance getComponentInstance(BundleContext bc, String factoryName, Dictionary configuration) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) {
+            System.err.println("Factory " + factoryName + " not found");
+            return null;
+        }
+
+        // if(fact.isAcceptable(configuration)) {
+        try {
+            return fact.createComponentInstance(configuration);
+        } catch (Exception e) {
+            System.err.println("Cannot create the instance from " + factoryName + " : " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+        // }
+        // else {
+        // System.err.println("Configuration not accepted by : " + factoryName);
+        // return null;
+        // }
+    }
+
+    public static ComponentInstance getComponentInstanceByName(BundleContext bc, String factoryName, String name) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) {
+            System.err.println("Factory " + factoryName + " not found");
+            return null;
+        }
+
+        try {
+            Properties props = new Properties();
+            props.put("name", name);
+            return fact.createComponentInstance(props);
+        } catch (Exception e) {
+            System.err.println("Cannot create the instance from " + factoryName + " : " + e.getMessage());
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static ServiceReference[] getServiceReferences(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return new ServiceReference[0];
+        } else {
+            return refs;
+        }
+    }
+
+    public static ServiceReference getServiceReference(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static ServiceReference getServiceReferenceByName(BundleContext bc, String itf, String name) {
+        ServiceReference[] refs = null;
+        String filter = null;
+        if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
+            filter = "(" + "factory.name" + "=" + name + ")";
+        } else {
+            filter = "(" + "instance.name" + "=" + name + ")";
+        }
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static Object getServiceObject(BundleContext bc, String itf, String filter) {
+        ServiceReference ref = getServiceReference(bc, itf, filter);
+        if (ref != null) {
+            return bc.getService(ref);
+        } else {
+            return null;
+        }
+    }
+
+    public static Object[] getServiceObjects(BundleContext bc, String itf, String filter) {
+        ServiceReference[] refs = getServiceReferences(bc, itf, filter);
+        if (refs != null) {
+            Object[] list = new Object[refs.length];
+            for (int i = 0; i < refs.length; i++) {
+                list[i] = bc.getService(refs[i]);
+            }
+            return list;
+        } else {
+            return new Object[0];
+        }
+    }
+
+    public static ServiceContext getServiceContext(ComponentInstance ci) {
+        if (ci instanceof CompositeManager) {
+            return ((CompositeManager) ci).getServiceContext();
+        } else {
+            throw new RuntimeException("Cannot get the service context form an non composite instance");
+        }
+    }
+
+    public static Factory getFactoryByName(ServiceContext bc, String factoryName) {
+        ServiceReference[] refs;
+        try {
+            refs = bc.getServiceReferences(Factory.class.getName(), "(factory.name=" + factoryName + ")");
+            if (refs == null) { return null; }
+            return ((Factory) bc.getService(refs[0]));
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Cannot get the factory " + factoryName + " : " + e.getMessage());
+            return null;
+        }
+    }
+
+    public static ComponentInstance getComponentInstance(ServiceContext bc, String factoryName, Dictionary configuration) {
+        Factory fact = getFactoryByName(bc, factoryName);
+
+        if (fact == null) { return null; }
+
+        if (fact.isAcceptable(configuration)) {
+            try {
+                return fact.createComponentInstance(configuration);
+            } catch (Exception e) {
+                System.err.println(e.getMessage());
+                e.printStackTrace();
+                return null;
+            }
+        } else {
+            System.err.println("Configuration not accepted by : " + factoryName);
+            return null;
+        }
+    }
+
+    public static ServiceReference[] getServiceReferences(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return new ServiceReference[0];
+        } else {
+            return refs;
+        }
+    }
+
+    public static ServiceReference getServiceReference(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static ServiceReference getServiceReferenceByName(ServiceContext bc, String itf, String name) {
+        ServiceReference[] refs = null;
         String filter = null;
         if (itf.equals(Factory.class.getName()) || itf.equals(ManagedServiceFactory.class.getName())) {
             filter = "(" + "factory.name" + "=" + name + ")";
         } else {
             filter = "(" + "instance.name" + "=" + name + ")";
         }
-		try {
-			refs = bc.getServiceReferences(itf, filter);
-		} catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
-		if(refs == null) { return null; }
-		else { return refs[0]; }
-	}
-	
-	public static Object getServiceObject(ServiceContext bc, String itf, String filter) {
-		ServiceReference ref = getServiceReference(bc, itf, filter);
-		if(ref != null) { return bc.getService(ref); }
-		else { return null; }
-	}
-	
-	public static Object[] getServiceObjects(ServiceContext bc, String itf, String filter) {
-		ServiceReference[] refs = getServiceReferences(bc, itf, filter);
-		if(refs != null) { 
-			Object[] list = new Object[refs.length];
-			for(int i = 0; i < refs.length; i++) {
-				list[i] = bc.getService(refs[i]);
-			}
-			return list;
-		}
-		else { return new Object[0]; }
-	}
-	
-	
-	
+        try {
+            refs = bc.getServiceReferences(itf, filter);
+        } catch (InvalidSyntaxException e) {
+            System.err.println("Invalid Filter : " + filter);
+        }
+        if (refs == null) {
+            return null;
+        } else {
+            return refs[0];
+        }
+    }
+
+    public static Object getServiceObject(ServiceContext bc, String itf, String filter) {
+        ServiceReference ref = getServiceReference(bc, itf, filter);
+        if (ref != null) {
+            return bc.getService(ref);
+        } else {
+            return null;
+        }
+    }
+
+    public static Object[] getServiceObjects(ServiceContext bc, String itf, String filter) {
+        ServiceReference[] refs = getServiceReferences(bc, itf, filter);
+        if (refs != null) {
+            Object[] list = new Object[refs.length];
+            for (int i = 0; i < refs.length; i++) {
+                list[i] = bc.getService(refs[i]);
+            }
+            return list;
+        } else {
+            return new Object[0];
+        }
+    }
 
 }



Mime
View raw message