You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cl...@apache.org on 2007/09/25 17:07:18 UTC

svn commit: r579291 [11/12] - in /felix/sandbox/clement/Tests/Suite: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/felix/ src/main/java/org/apache/felix/ipojo/ src/main/java/org/apache/felix/ipoj...

Added: 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=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/handler/HandlerTest.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,179 @@
+package org.apache.felix.ipojo.test.scenarios.handler;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.HandlerFactory;
+import org.apache.felix.ipojo.architecture.Architecture;
+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.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+import fr.imag.adele.escoffier.utf.framework.TestCase;
+
+public class HandlerTest extends TestCase {
+
+	ComponentInstance instance;
+	
+	public HandlerTest(BundleContext arg0) {
+		super(arg0);
+	}
+	
+	public void setUp() {
+		Properties props = new Properties();
+		props.put("name", "HandlerTest-1");
+		props.put("csh.simple", "simple");
+		Properties p = new Properties();
+		p.put("a", "a");
+		p.put("b", "b");
+		p.put("c", "c");
+		props.put("csh.map", p);
+		instance = Utils.getComponentInstance(context, "HandlerTester", props);
+	}
+	
+	public void tearDown() {
+		instance.dispose();
+		instance = null;
+	}
+	
+	public void testConfiguration1() {
+		// Check the availability of CheckService
+	    String name = "HandlerTest-1";
+		ServiceReference sr = null;
+		ServiceReference[] refs = null;
+        String filter = "("+"instance.name"+"="+name+")";
+        try {
+            refs = context.getServiceReferences(CheckService.class.getName(), filter);
+        } catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
+        if(refs != null) { sr = refs[0]; }
+        
+		assertNotNull("Check the check service availability", sr);
+		
+		CheckService cs = (CheckService) context.getService(sr);
+		Properties p = cs.getProps();
+		assertEquals("Assert 'simple' equality", p.get("Simple"), "simple");
+		assertEquals("Assert 'a' equality", p.get("Map1"), "a");
+		assertEquals("Assert 'b' equality", p.get("Map2"), "b");
+		assertEquals("Assert 'c' equality", p.get("Map3"), "c");
+		
+		cs = null;
+		context.ungetService(sr);
+	}
+	
+	public void testConfiguration2() {
+		// Check the availability of CheckService
+	    String name = "HandlerTest-2";
+        ServiceReference sr = null;
+        ServiceReference[] refs = null;
+        String filter = "("+"instance.name"+"="+name+")";
+        try {
+            refs = context.getServiceReferences(CheckService.class.getName(), filter);
+        } catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
+        if(refs != null) { sr = refs[0]; }
+		assertNotNull("Check the check service availability", sr);
+		
+		CheckService cs = (CheckService) context.getService(sr);
+		Properties p = cs.getProps();
+		assertEquals("Assert 'simple' equality", p.get("Simple"), "Simple");
+		assertEquals("Assert 'a' equality", p.get("Map1"), "a");
+		assertEquals("Assert 'b' equality", p.get("Map2"), "b");
+		assertEquals("Assert 'c' equality", p.get("Map3"), "c");
+		
+		cs = null;
+		context.ungetService(sr);
+	}
+	
+	public void testLifecycle() {
+		// Check the availability of CheckService
+	    String name = "HandlerTest-1";
+        ServiceReference sr = null;
+        ServiceReference[] refs = null;
+        String filter = "("+"instance.name"+"="+name+")";
+        try {
+            refs = context.getServiceReferences(CheckService.class.getName(), filter);
+        } catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
+        if(refs != null) { sr = refs[0]; }
+		assertNotNull("Check the check service availability", sr);
+		
+		ServiceReference sr_arch = Utils.getServiceReferenceByName(context, Architecture.class.getName(), "HandlerTest-1");
+		Architecture arch = (Architecture) context.getService(sr_arch);
+		
+		assertEquals("Check instance validity - 0", arch.getInstanceDescription().getState(), ComponentInstance.VALID);
+		
+		CheckService cs = (CheckService) context.getService(sr);
+		Properties p = cs.getProps();
+		Integer changes = (Integer) p.get("changes");
+		assertNotNull("Check changes no null", changes);
+		assertEquals("Changes changes 1 ("+changes+")", changes.intValue(), 1);
+		assertEquals("Check instance validity - 1", arch.getInstanceDescription().getState(), ComponentInstance.VALID);
+		cs.check();
+		p = cs.getProps();
+		changes = (Integer) p.get("changes");
+		assertEquals("Changes changes 2 ("+changes+")", changes.intValue(), 2);
+		assertEquals("Check instance validity - 2", arch.getInstanceDescription().getState(), ComponentInstance.INVALID);
+		cs.check();
+		p = cs.getProps();
+		changes = (Integer) p.get("changes");
+		assertEquals("Changes changes 3 ("+changes+")", changes.intValue(), 3);
+		assertEquals("Check instance validity - 3", arch.getInstanceDescription().getState(), ComponentInstance.VALID);
+		cs.check();
+		p = cs.getProps();
+		changes = (Integer) p.get("changes");
+		assertEquals("Changes changes 4 ("+changes+")", changes.intValue(), 4);
+		assertEquals("Check instance validity - 4", arch.getInstanceDescription().getState(), ComponentInstance.INVALID);
+		
+		cs = null;
+		arch = null;
+		context.ungetService(sr_arch);
+		context.ungetService(sr);
+	}
+	
+	public void testAvailability() {
+	    String name = "HandlerTest-1";
+        ServiceReference sr = null;
+        ServiceReference[] refs = null;
+        String filter = "("+"instance.name"+"="+name+")";
+        try {
+            refs = context.getServiceReferences(CheckService.class.getName(), filter);
+        } catch (InvalidSyntaxException e) { System.err.println("Invalid Filter : " + filter);}
+        if(refs != null) { sr = refs[0]; }
+        assertNotNull("Check the check service availability", sr);
+        
+        ServiceReference sr_arch = Utils.getServiceReferenceByName(context, Architecture.class.getName(), "HandlerTest-1");
+        Architecture arch = (Architecture) context.getService(sr_arch);
+        assertEquals("Check validity", arch.getInstanceDescription().getState(), ComponentInstance.VALID);
+        
+        // Kill the handler factory
+        HandlerFactory f = (HandlerFactory) Utils.getFactoryByName(context, "check");
+        f.stop();
+        
+        sr = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "HandlerTest-1");
+        assertNull("Check the check service availability", sr);
+        
+        sr_arch = Utils.getServiceReferenceByName(context, Architecture.class.getName(), "HandlerTest-1");
+        assertNull("Check the architecture unavailability", sr_arch);
+        
+        // The instance is disposed, restart the handler
+        f.start();
+        
+        Properties props = new Properties();
+        props.put("name", "HandlerTest-1");
+        props.put("csh.simple", "simple");
+        Properties p = new Properties();
+        p.put("a", "a");
+        p.put("b", "b");
+        p.put("c", "c");
+        props.put("csh.map", p);
+        instance = Utils.getComponentInstance(context, "HandlerTester", props);
+        
+        sr = Utils.getServiceReferenceByName(context, CheckService.class.getName(), "HandlerTest-1");
+        assertNotNull("Check the check service availability - 2", sr);
+        
+        sr_arch = Utils.getServiceReferenceByName(context, Architecture.class.getName(), "HandlerTest-1");
+        arch = (Architecture) context.getService(sr_arch);
+        assertEquals("Check validity - 2", arch.getInstanceDescription().getState(), ComponentInstance.VALID);
+	}
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/CallbackTestCase.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/CallbackTestCase.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/CallbackTestCase.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/CallbackTestCase.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,101 @@
+package org.apache.felix.ipojo.test.scenarios.lifecycle;
+
+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 CallbackTestCase extends TestCase {
+	
+	ComponentInstance instance; // Instance under test
+	ComponentInstance fooProvider;
+
+	public CallbackTestCase(BundleContext arg0) { super(arg0);	}
+	
+	public void setUp() {
+		Properties p2 = new Properties();
+		p2.put("name", "fooProvider");
+		fooProvider = Utils.getComponentInstance(context, "FooProviderType-1", p2);
+		fooProvider.stop();
+		
+		Properties p1 = new Properties();
+		p1.put("name", "callback");
+		instance = Utils.getComponentInstance(context, "CallbackCheckService", p1);
+		
+	}
+	
+	public void tearDown() {
+		instance.dispose();
+		fooProvider.dispose();
+		instance= null;
+		fooProvider = null;
+	}
+	
+	public void testCallback() {
+		// Check instance is invalid
+		ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance.getInstanceName());
+		assertNotNull("Check architecture availability", arch_ref);
+		InstanceDescription id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance invalidity - 1", id_dep.getState() == ComponentInstance.INVALID);
+		assertEquals("Check pojo count - 1", id_dep.getCreatedObjects().length, 0);
+		
+		// Start fooprovider
+		fooProvider.start();
+		
+		// Check instance validity
+		id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity - 1", id_dep.getState() == ComponentInstance.VALID);
+		
+		// Check service providing
+		ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check CheckService availability", cs_ref);
+		CheckService cs = (CheckService) context.getService(cs_ref);
+		assertTrue("check CheckService invocation", cs.check());
+		
+		// Check int property
+		Integer index = (Integer) (cs.getProps().get("int"));
+		assertEquals("Check int property - 1", index.intValue(), 1);
+		
+		assertEquals("Check pojo count - 2", id_dep.getCreatedObjects().length, 1);
+		
+		fooProvider.stop();
+		
+		id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance invalidity - 2", id_dep.getState() == ComponentInstance.INVALID);
+		
+		assertEquals("Check pojo count - 3", id_dep.getCreatedObjects().length, 1);
+		
+		fooProvider.start();
+		
+		// Check instance validity
+		id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity - 2", id_dep.getState() == ComponentInstance.VALID);
+		
+		// Check service providing
+		cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check CheckService availability", cs_ref);
+		cs = (CheckService) context.getService(cs_ref);
+		assertTrue("check CheckService invocation", cs.check());
+		
+		// Check int property
+		index = (Integer) (cs.getProps().get("int"));
+		assertEquals("Check int property - 2 ("+index.intValue()+")", index.intValue(), 3);
+		
+		assertEquals("Check pojo count - 4 ", id_dep.getCreatedObjects().length, 1);
+		
+		// Clean up
+		context.ungetService(arch_ref);
+		context.ungetService(cs_ref);
+		cs = null;
+		id_dep = null;
+	}
+		
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackTest.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackTest.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ImmediateCallbackTest.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,100 @@
+package org.apache.felix.ipojo.test.scenarios.lifecycle;
+
+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 ImmediateCallbackTest extends TestCase {
+    
+    ComponentInstance instance; // Instance under test
+    ComponentInstance fooProvider;
+
+    public ImmediateCallbackTest(BundleContext arg0) { super(arg0);  }
+    
+    public void setUp() {
+        Properties p2 = new Properties();
+        p2.put("name", "fooProvider");
+        fooProvider = Utils.getComponentInstance(context, "FooProviderType-1", p2);
+        fooProvider.stop();
+        
+        Properties p1 = new Properties();
+        p1.put("name", "callback");
+        instance = Utils.getComponentInstance(context, "ImmediateCallbackCheckService", p1);
+        
+    }
+    
+    public void tearDown() {
+        instance.dispose();
+        fooProvider.dispose();
+        instance= null;
+        fooProvider = null;
+    }
+    
+    public void testCallback() {
+        // Check instance is invalid
+        ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance.getInstanceName());
+        assertNotNull("Check architecture availability", arch_ref);
+        InstanceDescription id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 1", id_dep.getState() == ComponentInstance.INVALID);
+        assertEquals("Check pojo count - 1", id_dep.getCreatedObjects().length, 0);
+        
+        // Start fooprovider
+        fooProvider.start();
+        
+        // Check instance validity
+        id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity - 1", id_dep.getState() == ComponentInstance.VALID);
+        
+        // Check service providing
+        ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        CheckService cs = (CheckService) context.getService(cs_ref);
+        assertTrue("check CheckService invocation", cs.check());
+        
+        assertEquals("Check pojo count - 2", id_dep.getCreatedObjects().length, 1);
+        // Check int property
+        Integer index = (Integer) (cs.getProps().get("int"));
+        assertEquals("Check int property - 1 (" + index.intValue() +")", index.intValue(), 1);
+        
+        fooProvider.stop();
+        
+        id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance invalidity - 2", id_dep.getState() == ComponentInstance.INVALID);
+        
+        assertEquals("Check pojo count - 3", id_dep.getCreatedObjects().length, 1);
+        
+        fooProvider.start();
+        
+        // Check instance validity
+        id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+        assertTrue("Check instance validity - 2", id_dep.getState() == ComponentInstance.VALID);
+        
+        // Check service providing
+        cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Check CheckService availability", cs_ref);
+        cs = (CheckService) context.getService(cs_ref);
+        assertTrue("check CheckService invocation", cs.check());
+        
+        // Check int property
+        index = (Integer) (cs.getProps().get("int"));
+        assertEquals("Check int property - 2 ("+index.intValue()+")", index.intValue(), 3);
+        
+        assertEquals("Check pojo count - 4 ", id_dep.getCreatedObjects().length, 1);
+        
+        // Clean up
+        context.ungetService(arch_ref);
+        context.ungetService(cs_ref);
+        cs = null;
+        id_dep = null;
+    }
+        
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/LifeCycleCallbackTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/LifeCycleCallbackTest.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/LifeCycleCallbackTest.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/LifeCycleCallbackTest.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,24 @@
+package org.apache.felix.ipojo.test.scenarios.lifecycle;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osgi.framework.BundleContext;
+
+import fr.imag.adele.escoffier.utf.framework.TestSuite;
+
+public class LifeCycleCallbackTest extends TestSuite {
+	
+	
+
+	public LifeCycleCallbackTest(BundleContext arg0) { super(arg0); }
+
+	public List suite() {
+		List l = new ArrayList();
+		l.add(new CallbackTestCase(context));
+        l.add(new ParentCallbackTestCase(context));
+        l.add(new ImmediateCallbackTest(context));
+		return l;
+	}
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ParentCallbackTestCase.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ParentCallbackTestCase.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ParentCallbackTestCase.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/lifecycle/ParentCallbackTestCase.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,88 @@
+package org.apache.felix.ipojo.test.scenarios.lifecycle;
+
+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 ParentCallbackTestCase extends TestCase {
+	
+	ComponentInstance instance; // Instance under test
+	ComponentInstance fooProvider;
+
+	public ParentCallbackTestCase(BundleContext arg0) { super(arg0);	}
+	
+	public void setUp() {
+		Properties p2 = new Properties();
+		p2.put("name", "fooProvider");
+		fooProvider = Utils.getComponentInstance(context, "FooProviderType-1", p2);
+		fooProvider.stop();
+		
+		Properties p1 = new Properties();
+		p1.put("name", "callback");
+		instance = Utils.getComponentInstance(context, "ParentCallbackCheckService", p1);
+		
+	}
+	
+	public void tearDown() {
+		instance.dispose();
+		fooProvider.dispose();
+		instance= null;
+		fooProvider = null;
+	}
+	
+	public void testCallback() {
+		// Check instance is invalid
+		ServiceReference arch_ref = Utils.getServiceReferenceByName(context, Architecture.class.getName(), instance.getInstanceName());
+		assertNotNull("Check architecture availability", arch_ref);
+		InstanceDescription id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance invalidity - 1", id_dep.getState() == ComponentInstance.INVALID);
+		
+		// Start fooprovider
+		fooProvider.start();
+		
+		// Check instance validity
+		id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity - 1", id_dep.getState() == ComponentInstance.VALID);
+		
+		// Check service providing
+		ServiceReference cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check CheckService availability", cs_ref);
+		CheckService cs = (CheckService) context.getService(cs_ref);
+		
+		// Check int property		
+		assertEquals("Check pojo count - 2", id_dep.getCreatedObjects().length, 1);
+		
+		fooProvider.stop();
+		
+		id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance invalidity - 2", id_dep.getState() == ComponentInstance.INVALID);
+		
+		fooProvider.start();
+		
+		// Check instance validity
+		id_dep = ((Architecture) context.getService(arch_ref)).getInstanceDescription();
+		assertTrue("Check instance validity - 2", id_dep.getState() == ComponentInstance.VALID);
+		
+		// Check service providing
+		cs_ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check CheckService availability", cs_ref);
+		cs = (CheckService) context.getService(cs_ref);
+		assertTrue("check CheckService invocation", cs.check());
+		
+		// Clean up
+		context.ungetService(arch_ref);
+		context.ungetService(cs_ref);
+		cs = null;
+		id_dep = null;
+	}
+		
+
+}

Added: 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=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ExceptionTest.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,89 @@
+package org.apache.felix.ipojo.test.scenarios.manipulation;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.architecture.Architecture;
+import org.apache.felix.ipojo.test.scenarios.component.FooProviderType1;
+import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+import fr.imag.adele.escoffier.utf.framework.TestCase;
+
+public class ExceptionTest extends TestCase {
+	
+	private BundleContext bc;
+	private ComponentInstance ci_lazzy;
+	private ComponentInstance ci_immediate;
+	
+	private ServiceReference lazzyRef;
+	private ServiceReference immRef;	
+	
+	public ExceptionTest(BundleContext bc) { 
+		super(bc);
+		this.bc = bc;
+	}
+	
+	public void setUp() {
+		String factName = "FooProviderType-1";
+		String compName = "FooProvider-1";
+		
+		Properties p = new Properties();
+		p.put("name", compName);
+		ci_lazzy = Utils.getComponentInstance(bc, factName, p);
+		
+		String factName2 = "ImmediateFooProviderType";
+		String compName2 = "FooProvider-2";
+		
+		Properties p2 = new Properties();
+		p2.put("name", compName2);
+		ci_immediate = Utils.getComponentInstance(bc, factName2, p2);
+		
+		lazzyRef = Utils.getServiceReference(bc, Architecture.class.getName(), "(instance.name="+compName+")");
+		immRef =   Utils.getServiceReference(bc, Architecture.class.getName(), "(instance.name="+compName2+")");
+	}
+	
+	public void tearDown() {
+		bc.ungetService(lazzyRef);
+		bc.ungetService(immRef);
+		ci_lazzy.dispose();
+		ci_immediate.dispose();
+	}
+	
+    
+    public void testException() {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(FooService.class.getName(), "(instance.name="+ci_lazzy.getInstanceName()+")");
+        } catch (InvalidSyntaxException e) { e.printStackTrace(); }
+        assertNotNull("Check that a FooService from " + ci_lazzy.getInstanceName() + " is available",refs);
+        FooProviderType1 fs = (FooProviderType1) bc.getService(refs[0]);
+        try {
+            fs.testException();
+            bc.ungetService(refs[0]);
+            fail("The method must returns an exception");
+        } catch(Exception e) {
+            bc.ungetService(refs[0]);
+        }
+    }
+    
+    public void testTry() {
+        ServiceReference[] refs = null;
+        try {
+            refs = bc.getServiceReferences(FooService.class.getName(), "(instance.name="+ci_lazzy.getInstanceName()+")");
+        } catch (InvalidSyntaxException e) { e.printStackTrace(); }
+        assertNotNull("Check that a FooService from " + ci_lazzy.getInstanceName() + " is available",refs);
+        FooProviderType1 fs = (FooProviderType1) bc.getService(refs[0]);
+        try {
+            fs.testTry();
+            bc.ungetService(refs[0]);
+        } catch(Exception e) {
+            bc.ungetService(refs[0]);
+            fail("The method has returned an exception");
+        }
+    }
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/GetComponentInstanceTest.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,76 @@
+package org.apache.felix.ipojo.test.scenarios.manipulation;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.Pojo;
+import org.apache.felix.ipojo.architecture.InstanceDescription;
+import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+import fr.imag.adele.escoffier.utf.framework.TestCase;
+
+public class GetComponentInstanceTest extends TestCase {
+
+	public GetComponentInstanceTest(BundleContext arg0) {
+		super(arg0);
+	}
+	
+	public void testGetComponentInstance() {
+		String factName = "FooProviderType-1";
+		String compName = "FooProvider-1";
+		ServiceReference[] refs = null;
+		
+		// Get the facotry to create a component instance
+		Factory fact = Utils.getFactoryByName(context, factName);
+		assertNotNull("Cannot find the factory FooProvider-1", fact);
+		
+		Properties props = new Properties();
+		props.put("name", compName);
+		ComponentInstance ci = null;
+		try {
+			ci = fact.createComponentInstance(props);
+		} catch (Exception e1) { fail(e1.getMessage()); }		
+		
+		// Get a FooService provider
+		try {
+			refs = context.getServiceReferences(FooService.class.getName(), "(instance.name=" + compName + ")");
+		} catch (InvalidSyntaxException e) { fail("Service query failed (2) " + e); }
+		
+		assertNotNull("FS not available", refs);
+		
+		// Get foo object
+		FooService fs = (FooService) context.getService(refs[0]);
+		
+		// Cast to POJO
+		Pojo pojo = (Pojo) fs;
+		
+		// GetComponentInstance
+		ComponentInstance instance = pojo.getComponentInstance();
+		assertEquals("Check component instance name", instance.getInstanceName(), compName);
+		assertEquals("Check component factory name", instance.getFactory().getName(), factName);
+		assertNotNull("Instance description not null", instance.getInstanceDescription());
+		InstanceDescription id = instance.getInstanceDescription();
+		assertTrue("Check instance state", id.getState() == ComponentInstance.VALID);
+		assertEquals("Check created pojo count", id.getCreatedObjects().length, 1);
+		assertEquals("Check instance description name", id.getName(), compName); 
+		
+		// Unget the service
+		context.ungetService(refs[0]);
+		
+		ci.dispose();
+		
+		// Check that there is no more FooService
+		try {
+			refs = context.getServiceReferences(FooService.class.getName(), null);
+		} catch (InvalidSyntaxException e) { fail("Service query failed (3) : " + e.getMessage()); }
+		
+		assertNull("FS available, but component instance stopped", refs);
+	}
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadata.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,225 @@
+package org.apache.felix.ipojo.test.scenarios.manipulation;
+
+import org.apache.felix.ipojo.metadata.Element;
+import org.apache.felix.ipojo.parser.ManifestMetadataParser;
+import org.apache.felix.ipojo.parser.ParseException;
+import org.apache.felix.ipojo.parser.ParseUtils;
+import org.apache.felix.ipojo.test.scenarios.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.osgi.framework.BundleContext;
+
+import fr.imag.adele.escoffier.utf.framework.TestCase;
+
+public class ManipulationMetadata extends TestCase {
+
+	public ManipulationMetadata(BundleContext arg0) {
+		super(arg0);
+	}
+	
+	public void testGetMetadata() {
+		String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
+		Element elem = null;
+		try {
+			elem = ManifestMetadataParser.parse(header);
+		} catch (ParseException e) {
+			fail("Parse Exception when parsing iPOJO-Component");
+		}
+		
+		assertNotNull("Check elem not null", elem);
+		
+		Element manip = getManipulationForComponent(elem, "FooProviderType-1");
+		assertNotNull("Check manipulation metadata not null for " + "FooProviderType-1", manip);
+	}
+	
+	public void testInterface() {
+		String comp_name = "FooProviderType-1";
+		Element manip = getManipulationForComponent(comp_name);
+		Element[] itf = manip.getElements("Interface");
+		assertEquals("Check interfaces number", itf.length, 1);
+		assertEquals("Check itf name", itf[0].getAttribute("name"), FooService.class.getName());
+	}
+	
+	public void testInterfaces() {
+		String comp_name = "FooBarProviderType-1";
+		Element manip = getManipulationForComponent(comp_name);
+		Element[] itf = manip.getElements("Interface");
+		assertEquals("Check interfaces number", itf.length, 2);
+		assertEquals("Check itf name", itf[0].getAttribute("name"), FooService.class.getName());
+		assertEquals("Check itf name", itf[1].getAttribute("name"), BarService.class.getName());
+	}
+	
+	public void testFields() {
+		String comp_name = "FooProviderType-Dyn";
+		Element manip = getManipulationForComponent(comp_name);
+		Element[] fields = manip.getElements("field");
+		assertEquals("Check field count " + fields.length, fields.length, 5);
+		/*
+		private int intProp;	
+		private String strProp;
+		private String[] strAProp;
+		private int[] intAProp;
+		private boolean boolProp;
+		 */
+		
+		Element field;
+		
+		field = getFieldFromName(manip, "intProp");		
+		assertEquals("Check field name : " + field.getAttribute("name"), field.getAttribute("name"), "intProp");
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "int");
+		
+		field = getFieldFromName(manip, "strProp");
+		assertEquals("Check field name : " + field.getAttribute("name"), field.getAttribute("name"), "strProp");
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "java.lang.String");
+		
+		field = getFieldFromName(manip, "strAProp");
+		assertEquals("Check field name : " + field.getAttribute("name"), field.getAttribute("name"), "strAProp");
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "java.lang.String[]");
+		
+		field = getFieldFromName(manip, "intAProp");
+		assertEquals("Check field name : " + field.getAttribute("name"), field.getAttribute("name"), "intAProp");
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "int[]");
+		
+		field = getFieldFromName(manip, "boolProp");
+		assertEquals("Check field name : " + field.getAttribute("name"), field.getAttribute("name"), "boolProp");
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "boolean");
+	}
+	
+	public void testPrimitivesFields() {
+		String comp_name = "PrimitiveManipulationTester";
+		Element manip = getManipulationForComponent(comp_name);
+		Element[] fields = manip.getElements("Field");
+		assertEquals("Check field count", fields.length, 16);
+		/*
+		byte b = 1;
+		short s = 1;
+		int i = 1;
+		long l = 1;
+		double d = 1.1;
+		float f = 1.1f;
+		char c = 'a';
+		boolean bool = false;
+		byte[] bs = new byte[] {0,1,2};
+		short[] ss = new short[] {0,1,2};
+		int[] is = new int[] {0,1,2};
+		long[] ls = new long[] {0,1,2};
+		double[] ds = new double[] {0.0, 1.1, 2.2};
+		float[] fs = new float[] {0.0f, 1.1f, 2.2f};
+		char[] cs = new char[] {'a', 'b', 'c'};
+		boolean[] bools = new boolean[] {false, true, false};
+		 */
+		Element field;
+
+		field = getFieldFromName(manip, "b");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "byte");
+		field = getFieldFromName(manip, "s");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "short");
+		field = getFieldFromName(manip, "i");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "int");
+		field = getFieldFromName(manip, "l");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "long");
+		field = getFieldFromName(manip, "d");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "double");
+		field = getFieldFromName(manip, "f");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "float");
+		field = getFieldFromName(manip, "c");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "char");
+		field = getFieldFromName(manip, "bool");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "boolean");
+		
+		field = getFieldFromName(manip, "bs");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "byte[]");
+		field = getFieldFromName(manip, "ss");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "short[]");
+		field = getFieldFromName(manip, "is");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "int[]");
+		field = getFieldFromName(manip, "ls");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "long[]");
+		field = getFieldFromName(manip, "ds");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "double[]");
+		field = getFieldFromName(manip, "fs");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "float[]");
+		field = getFieldFromName(manip, "cs");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "char[]");
+		field = getFieldFromName(manip, "bools");		
+		assertEquals("Check field type : " + field.getAttribute("name"), field.getAttribute("type"), "boolean[]");		
+	}
+	
+	public void testNoArgMethod() {
+		String comp_name = "SimpleMultipleCheckServiceProvider";
+		Element manip = getManipulationForComponent(comp_name);
+		Element method = getMethodFromName(manip, "check");
+		assertFalse("Check no args", method.containsAttribute("arguments"));
+		assertEquals("Check return", method.getAttribute("return"), "boolean");
+	}
+	
+	public void testOneArgsMethod() {
+		String comp_name = "SimpleMultipleCheckServiceProvider";
+		Element manip = getManipulationForComponent(comp_name);
+		Element method = getMethodFromName(manip, "refBind");
+		assertEquals("Check args", method.getAttribute("arguments"), "{org.osgi.framework.ServiceReference}");
+		assertEquals("Check args count", 1, ParseUtils.parseArrays("{org.osgi.framework.ServiceReference}").length);
+		assertFalse("Check return", method.containsAttribute("return"));
+	}
+	
+	public void testTwoArgsMethod() {
+		String comp_name = "SimpleMultipleCheckServiceProvider";
+		Element manip = getManipulationForComponent(comp_name);
+		Element method = getMethodFromName(manip, "doNothing");
+		assertEquals("Check args", method.getAttribute("arguments"), "{java.lang.Object,java.lang.String}");
+		assertEquals("Check args count", 2, ParseUtils.parseArrays("{java.lang.Object,java.lang.String}").length);
+		assertEquals("Check return", method.getAttribute("return"), "java.lang.Object");
+	}
+	
+	private Element getManipulationForComponent(Element metadata, String comp_name) {
+		Element[] comps = metadata.getElements("component");
+		for(int i = 0; i < comps.length; i++) {
+			if(comps[i].containsAttribute("factory") && comps[i].getAttribute("factory").equals(comp_name)) {
+				return comps[i].getElements("manipulation")[0];
+			}
+            if(comps[i].containsAttribute("name") && comps[i].getAttribute("name").equals(comp_name)) {
+                return comps[i].getElements("manipulation")[0];
+            }
+		}
+		return null;
+	}
+	
+	private Element getManipulationForComponent(String comp_name) {
+		String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
+		Element elem = null;
+		try {
+			elem = ManifestMetadataParser.parse(header);
+		} catch (ParseException e) {
+			fail("Parse Exception when parsing iPOJO-Component");
+		}
+		
+		assertNotNull("Check elem not null", elem);
+		
+		Element manip = getManipulationForComponent(elem, comp_name);
+		assertNotNull("Check manipulation metadata not null for " + comp_name, manip);
+		return manip;
+	}
+	
+	private Element getMethodFromName(Element manip, String name) {
+		Element methods[] = manip.getElements("Method");
+		for(int i = 0; i < methods.length; i++) {
+			if(methods[i].containsAttribute("name") && methods[i].getAttribute("name").equals(name)) {
+				return methods[i];
+			}
+		}
+		fail("Method " + name + " not found");
+		return null;
+	}
+	
+	private Element getFieldFromName(Element manip, String name) {
+		Element fields[] = manip.getElements("Field");
+		for(int i = 0; i < fields.length; i++) {
+			if(fields[i].containsAttribute("name") && fields[i].getAttribute("name").equals(name)) {
+				return fields[i];
+			}
+		}
+		fail("Field " + name + " not found");
+		return null;
+	}
+	
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationMetadataAPI.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,264 @@
+package org.apache.felix.ipojo.test.scenarios.manipulation;
+
+import org.apache.felix.ipojo.metadata.Element;
+import org.apache.felix.ipojo.parser.FieldMetadata;
+import org.apache.felix.ipojo.parser.ManifestMetadataParser;
+import org.apache.felix.ipojo.parser.ManipulationMetadata;
+import org.apache.felix.ipojo.parser.MethodMetadata;
+import org.apache.felix.ipojo.parser.ParseException;
+import org.apache.felix.ipojo.test.scenarios.service.BarService;
+import org.apache.felix.ipojo.test.scenarios.service.FooService;
+import org.osgi.framework.BundleContext;
+
+import fr.imag.adele.escoffier.utf.framework.TestCase;
+
+public class ManipulationMetadataAPI extends TestCase {
+    
+    ManipulationMetadata FooProviderType1, FooBarProviderType1, FooProviderTypeDyn, PrimitiveManipulationTester, SimpleMultipleCheckServiceProvider;
+
+	public ManipulationMetadataAPI(BundleContext arg0) {
+		super(arg0);
+        String comp_name = "FooProviderType-1";
+        FooProviderType1 = getManipulationMetadataForComponent(comp_name);
+        
+        comp_name = "FooBarProviderType-1";
+        FooBarProviderType1 = getManipulationMetadataForComponent(comp_name);
+        
+        comp_name = "FooProviderType-Dyn";
+        FooProviderTypeDyn = getManipulationMetadataForComponent(comp_name);
+        
+        comp_name = "PrimitiveManipulationTester";
+        PrimitiveManipulationTester = getManipulationMetadataForComponent(comp_name);
+        
+        comp_name = "SimpleMultipleCheckServiceProvider";
+        SimpleMultipleCheckServiceProvider = getManipulationMetadataForComponent(comp_name);
+	}
+	
+	public void testGetMetadata() {
+		String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
+		Element elem = null;
+		try {
+			elem = ManifestMetadataParser.parse(header);
+		} catch (ParseException e) {
+			fail("Parse Exception when parsing iPOJO-Component");
+		}
+		
+		assertNotNull("Check elem not null", elem);
+		
+		Element manip = getMetadataForComponent(elem, "FooProviderType-1");
+        assertNotNull("Check manipulation metadata not null for " + "FooProviderType-1", manip);
+        org.apache.felix.ipojo.parser.ManipulationMetadata mm = new org.apache.felix.ipojo.parser.ManipulationMetadata(manip);
+        assertNotNull("Check mm not null", mm);
+	}
+	
+	public void testInterface() {
+		ManipulationMetadata manip = FooProviderType1;
+		
+        String[] itf = manip.getInterfaces();
+		assertEquals("Check interfaces number", itf.length, 1);
+		assertEquals("Check itf name", itf[0], FooService.class.getName());
+        
+        assertTrue("Check Foo Service implementation", manip.isInterfaceImplemented(FooService.class.getName()));
+        assertFalse("Check Bar Service implementation", manip.isInterfaceImplemented(BarService.class.getName()));
+	}
+	
+	public void testInterfaces() {
+        ManipulationMetadata manip = FooBarProviderType1;
+        String[] itf = manip.getInterfaces();
+		assertEquals("Check interfaces number", itf.length, 2);
+		assertEquals("Check itf name", itf[0], FooService.class.getName());
+		assertEquals("Check itf name", itf[1], BarService.class.getName());
+        
+        assertTrue("Check Foo Service implementation", manip.isInterfaceImplemented(FooService.class.getName()));
+        assertTrue("Check Bar Service implementation", manip.isInterfaceImplemented(BarService.class.getName()));
+	}
+	
+	public void testFields() {
+        
+        ManipulationMetadata manip = FooProviderTypeDyn;
+		
+		FieldMetadata[] fields = manip.getFields();
+		assertEquals("Check field count + " + fields.length, fields.length, 5);
+		/*
+		private int intProp;	
+		private String strProp;
+		private String[] strAProp;
+		private int[] intAProp;
+		private boolean boolProp;
+		 */
+		
+		FieldMetadata field;
+		
+		field = manip.getField("intProp");		
+		assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "intProp");
+		assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int");
+        assertEquals("Check field reflective type : " + field.getFieldName(), field.getReflectionType(), "int");
+        
+        field = manip.getField("intProp", "int");      
+        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "intProp");
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int");
+        
+        field = manip.getField("intProp", "long");
+        assertNull("Check bad field", field);
+		
+		field = manip.getField("strProp");
+		assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "strProp");
+		assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "java.lang.String");
+        assertEquals("Check field reflective type : " + field.getFieldName(), field.getReflectionType(), "java.lang.String");
+        
+        field = manip.getField("strProp", "String");
+        assertNull("Check bad field", field);
+        
+        field = manip.getField("strProp", "java.lang.String");
+        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "strProp");
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "java.lang.String");
+		
+		field = manip.getField("strAProp");
+		assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "strAProp");
+		assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "java.lang.String[]");
+        assertEquals("Check field reflective type : " + field.getFieldName() + " -> " + field.getReflectionType(), field.getReflectionType(), "[Ljava.lang.String;");
+        
+        field = manip.getField("strAProp", "java.lang.String[]");
+        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "strAProp");
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "java.lang.String[]");
+        
+        field = manip.getField("strAProp", "String[]");
+        assertNull("Check bad field", field);
+		
+		field = manip.getField("intAProp");
+		assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "intAProp");
+		assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int[]");
+        assertEquals("Check field reflective type : " + field.getFieldName() + " -> " + field.getReflectionType(), field.getReflectionType(), "[I");
+        
+        field = manip.getField("intAProp", "int[]");
+        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "intAProp");
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int[]");
+        
+        field = manip.getField("intAProp", "String[]");
+        assertNull("Check bad field", field);
+		
+		field = manip.getField("boolProp");
+		assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "boolProp");
+		assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "boolean");
+        assertEquals("Check field reflective type : " + field.getFieldName(), field.getReflectionType(), "boolean");
+        
+        field = manip.getField("boolProp", "boolean");
+        assertEquals("Check field name : " + field.getFieldName(), field.getFieldName(), "boolProp");
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "boolean");
+        
+        field = manip.getField("boolProp", "bool");
+        assertNull("Check bad field", field);
+	}
+	
+	public void testPrimitivesFields() {
+		ManipulationMetadata manip = PrimitiveManipulationTester;
+		FieldMetadata[] fields = manip.getFields();
+		assertEquals("Check field count", fields.length, 16);
+
+		FieldMetadata field;
+
+		field = manip.getField("b");		
+		assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "byte");
+		field = manip.getField("s");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "short");
+		field = manip.getField("i");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int");
+		field = manip.getField("l");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "long");
+		field = manip.getField("d");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "double");
+		field = manip.getField("f");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "float");
+		field = manip.getField("c");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "char");
+		field = manip.getField("bool");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "boolean");
+		
+		field = manip.getField("bs");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "byte[]");
+		field = manip.getField("ss");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "short[]");
+		field = manip.getField("is");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "int[]");
+		field = manip.getField("ls");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "long[]");
+		field = manip.getField("ds");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "double[]");
+		field = manip.getField("fs");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "float[]");
+		field = manip.getField("cs");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "char[]");
+		field = manip.getField("bools");		
+        assertEquals("Check field type : " + field.getFieldName(), field.getFieldType(), "boolean[]");		
+	}
+	
+	public void testNoArgMethod() {
+		ManipulationMetadata manip = SimpleMultipleCheckServiceProvider;
+		MethodMetadata method = manip.getMethod("check");
+		assertEquals("Check no args", method.getMethodArguments().length, 0);
+		assertEquals("Check return", method.getMethodReturn(), "boolean");
+        
+        method = manip.getMethod("check", new String[0]);
+        assertEquals("Check no args", method.getMethodArguments().length, 0);
+        assertEquals("Check return", method.getMethodReturn(), "boolean");
+	}
+	
+	public void testOneArgsMethod() {
+        ManipulationMetadata manip = SimpleMultipleCheckServiceProvider;
+        MethodMetadata method = manip.getMethods("refBind")[0];
+		assertEquals("Check args count", method.getMethodArguments().length, 1);
+        assertEquals("Check args", method.getMethodArguments()[0], "org.osgi.framework.ServiceReference");
+		assertEquals("Check return", method.getMethodReturn(), "void");
+        
+        method = manip.getMethod("refBind", new String[] {"org.osgi.framework.ServiceReference"});
+        assertEquals("Check args count", method.getMethodArguments().length, 1);
+        assertEquals("Check args", method.getMethodArguments()[0], "org.osgi.framework.ServiceReference");
+        assertEquals("Check return", method.getMethodReturn(), "void");
+	}
+	
+	public void testTwoArgsMethod() {
+        ManipulationMetadata manip = SimpleMultipleCheckServiceProvider;
+        MethodMetadata method = manip.getMethods("doNothing")[0];
+        assertEquals("Check args count", 2, method.getMethodArguments().length);
+		assertEquals("Check args - 1", method.getMethodArguments()[0], "java.lang.Object");
+        assertEquals("Check args - 2", method.getMethodArguments()[1], "java.lang.String");
+		assertEquals("Check return", method.getMethodReturn(), "java.lang.Object");
+        
+        method = manip.getMethod("doNothing", new String[] {"java.lang.Object", "java.lang.String"});
+        assertEquals("Check args count", 2, method.getMethodArguments().length);
+        assertEquals("Check args - 1", method.getMethodArguments()[0], "java.lang.Object");
+        assertEquals("Check args - 2", method.getMethodArguments()[1], "java.lang.String");
+        assertEquals("Check return", method.getMethodReturn(), "java.lang.Object");
+	}
+	
+	private Element getMetadataForComponent(Element metadata, String comp_name) {
+		Element[] comps = metadata.getElements("component");
+		for(int i = 0; i < comps.length; i++) {
+			if(comps[i].containsAttribute("factory") && comps[i].getAttribute("factory").equals(comp_name)) {
+				return comps[i];
+			}
+            if(comps[i].containsAttribute("name") && comps[i].getAttribute("name").equals(comp_name)) {
+                return comps[i];
+            }
+		}
+		return null;
+	}
+	
+    
+    private org.apache.felix.ipojo.parser.ManipulationMetadata getManipulationMetadataForComponent(String comp_name) {
+        String header = (String) context.getBundle().getHeaders().get("iPOJO-Components");
+        Element elem = null;
+        try {
+            elem = ManifestMetadataParser.parse(header);
+        } catch (ParseException e) {
+            fail("Parse Exception when parsing iPOJO-Component");
+        }
+        
+        assertNotNull("Check elem not null", elem);
+        
+        Element manip = getMetadataForComponent(elem, comp_name);
+        assertNotNull("Check manipulation metadata not null for " + comp_name, manip);
+        return new ManipulationMetadata(manip);
+    }	
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/ManipulationTestSuite.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,25 @@
+package org.apache.felix.ipojo.test.scenarios.manipulation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.osgi.framework.BundleContext;
+
+import fr.imag.adele.escoffier.utf.framework.TestSuite;
+
+public class ManipulationTestSuite extends TestSuite {
+
+	public ManipulationTestSuite(BundleContext arg0) { super(arg0); }
+
+	public List suite() {
+		List l = new ArrayList();
+		l.add(new ManipulationMetadata(context));
+		l.add(new PrimitiveTypeTest(context));
+		l.add(new PrimitiveTypeTest2(context));
+		l.add(new GetComponentInstanceTest(context));
+        l.add(new ManipulationMetadataAPI(context));
+        l.add(new ExceptionTest(context));
+		return l;
+	}
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,87 @@
+package org.apache.felix.ipojo.test.scenarios.manipulation;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.test.scenarios.service.PrimitiveManipulationTestService;
+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 PrimitiveTypeTest extends TestCase {
+
+	ComponentInstance instance; // Instance under test
+	PrimitiveManipulationTestService prim;
+	ServiceReference prim_ref;
+	
+	public PrimitiveTypeTest(BundleContext arg0) { super(arg0); }
+	
+	public void setUp() {
+		Properties p1 = new Properties();
+		p1.put("name", "primitives");
+		instance = Utils.getComponentInstance(context, "PrimitiveManipulationTester", p1);
+		assertTrue("check instance state", instance.getState() == ComponentInstance.VALID);
+		prim_ref = Utils.getServiceReferenceByName(context, PrimitiveManipulationTestService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check prim availability", prim_ref);
+		prim = (PrimitiveManipulationTestService) context.getService(prim_ref);
+	}
+	
+	public void tearDown() {
+		context.ungetService(prim_ref);
+		prim = null;
+		instance.dispose();
+		instance = null;
+	}
+	
+	public void testByte() {
+		assertEquals("Check - 1", prim.getByte(), 1);
+		prim.setByte((byte) 2);
+		assertEquals("Check - 2", prim.getByte(), 2);
+	}
+	
+	public void testShort() {
+		assertEquals("Check - 1", prim.getShort(), 1);
+		prim.setShort((short) 2);
+		assertEquals("Check - 2", prim.getShort(), 2);
+	}
+	
+	public void testInt() {
+		assertEquals("Check - 1", prim.getInt(), 1);
+		prim.setInt((int) 2);
+		assertEquals("Check - 2", prim.getInt(), 2);
+	}
+	
+	public void testLong() {
+		assertEquals("Check - 1", prim.getLong(), 1);
+		prim.setLong((long) 2);
+		assertEquals("Check - 2", prim.getLong(), 2);
+	}
+	
+	public void testFloat() {
+		assertEquals("Check - 1", prim.getFloat(), 1.1f);
+		prim.setFloat(2.2f);
+		assertEquals("Check - 2", prim.getFloat(), 2.2f);
+	}
+	
+	public void testDouble() {
+		assertEquals("Check - 1", prim.getDouble(), 1.1);
+		prim.setDouble(2.2);
+		assertEquals("Check - 2", prim.getDouble(), 2.2);
+	}
+	
+	public void testBoolean() {
+		assertFalse("Check - 1", prim.getBoolean());
+		prim.setBoolean(true);
+		assertTrue("Check - 2", prim.getBoolean());
+	}
+	
+	public void testChar() {
+		assertEquals("Check - 1", prim.getChar(), 'a');
+		prim.setChar('b');
+		assertEquals("Check - 2", prim.getChar(), 'b');
+	}
+	
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/manipulation/PrimitiveTypeTest2.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,87 @@
+package org.apache.felix.ipojo.test.scenarios.manipulation;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.test.scenarios.service.PrimitiveManipulationTestService;
+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 PrimitiveTypeTest2 extends TestCase {
+
+	ComponentInstance instance; // Instance under test
+	PrimitiveManipulationTestService prim;
+	ServiceReference prim_ref;
+	
+	public PrimitiveTypeTest2(BundleContext arg0) { super(arg0); }
+	
+	public void setUp() {
+		Properties p1 = new Properties();
+		p1.put("name", "primitives");
+		instance = Utils.getComponentInstance(context, "PrimitiveManipulationTesterA", p1);
+		assertTrue("check instance state", instance.getState() == ComponentInstance.VALID);
+		prim_ref = Utils.getServiceReferenceByName(context, PrimitiveManipulationTestService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check prim availability", prim_ref);
+		prim = (PrimitiveManipulationTestService) context.getService(prim_ref);
+	}
+	
+	public void tearDown() {
+		context.ungetService(prim_ref);
+		prim = null;
+		instance.dispose();
+		instance = null;
+	}
+	
+	public void testByte() {
+		assertEquals("Check - 1", prim.getByte(), 1);
+		prim.setByte((byte) 2);
+		assertEquals("Check - 2", prim.getByte(), 2);
+	}
+	
+	public void testShort() {
+		assertEquals("Check - 1", prim.getShort(), 1);
+		prim.setShort((short) 2);
+		assertEquals("Check - 2", prim.getShort(), 2);
+	}
+	
+	public void testInt() {
+		assertEquals("Check - 1", prim.getInt(), 1);
+		prim.setInt((int) 2);
+		assertEquals("Check - 2", prim.getInt(), 2);
+	}
+	
+	public void testLong() {
+		assertEquals("Check - 1", prim.getLong(), 1);
+		prim.setLong((long) 2);
+		assertEquals("Check - 2", prim.getLong(), 2);
+	}
+	
+	public void testFloat() {
+		assertEquals("Check - 1", prim.getFloat(), 1.1f);
+		prim.setFloat(2.2f);
+		assertEquals("Check - 2", prim.getFloat(), 2.2f);
+	}
+	
+	public void testDouble() {
+		assertEquals("Check - 1", prim.getDouble(), 1.1);
+		prim.setDouble(2.2);
+		assertEquals("Check - 2", prim.getDouble(), 2.2);
+	}
+	
+	public void testBoolean() {
+		assertFalse("Check - 1", prim.getBoolean());
+		prim.setBoolean(true);
+		assertTrue("Check - 2", prim.getBoolean());
+	}
+	
+	public void testChar() {
+		assertEquals("Check - 1", prim.getChar(), 'a');
+		prim.setChar('b');
+		assertEquals("Check - 2", prim.getChar(), 'b');
+	}
+	
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/A123/CheckService2.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/A123/CheckService2.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/A123/CheckService2.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/A123/CheckService2.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,7 @@
+package org.apache.felix.ipojo.test.scenarios.service.A123;
+
+public interface CheckService2 {
+	
+	public boolean check();
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BarService.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,11 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+import java.util.Properties;
+
+public interface BarService {
+	
+	public boolean bar();
+	
+	public Properties getProps();
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BazService.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BazService.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BazService.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/BazService.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,21 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+import java.util.Properties;
+
+public interface BazService {
+
+	boolean foo();
+	
+	Properties fooProps();
+	
+	Boolean getObject();
+	
+	boolean getBoolean();
+	
+	int getInt();
+	
+	long getLong();
+	
+	double getDouble();
+	
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/CheckService.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,13 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+import java.util.Properties;
+
+public interface CheckService {
+    
+    public static final String foo = "foo";
+	
+	public boolean check();
+	
+	public Properties getProps();
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/FooService.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,21 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+import java.util.Properties;
+
+public interface FooService {
+
+	boolean foo();
+	
+	Properties fooProps();
+	
+	Boolean getObject();
+	
+	boolean getBoolean();
+	
+	int getInt();
+	
+	long getLong();
+	
+	double getDouble();
+	
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/PrimitiveManipulationTestService.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/PrimitiveManipulationTestService.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/PrimitiveManipulationTestService.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/PrimitiveManipulationTestService.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,54 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+public interface PrimitiveManipulationTestService {
+	
+	byte getByte();
+	void setByte(byte b);
+	
+	short getShort();
+	void setShort(short s);
+	
+	int getInt();
+	void setInt(int i);
+	
+	long getLong();
+	void setLong(long l);
+	
+	float getFloat();
+	void setFloat(float f);
+	
+	double getDouble();
+	void setDouble(double d);
+	
+	char getChar();
+	void setChar(char c);
+	
+	boolean getBoolean();
+	void setBoolean(boolean b);
+	
+	// Array types
+	byte[] getBytes();
+	void setBytes(byte[] bs);
+	
+	short[] getShorts();
+	void setShorts(short[] ss);
+	
+	int[] getInts();
+	void setInts(int is[]);
+	
+	long[] getLongs();
+	void setLongs(long[] ls);
+	
+	float[] getFloats();
+	void setFloats(float[] fs);
+	
+	double[] getDoubles();
+	void setDoubles(double[] ds);
+	
+	char[] getChars();
+	void setChars(char[] cs);
+	
+	boolean[] getBooleans();
+	void setBooleans(boolean[] bs);	
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tata.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tata.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tata.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tata.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,44 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+import java.util.Properties;
+
+public interface Tata {
+    
+    public Properties getPropsTata();
+    
+    public void tata();
+    
+    public int tataInt(int i);
+    public long tataLong(long l);
+    public double tataDouble(double d);
+    public char tataChar(char c);
+    public boolean tataBoolean(boolean b);
+    public short tataShort(short s);
+    public float tataFloat(float f);
+    public byte tataByte(byte b);
+    
+    public int[] tataInts(int[] its);
+    public long[] tataLongs(long[] l);
+    public double[] tataDoubles(double[] d);
+    public char[] tataChars(char[] c);
+    public boolean[] tataBooleans(boolean[] b);
+    public short[] tataShorts(short[] s);
+    public float[] tataFloats(float[] f);
+    public byte[] tataBytes(byte[] b);
+    
+    public String tataStr();
+    public String[] tataStrs();
+    
+    public void tata(int i, int j);
+    public void tata(String s);
+    
+    public String tata1(String a);
+    public String tata1(char[] a);
+    
+    public String tata5(String a, int i);
+    public String tata5(String[] a, int i);
+    public String tata5(String a, int[] i);
+    
+    public long add(int i, int j, int k);
+
+}

Added: 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=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tota.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Tota.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,59 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+import java.util.Properties;
+
+public interface Tota {
+    
+    public static final String specification="specification { " +
+    		"requires { " +
+    		    "$specification=\"org.apache.felix.ipojo.test.scenarios.service.Toto\" " +
+    		    "$optional=\"true\" " +
+    		    "$aggregate=\"true\" " +
+    		"} }"; 
+    
+    public Properties getProps() throws UnsupportedOperationException;;
+    public Properties getPropsTata();
+    
+    public void tata();
+    
+    public int tataInt(int i);
+    public long tataLong(long l);
+    public double tataDouble(double d);
+    public char tataChar(char c);
+    public boolean tataBoolean(boolean b);
+    public short tataShort(short s);
+    public float tataFloat(float f);
+    public byte tataByte(byte b);
+    
+    public int[] tataInts(int[] its);
+    public long[] tataLongs(long[] l);
+    public double[] tataDoubles(double[] d);
+    public char[] tataChars(char[] c);
+    public boolean[] tataBooleans(boolean[] b);
+    public short[] tataShorts(short[] s);
+    public float[] tataFloats(float[] f);
+    public byte[] tataBytes(byte[] b);
+    
+    public String tataStr();
+    public String[] tataStrs();
+    
+    public void tata(int i, int j);
+    public void tata(String s);
+    
+    public String tata1(String a);
+    public String tata1(char[] a);
+    
+    public String tata5(String a, int i);
+    public String tata5(String[] a, int i);
+    public String tata5(String a, int[] i);
+    
+    public long add(int i, int j, int k);
+    
+    public void toto() throws UnsupportedOperationException;    
+    public void toto(int i, int j) throws UnsupportedOperationException;
+    public String toto(String a) throws UnsupportedOperationException;
+    
+    public void toto1(String j) throws UnsupportedOperationException;
+    
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Toto.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Toto.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Toto.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/Toto.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,19 @@
+package org.apache.felix.ipojo.test.scenarios.service;
+
+import java.util.Properties;
+
+public interface Toto {
+    
+    public Properties getProps();
+    
+    public void toto();    
+    public void toto(int i, int j);
+    public String toto(String a);
+    public String toto(String[] a);
+    
+    public void toto1(String j);
+    
+    public int count();
+
+
+}

Added: felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicProps.java
URL: http://svn.apache.org/viewvc/felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicProps.java?rev=579291&view=auto
==============================================================================
--- felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicProps.java (added)
+++ felix/sandbox/clement/Tests/Suite/src/main/java/org/apache/felix/ipojo/test/scenarios/service/providing/DynamicProps.java Tue Sep 25 08:06:53 2007
@@ -0,0 +1,217 @@
+package org.apache.felix.ipojo.test.scenarios.service.providing;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.test.scenarios.service.FooService;
+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 DynamicProps extends TestCase {
+	
+	ComponentInstance fooProvider1;
+	ComponentInstance fooProvider2;
+	ComponentInstance fooProvider3;
+	
+	public DynamicProps(BundleContext bc) { super(bc); }
+	
+	public void setUp() {
+		String type = "FooProviderType-Dyn";
+		
+		Properties p1 = new Properties();
+		p1.put("name", "FooProvider-1");
+		fooProvider1 = Utils.getComponentInstance(context, type, p1);
+		
+		Properties p2 = new Properties();
+		p2.put("name", "FooProvider-2");
+		p2.put("int", new Integer(4));
+		p2.put("boolean", new Boolean(false));
+		p2.put("string", new String("bar"));
+		p2.put("strAProp", new String[] {"bar", "foo"});
+		p2.put("intAProp", new int[] {1, 2, 3});
+		fooProvider2 = Utils.getComponentInstance(context, type, p2);
+		
+		String type2 = "FooProviderType-Dyn2";
+		Properties p3 = new Properties();
+		p3.put("name", "FooProvider-3");
+		p3.put("int", new Integer(0));
+		p3.put("boolean", new Boolean(true));
+		p3.put("string", new String(""));
+		p3.put("strAProp", new String[0]);
+		p3.put("intAProp", new int[0]);
+		fooProvider3 = Utils.getComponentInstance(context, type2, p3);
+		
+	}
+	
+	public void tearDown() {
+		fooProvider1.dispose();
+		fooProvider1 = null;
+		fooProvider2.dispose();
+		fooProvider2 = null;
+		fooProvider3.dispose();
+		fooProvider3 = null;
+	}
+	
+	public void testProperties1() {
+		ServiceReference sr = Utils.getServiceReferenceByName(context, FooService.class.getName(), "FooProvider-1");
+		assertNotNull("Check the availability of the FS service", sr);
+		
+		// Check service properties
+		Integer intProp = (Integer) sr.getProperty("int");
+		Boolean boolProp = (Boolean) sr.getProperty("boolean");
+		String strProp = (String) sr.getProperty("string");
+		String[] strAProp = (String[]) sr.getProperty("strAProp");
+		int[] intAProp = (int[]) sr.getProperty("intAProp");
+		
+		assertEquals("Check intProp equality (1)", intProp, new Integer(2));
+		assertEquals("Check longProp equality (1)", boolProp, new Boolean(false));
+		assertEquals("Check strProp equality (1)", strProp, new String("foo"));
+		assertNotNull("Check strAProp not nullity (1)", strAProp);
+		String[] v = new String[] {"foo", "bar"};
+		for (int i = 0; i < strAProp.length; i++) {
+			if(!strAProp[i].equals(v[i])) { fail("Check the strAProp Equality (1)"); }
+		}
+		assertNotNull("Check intAProp not nullity", intAProp);
+		int[] v2 = new int[] {1, 2, 3};
+		for (int i = 0; i < intAProp.length; i++) {
+			if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality (1)"); }
+		}
+		
+		// Invoke
+		FooService fs = (FooService) context.getService(sr);
+		assertTrue("invoke fs", fs.foo());
+		
+		// Re-check the property (change)
+		intProp = (Integer) sr.getProperty("int");
+		boolProp = (Boolean) sr.getProperty("boolean");
+		strProp = (String) sr.getProperty("string");
+		strAProp = (String[]) sr.getProperty("strAProp");
+		intAProp = (int[]) sr.getProperty("intAProp");
+		
+		assertEquals("Check intProp equality (2)", intProp, new Integer(3));
+		assertEquals("Check longProp equality (2)", boolProp, new Boolean(true));
+		assertEquals("Check strProp equality (2)", strProp, new String("bar"));
+		assertNotNull("Check strAProp not nullity (2)", strAProp);
+		v = new String[] {"foo", "bar", "baz"};
+		for (int i = 0; i < strAProp.length; i++) {
+			if(!strAProp[i].equals(v[i])) { fail("Check the strAProp Equality (2)"); }
+		}
+		assertNotNull("Check intAProp not nullity (2)", intAProp);
+		v2 = new int[] {3, 2, 1};
+		for (int i = 0; i < intAProp.length; i++) {
+			if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality (2)"); }
+		}
+		
+		fs = null;
+		context.ungetService(sr);
+	}
+	
+	public void testProperties2() {
+		ServiceReference sr = Utils.getServiceReferenceByName(context, FooService.class.getName(), "FooProvider-2");
+		assertNotNull("Check the availability of the FS service", sr);
+		
+		// Check service properties
+		Integer intProp = (Integer) sr.getProperty("int");
+		Boolean boolProp = (Boolean) sr.getProperty("boolean");
+		String strProp = (String) sr.getProperty("string");
+		String[] strAProp = (String[]) sr.getProperty("strAProp");
+		int[] intAProp = (int[]) sr.getProperty("intAProp");
+		
+		assertEquals("Check intProp equality", intProp, new Integer(4));
+		assertEquals("Check longProp equality", boolProp, new Boolean(false));
+		assertEquals("Check strProp equality", strProp, new String("bar"));
+		assertNotNull("Check strAProp not nullity", strAProp);
+		String[] v = new String[] {"bar", "foo"};
+		for (int i = 0; i < strAProp.length; i++) {
+			if(!strAProp[i].equals(v[i])) { fail("Check the strAProp Equality"); }
+		}
+		assertNotNull("Check intAProp not nullity", intAProp);
+		int[] v2 = new int[] {1, 2, 3};
+		for (int i = 0; i < intAProp.length; i++) {
+			if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality"); }
+		}
+		
+		// Invoke
+		FooService fs = (FooService) context.getService(sr);
+		assertTrue("invoke fs", fs.foo());
+		
+		// Re-check the property (change)
+		intProp = (Integer) sr.getProperty("int");
+		boolProp = (Boolean) sr.getProperty("boolean");
+		strProp = (String) sr.getProperty("string");
+		strAProp = (String[]) sr.getProperty("strAProp");
+		intAProp = (int[]) sr.getProperty("intAProp");
+		
+		assertEquals("Check intProp equality", intProp, new Integer(3));
+		assertEquals("Check longProp equality", boolProp, new Boolean(true));
+		assertEquals("Check strProp equality", strProp, new String("foo"));
+		assertNotNull("Check strAProp not nullity", strAProp);
+		v = new String[] {"foo", "bar", "baz"};
+		for (int i = 0; i < strAProp.length; i++) {
+			if(!strAProp[i].equals(v[i])) { fail("Check the strAProp Equality"); }
+		}
+		assertNotNull("Check intAProp not nullity", intAProp);
+		v2 = new int[] {3, 2, 1};
+		for (int i = 0; i < intAProp.length; i++) {
+			if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality"); }
+		}
+		
+		fs = null;
+		context.ungetService(sr);	
+	}
+	
+	public void testProperties3() {
+		ServiceReference sr = Utils.getServiceReferenceByName(context, FooService.class.getName(), "FooProvider-3");
+		assertNotNull("Check the availability of the FS service", sr);
+		
+		// Check service properties
+		Integer intProp = (Integer) sr.getProperty("int");
+		Boolean boolProp = (Boolean) sr.getProperty("boolean");
+		String strProp = (String) sr.getProperty("string");
+		String[] strAProp = (String[]) sr.getProperty("strAProp");
+		int[] intAProp = (int[]) sr.getProperty("intAProp");
+		
+		assertEquals("Check intProp equality", intProp, new Integer(0));
+		assertEquals("Check longProp equality", boolProp, new Boolean(true));
+		assertEquals("Check strProp equality", strProp, new String(""));
+		assertNotNull("Check strAProp not nullity", strAProp);
+		String[] v = new String[0];
+		for (int i = 0; i < strAProp.length; i++) {
+			if(!strAProp[i].equals(v[i])) { fail("Check the strAProp Equality"); }
+		}
+		assertNotNull("Check intAProp not nullity", intAProp);
+		int[] v2 = new int[0];
+		for (int i = 0; i < intAProp.length; i++) {
+			if(intAProp[i] != v2[i]) { fail("Check the intAProp Equality"); }
+		}
+		
+		// Invoke
+		FooService fs = (FooService) context.getService(sr);
+		assertTrue("invoke fs", fs.foo());
+		
+		// Re-check the property (change)
+		intProp = (Integer) sr.getProperty("int");
+		boolProp = (Boolean) sr.getProperty("boolean");
+		strProp = (String) sr.getProperty("string");
+		strAProp = (String[]) sr.getProperty("strAProp");
+		intAProp = (int[]) sr.getProperty("intAProp");
+		
+		assertEquals("Check intProp equality", intProp, new Integer(2));
+		assertEquals("Check longProp equality", boolProp, new Boolean(true));
+		assertEquals("Check strProp equality", strProp, new String("foo"));
+		assertNotNull("Check strAProp not nullity", strAProp);
+		v = new String[] {"foo", "bar"};
+		for (int i = 0; i < strAProp.length; i++) {
+			if(!strAProp[i].equals(v[i])) { fail("Check the strAProp Equality"); }
+		}
+		assertNull("Check intAProp hidding (no value)", intAProp);
+		
+		fs = null;
+		context.ungetService(sr);	
+
+	}
+
+}