felix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clem...@apache.org
Subject svn commit: r651646 [4/22] - in /felix/trunk/ipojo/tests: ./ tests.composite/ tests.composite/src/ tests.composite/src/main/ tests.composite/src/main/java/ tests.composite/src/main/java/org/ tests.composite/src/main/java/org/apache/ tests.composite/src...
Date Fri, 25 Apr 2008 16:50:22 GMT
Added: felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java?rev=651646&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java (added)
+++ felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/DynamicallyConfigurableProperties.java Fri Apr 25 09:49:43 2008
@@ -0,0 +1,228 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.configuration;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.ConfigurationException;
+import org.osgi.service.cm.ManagedServiceFactory;
+
+public class DynamicallyConfigurableProperties extends OSGiTestCase {
+
+	ComponentInstance instance;
+	
+	public void setUp() {
+		String type = "CONFIG-FooProviderType-3";
+		
+		Properties p1 = new Properties();
+		p1.put("name", "instance");
+		p1.put("foo", "foo");
+		p1.put("bar", "2");
+		p1.put("baz", "baz");
+		instance = Utils.getComponentInstance(context, type, p1);
+	}
+	
+	public void tearDown() {
+		instance.dispose();
+		instance = null;
+	}
+	
+	public void testStatic() {
+		ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check FS availability", fooRef);
+		String fooP = (String) fooRef.getProperty("foo");
+		Integer barP = (Integer) fooRef.getProperty("bar");
+		String bazP = (String) fooRef.getProperty("baz");
+		assertEquals("Check foo equality -1", fooP, "foo");
+		assertEquals("Check bar equality -1", barP, new Integer(2));
+		assertEquals("Check baz equality -1", bazP, "baz");
+		
+		ServiceReference msRef = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName(), instance.getFactory().getName());
+		assertNotNull("Check ManagedServiceFactory availability", msRef);
+		
+		
+		// Configuration of baz
+		Properties conf = new Properties();
+		conf.put("baz", "zab");
+		conf.put("bar", new Integer(2));
+		conf.put("foo", "foo");
+		ManagedServiceFactory ms = (ManagedServiceFactory) context.getService(msRef);
+		try {
+			ms.updated(instance.getInstanceName(), conf);
+		} catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+		
+		// Recheck props
+		fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance.getInstanceName());
+		fooP = (String) fooRef.getProperty("foo");
+		barP = (Integer) fooRef.getProperty("bar");
+		bazP = (String) fooRef.getProperty("baz");
+		assertEquals("Check foo equality -2", fooP, "foo");
+		assertEquals("Check bar equality -2", barP, new Integer(2));
+		assertEquals("Check baz equality -2", bazP, "zab");
+		context.ungetService(msRef);
+	}
+	
+	public void testDynamic() {
+    	ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance.getInstanceName());
+    	assertNotNull("Check FS availability", fooRef);
+    	
+    	String fooP = (String) fooRef.getProperty("foo");
+    	Integer barP = (Integer) fooRef.getProperty("bar");
+    	String bazP = (String) fooRef.getProperty("baz");
+    	
+    	assertEquals("Check foo equality", fooP, "foo");
+    	assertEquals("Check bar equality", barP, new Integer(2));
+    	assertEquals("Check baz equality", bazP, "baz");
+    	
+    	ServiceReference msRef = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName(), instance.getFactory().getName());
+    	assertNotNull("Check ManagedServiceFactory availability", msRef);
+    	
+    	// Configuration of baz
+    	Properties conf = new Properties();
+    	conf.put("baz", "zab");
+    	conf.put("foo", "oof");
+    	conf.put("bar", new Integer(0));
+    	ManagedServiceFactory ms = (ManagedServiceFactory) context.getService(msRef);
+    	try {
+    		ms.updated(instance.getInstanceName(), conf);
+    	} catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+    	
+    	// Recheck props
+    	fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance.getInstanceName());
+    	fooP = (String) fooRef.getProperty("foo");
+    	barP = (Integer) fooRef.getProperty("bar");
+    	bazP = (String) fooRef.getProperty("baz");
+    	
+    	assertEquals("Check foo equality", fooP, "oof");
+    	assertEquals("Check bar equality", barP, new Integer(0));
+    	assertEquals("Check baz equality", bazP, "zab");
+    	
+    	// Check field value
+    	FooService fs = (FooService) context.getService(fooRef);
+    	Properties p = fs.fooProps();
+    	fooP = (String) p.get("foo");
+    	barP = (Integer) p.get("bar");
+    	
+    	assertEquals("Check foo field equality", fooP, "oof");
+    	assertEquals("Check bar field equality", barP, new Integer(0));
+    	
+    	context.ungetService(fooRef);
+    	context.ungetService(msRef);
+    }
+
+    public void testDynamicString() {
+		ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check FS availability", fooRef);
+		
+		String fooP = (String) fooRef.getProperty("foo");
+		Integer barP = (Integer) fooRef.getProperty("bar");
+		String bazP = (String) fooRef.getProperty("baz");
+		
+		assertEquals("Check foo equality", fooP, "foo");
+		assertEquals("Check bar equality", barP, new Integer(2));
+		assertEquals("Check baz equality", bazP, "baz");
+		
+		ServiceReference msRef = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName(), instance.getFactory().getName());
+		assertNotNull("Check ManagedServiceFactory availability", msRef);
+		
+		// Configuration of baz
+		Properties conf = new Properties();
+		conf.put("baz", "zab");
+		conf.put("foo", "oof");
+		conf.put("bar", "0");
+		ManagedServiceFactory ms = (ManagedServiceFactory) context.getService(msRef);
+		try {
+			ms.updated(instance.getInstanceName(), conf);
+		} catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+		
+		// Recheck props
+		fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance.getInstanceName());
+		fooP = (String) fooRef.getProperty("foo");
+		barP = (Integer) fooRef.getProperty("bar");
+		bazP = (String) fooRef.getProperty("baz");
+		
+		assertEquals("Check foo equality", fooP, "oof");
+		assertEquals("Check bar equality", barP, new Integer(0));
+		assertEquals("Check baz equality", bazP, "zab");
+		
+		// Check field value
+		FooService fs = (FooService) context.getService(fooRef);
+		Properties p = fs.fooProps();
+		fooP = (String) p.get("foo");
+		barP = (Integer) p.get("bar");
+		
+		assertEquals("Check foo field equality", fooP, "oof");
+		assertEquals("Check bar field equality", barP, new Integer(0));
+		
+		context.ungetService(fooRef);
+		context.ungetService(msRef);
+	}
+	
+	public void testPropagation() {
+		ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance.getInstanceName());
+		assertNotNull("Check FS availability", fooRef);
+		
+		String fooP = (String) fooRef.getProperty("foo");
+		Integer barP = (Integer) fooRef.getProperty("bar");
+		String bazP = (String) fooRef.getProperty("baz");
+		
+		assertEquals("Check foo equality", fooP, "foo");
+		assertEquals("Check bar equality", barP, new Integer(2));
+		assertEquals("Check baz equality", bazP, "baz");
+		
+		ServiceReference msRef = Utils.getServiceReferenceByName(context, ManagedServiceFactory.class.getName(), instance.getFactory().getName());
+		assertNotNull("Check ManagedServiceFactory availability", msRef);
+		
+		// Configuration of baz
+		Properties conf = new Properties();
+		conf.put("baz", "zab");
+		conf.put("foo", "foo");
+		conf.put("bar", new Integer(2));
+		conf.put("propagated1", "propagated");
+		conf.put("propagated2", new Integer(1));
+		ManagedServiceFactory ms = (ManagedServiceFactory) context.getService(msRef);
+		try {
+			ms.updated(instance.getInstanceName(), conf);
+		} catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+		
+		// Recheck props
+		fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance.getInstanceName());
+		fooP = (String) fooRef.getProperty("foo");
+		barP = (Integer) fooRef.getProperty("bar");
+		bazP = (String) fooRef.getProperty("baz");
+		assertNotNull("Check the propagated1 existency", fooRef.getProperty("propagated1"));
+		String prop1 = (String) fooRef.getProperty("propagated1");
+		assertNotNull("Check the propagated2 existency", fooRef.getProperty("propagated2"));
+		Integer prop2 = (Integer) fooRef.getProperty("propagated2");
+		
+		assertEquals("Check foo equality", fooP, "foo");
+		assertEquals("Check bar equality", barP, new Integer(2));
+		assertEquals("Check baz equality", bazP, "zab");
+		assertEquals("Check propagated1 equality", prop1, "propagated");
+		assertEquals("Check propagated2 equality", prop2, new Integer(1));
+		
+		context.ungetService(msRef);
+	}
+
+}

Added: felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java?rev=651646&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java (added)
+++ felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/ManagedServiceConfigurableProperties.java Fri Apr 25 09:49:43 2008
@@ -0,0 +1,431 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.configuration;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.PrimitiveHandler;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.cm.ConfigurationException;
+import org.osgi.service.cm.ManagedService;
+
+public class ManagedServiceConfigurableProperties extends OSGiTestCase {
+
+	/**
+	 * Instance where the ManagedServicePID is provided by the component type. 
+	 */
+	ComponentInstance instance1;
+	/**
+     * Instance where the ManagedServicePID is provided by the instance. 
+     */
+	ComponentInstance instance2;
+	
+	public void setUp() {
+	    String type = "CONFIG-FooProviderType-4";
+        Properties p = new Properties();
+        p.put("name", "instance");
+        p.put("foo", "foo");
+        p.put("bar", "2");
+        p.put("baz", "baz");
+        instance1 = Utils.getComponentInstance(context, type, p);
+        assertEquals("instance1 created", ComponentInstance.VALID,instance1.getState());
+        
+		type = "CONFIG-FooProviderType-3";
+		Properties p1 = new Properties();
+		p1.put("name", "instance-2");
+		p1.put("foo", "foo");
+		p1.put("bar", "2");
+		p1.put("baz", "baz");
+		p1.put("managed.service.pid", "instance");
+		instance2 = Utils.getComponentInstance(context, type, p1);
+	}
+	
+	public void tearDown() {
+		instance1.dispose();
+		instance2.dispose();
+		instance1 = null;
+		instance2 = null;
+	}
+	
+	public void testStaticInstance1() {
+		ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance1.getInstanceName());
+		assertNotNull("Check FS availability", fooRef);
+		String fooP = (String) fooRef.getProperty("foo");
+		Integer barP = (Integer) fooRef.getProperty("bar");
+		String bazP = (String) fooRef.getProperty("baz");
+		assertEquals("Check foo equality -1", fooP, "foo");
+		assertEquals("Check bar equality -1", barP, new Integer(2));
+		assertEquals("Check baz equality -1", bazP, "baz");
+		
+		ServiceReference msRef = Utils.getServiceReferenceByPID(context, ManagedService.class.getName(), "FooProvider-3");
+		assertNotNull("Check ManagedServiceFactory availability", msRef);
+		
+		// Configuration of baz
+		Properties conf = new Properties();
+		conf.put("baz", "zab");
+		conf.put("bar", new Integer(2));
+		conf.put("foo", "foo");
+		ManagedService ms = (ManagedService) context.getService(msRef);
+		try {
+			ms.updated(conf);
+		} catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+		
+		// Re-check props
+		fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance1.getInstanceName());
+		fooP = (String) fooRef.getProperty("foo");
+		barP = (Integer) fooRef.getProperty("bar");
+		bazP = (String) fooRef.getProperty("baz");
+		assertEquals("Check foo equality -2", fooP, "foo");
+		assertEquals("Check bar equality -2", barP, new Integer(2));
+		assertEquals("Check baz equality -2", bazP, "zab");
+		context.ungetService(msRef);
+	}
+	
+	public void testStaticInstance2() {
+        ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Check FS availability", fooRef);
+        String fooP = (String) fooRef.getProperty("foo");
+        Integer barP = (Integer) fooRef.getProperty("bar");
+        String bazP = (String) fooRef.getProperty("baz");
+        assertEquals("Check foo equality -1", fooP, "foo");
+        assertEquals("Check bar equality -1", barP, new Integer(2));
+        assertEquals("Check baz equality -1", bazP, "baz");
+        
+        ServiceReference msRef = Utils.getServiceReferenceByPID(context, ManagedService.class.getName(), "instance");
+        assertNotNull("Check ManagedService availability", msRef);
+        
+        
+        // Configuration of baz
+        Properties conf = new Properties();
+        conf.put("baz", "zab");
+        conf.put("bar", new Integer(2));
+        conf.put("foo", "foo");
+        ManagedService ms = (ManagedService) context.getService(msRef);
+        try {
+            ms.updated(conf);
+        } catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+        
+        // Recheck props
+        fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance2.getInstanceName());
+        fooP = (String) fooRef.getProperty("foo");
+        barP = (Integer) fooRef.getProperty("bar");
+        bazP = (String) fooRef.getProperty("baz");
+        assertEquals("Check foo equality -2", fooP, "foo");
+        assertEquals("Check bar equality -2", barP, new Integer(2));
+        assertEquals("Check baz equality -2", bazP, "zab");
+        context.ungetService(fooRef);
+        context.ungetService(msRef);
+    }
+	
+	public void testDynamicInstance1() {
+    	ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance1.getInstanceName());
+    	assertNotNull("Check FS availability", fooRef);
+    	
+    	String fooP = (String) fooRef.getProperty("foo");
+    	Integer barP = (Integer) fooRef.getProperty("bar");
+    	String bazP = (String) fooRef.getProperty("baz");
+    	
+    	assertEquals("Check foo equality", fooP, "foo");
+    	assertEquals("Check bar equality", barP, new Integer(2));
+    	assertEquals("Check baz equality", bazP, "baz");
+    	
+    	ServiceReference msRef = Utils.getServiceReferenceByPID(context, ManagedService.class.getName(), "FooProvider-3");
+    	assertNotNull("Check ManagedServiceFactory availability", msRef);
+    	
+    	// Configuration of baz
+    	Properties conf = new Properties();
+    	conf.put("baz", "zab");
+    	conf.put("foo", "oof");
+    	conf.put("bar", new Integer(0));
+    	ManagedService ms = (ManagedService) context.getService(msRef);
+    	try {
+    		ms.updated(conf);
+    	} catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+    	
+    	// Re-check props
+    	fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance1.getInstanceName());
+    	fooP = (String) fooRef.getProperty("foo");
+    	barP = (Integer) fooRef.getProperty("bar");
+    	bazP = (String) fooRef.getProperty("baz");
+    	
+    	assertEquals("Check foo equality", fooP, "oof");
+    	assertEquals("Check bar equality", barP, new Integer(0));
+    	assertEquals("Check baz equality", bazP, "zab");
+    	
+    	// Check field value
+    	FooService fs = (FooService) context.getService(fooRef);
+    	Properties p = fs.fooProps();
+    	fooP = (String) p.get("foo");
+    	barP = (Integer) p.get("bar");
+    	
+    	assertEquals("Check foo field equality", fooP, "oof");
+    	assertEquals("Check bar field equality", barP, new Integer(0));
+    	
+    	context.ungetService(fooRef);
+    	context.ungetService(msRef);
+    }
+	
+	public void testDynamicInstance2() {
+        ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Check FS availability", fooRef);
+        
+        String fooP = (String) fooRef.getProperty("foo");
+        Integer barP = (Integer) fooRef.getProperty("bar");
+        String bazP = (String) fooRef.getProperty("baz");
+        
+        assertEquals("Check foo equality", fooP, "foo");
+        assertEquals("Check bar equality", barP, new Integer(2));
+        assertEquals("Check baz equality", bazP, "baz");
+        
+        ServiceReference msRef = Utils.getServiceReferenceByPID(context, ManagedService.class.getName(), "instance");
+        assertNotNull("Check ManagedServiceFactory availability", msRef);
+        
+        // Configuration of baz
+        Properties conf = new Properties();
+        conf.put("baz", "zab");
+        conf.put("foo", "oof");
+        conf.put("bar", new Integer(0));
+        ManagedService ms = (ManagedService) context.getService(msRef);
+        try {
+            ms.updated(conf);
+        } catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+        
+        // Recheck props
+        fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance2.getInstanceName());
+        fooP = (String) fooRef.getProperty("foo");
+        barP = (Integer) fooRef.getProperty("bar");
+        bazP = (String) fooRef.getProperty("baz");
+        
+        assertEquals("Check foo equality", fooP, "oof");
+        assertEquals("Check bar equality", barP, new Integer(0));
+        assertEquals("Check baz equality", bazP, "zab");
+        
+        // Check field value
+        FooService fs = (FooService) context.getService(fooRef);
+        Properties p = fs.fooProps();
+        fooP = (String) p.get("foo");
+        barP = (Integer) p.get("bar");
+        
+        assertEquals("Check foo field equality", fooP, "oof");
+        assertEquals("Check bar field equality", barP, new Integer(0));
+        
+        context.ungetService(fooRef);
+        context.ungetService(msRef);
+    }
+
+    public void testDynamicStringInstance1() {
+        assertEquals("Check instance1 state", ComponentInstance.VALID,instance1.getState());
+		ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance1.getInstanceName());
+		assertNotNull("Check FS availability", fooRef);
+		
+		String fooP = (String) fooRef.getProperty("foo");
+		Integer barP = (Integer) fooRef.getProperty("bar");
+		String bazP = (String) fooRef.getProperty("baz");
+		
+		assertEquals("Check foo equality - 1", fooP, "foo");
+		assertEquals("Check bar equality - 1", barP, new Integer(2));
+		assertEquals("Check baz equality - 1", bazP, "baz");
+		
+		ServiceReference msRef = Utils.getServiceReferenceByPID(context, ManagedService.class.getName(), "FooProvider-3");
+		assertNotNull("Check ManagedService availability", msRef);
+		
+		// Configuration of baz
+		Properties conf = new Properties();
+		conf.put("baz", "zab");
+		conf.put("foo", "oof");
+		conf.put("bar", "0");
+        assertEquals("Check instance1 state (2)", ComponentInstance.VALID,instance1.getState());
+		ManagedService ms = (ManagedService) context.getService(msRef);
+		
+		PrimitiveHandler ph = (PrimitiveHandler) ms;
+		assertSame("Check the correct instance", ph.getInstanceManager(), instance1);
+		
+		try {
+			ms.updated(conf);
+		} catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+		assertEquals("Check instance1 state (3)", ComponentInstance.VALID,instance1.getState());
+		
+		// Recheck props
+		fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance1.getInstanceName());
+		fooP = (String) fooRef.getProperty("foo");
+		barP = (Integer) fooRef.getProperty("bar");
+		bazP = (String) fooRef.getProperty("baz");
+		
+		assertEquals("Check foo equality - 2", fooP, "oof");
+		assertEquals("Check bar equality - 2", barP, new Integer(0));
+		assertEquals("Check baz equality - 2", bazP, "zab");
+		
+		// Check field value
+		FooService fs = (FooService) context.getService(fooRef);
+		Properties p = fs.fooProps();
+		fooP = (String) p.get("foo");
+		barP = (Integer) p.get("bar");
+		
+		assertEquals("Check foo field equality", fooP, "oof");
+		assertEquals("Check bar field equality", barP, new Integer(0));
+		
+		context.ungetService(fooRef);
+		context.ungetService(msRef);
+	}
+    
+    public void testDynamicStringInstance2() {
+        ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Check FS availability", fooRef);
+        
+        String fooP = (String) fooRef.getProperty("foo");
+        Integer barP = (Integer) fooRef.getProperty("bar");
+        String bazP = (String) fooRef.getProperty("baz");
+        
+        assertEquals("Check foo equality", fooP, "foo");
+        assertEquals("Check bar equality", barP, new Integer(2));
+        assertEquals("Check baz equality", bazP, "baz");
+        
+        ServiceReference msRef = Utils.getServiceReferenceByPID(context, ManagedService.class.getName(), "instance");
+        assertNotNull("Check ManagedService availability", msRef);
+        
+        // Configuration of baz
+        Properties conf = new Properties();
+        conf.put("baz", "zab");
+        conf.put("foo", "oof");
+        conf.put("bar", "0");
+        ManagedService ms = (ManagedService) context.getService(msRef);
+        try {
+            ms.updated(conf);
+        } catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+        
+        // Recheck props
+        fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance2.getInstanceName());
+        fooP = (String) fooRef.getProperty("foo");
+        barP = (Integer) fooRef.getProperty("bar");
+        bazP = (String) fooRef.getProperty("baz");
+        
+        assertEquals("Check foo equality", fooP, "oof");
+        assertEquals("Check bar equality", barP, new Integer(0));
+        assertEquals("Check baz equality", bazP, "zab");
+        
+        // Check field value
+        FooService fs = (FooService) context.getService(fooRef);
+        Properties p = fs.fooProps();
+        fooP = (String) p.get("foo");
+        barP = (Integer) p.get("bar");
+        
+        assertEquals("Check foo field equality", fooP, "oof");
+        assertEquals("Check bar field equality", barP, new Integer(0));
+        
+        context.ungetService(fooRef);
+        context.ungetService(msRef);
+    }
+	
+	public void testPropagationInstance1() {
+		ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance1.getInstanceName());
+		assertNotNull("Check FS availability", fooRef);
+		
+		String fooP = (String) fooRef.getProperty("foo");
+		Integer barP = (Integer) fooRef.getProperty("bar");
+		String bazP = (String) fooRef.getProperty("baz");
+		
+		assertEquals("Check foo equality", fooP, "foo");
+		assertEquals("Check bar equality", barP, new Integer(2));
+		assertEquals("Check baz equality", bazP, "baz");
+		
+		ServiceReference msRef = Utils.getServiceReferenceByPID(context, ManagedService.class.getName(), "FooProvider-3");
+		assertNotNull("Check ManagedService availability", msRef);
+		
+		// Configuration of baz
+		Properties conf = new Properties();
+		conf.put("baz", "zab");
+		conf.put("foo", "foo");
+		conf.put("bar", new Integer(2));
+		conf.put("propagated1", "propagated");
+		conf.put("propagated2", new Integer(1));
+		ManagedService ms = (ManagedService) context.getService(msRef);
+		try {
+			ms.updated(conf);
+		} catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+		
+		// Recheck props
+		fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance1.getInstanceName());
+		fooP = (String) fooRef.getProperty("foo");
+		barP = (Integer) fooRef.getProperty("bar");
+		bazP = (String) fooRef.getProperty("baz");
+		assertNotNull("Check the propagated1 existency", fooRef.getProperty("propagated1"));
+		String prop1 = (String) fooRef.getProperty("propagated1");
+		assertNotNull("Check the propagated2 existency", fooRef.getProperty("propagated2"));
+		Integer prop2 = (Integer) fooRef.getProperty("propagated2");
+		
+		assertEquals("Check foo equality", fooP, "foo");
+		assertEquals("Check bar equality", barP, new Integer(2));
+		assertEquals("Check baz equality", bazP, "zab");
+		assertEquals("Check propagated1 equality", prop1, "propagated");
+		assertEquals("Check propagated2 equality", prop2, new Integer(1));
+		
+		context.ungetService(msRef);
+	}
+	
+	public void testPropagationInstance2() {
+        ServiceReference fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Check FS availability", fooRef);
+        
+        String fooP = (String) fooRef.getProperty("foo");
+        Integer barP = (Integer) fooRef.getProperty("bar");
+        String bazP = (String) fooRef.getProperty("baz");
+        
+        assertEquals("Check foo equality", fooP, "foo");
+        assertEquals("Check bar equality", barP, new Integer(2));
+        assertEquals("Check baz equality", bazP, "baz");
+        
+        ServiceReference msRef = Utils.getServiceReferenceByPID(context, ManagedService.class.getName(), "instance");
+        assertNotNull("Check ManagedService availability", msRef);
+        
+        // Configuration of baz
+        Properties conf = new Properties();
+        conf.put("baz", "zab");
+        conf.put("foo", "foo");
+        conf.put("bar", new Integer(2));
+        conf.put("propagated1", "propagated");
+        conf.put("propagated2", new Integer(1));
+        ManagedService ms = (ManagedService) context.getService(msRef);
+        try {
+            ms.updated(conf);
+        } catch (ConfigurationException e) { fail("Configuration Exception : " + e); }
+        
+        // Recheck props
+        fooRef = Utils.getServiceReferenceByName(context, FooService.class.getName(), instance2.getInstanceName());
+        fooP = (String) fooRef.getProperty("foo");
+        barP = (Integer) fooRef.getProperty("bar");
+        bazP = (String) fooRef.getProperty("baz");
+        assertNotNull("Check the propagated1 existency", fooRef.getProperty("propagated1"));
+        String prop1 = (String) fooRef.getProperty("propagated1");
+        assertNotNull("Check the propagated2 existency", fooRef.getProperty("propagated2"));
+        Integer prop2 = (Integer) fooRef.getProperty("propagated2");
+        
+        assertEquals("Check foo equality", fooP, "foo");
+        assertEquals("Check bar equality", barP, new Integer(2));
+        assertEquals("Check baz equality", bazP, "zab");
+        assertEquals("Check propagated1 equality", prop1, "propagated");
+        assertEquals("Check propagated2 equality", prop2, new Integer(1));
+        
+        context.ungetService(msRef);
+    }
+
+}

Added: felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java?rev=651646&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java (added)
+++ felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/SimpleProperties.java Fri Apr 25 09:49:43 2008
@@ -0,0 +1,171 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.configuration;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.FooService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+
+public class SimpleProperties extends OSGiTestCase {
+	
+	ComponentInstance fooProvider1;
+	ComponentInstance fooProvider2;
+	
+	public void setUp() {
+		String type = "CONFIG-FooProviderType-Conf";
+		
+		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);
+	}
+	
+	public void tearDown() {
+		fooProvider1.dispose();
+		fooProvider2.dispose();
+		fooProvider1 = null;
+		fooProvider2 = null;
+	}
+	
+	public void testComponentTypeConfiguration() {
+		ServiceReference ref = Utils.getServiceReferenceByName(context, FooService.class.getName(), fooProvider1.getInstanceName());
+		assertNotNull("Check FooService availability", ref);
+		FooService fs = (FooService) context.getService(ref);
+		Properties toCheck = fs.fooProps();
+		
+		Integer intProp = (Integer) toCheck.get("intProp");
+		Boolean boolProp = (Boolean) toCheck.get("boolProp");
+		String strProp = (String) toCheck.get("strProp");
+		String[] strAProp = (String[]) toCheck.get("strAProp");
+		int[] intAProp = (int[]) toCheck.get("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) : " + strAProp[i] + " != " + v[i]); }
+		}
+		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) : " + intAProp[i] + " != " + v2[i]); }
+		}
+		
+		// change the field value
+		assertTrue("Invoke the fs service", fs.foo());
+		toCheck = fs.fooProps();
+		
+		
+		//	Re-check the property (change)
+		intProp = (Integer) toCheck.get("intProp");
+		boolProp = (Boolean) toCheck.get("boolProp");
+		strProp = (String) toCheck.get("strProp");
+		strAProp = (String[]) toCheck.get("strAProp");
+		intAProp = (int[]) toCheck.get("intAProp");
+		
+		assertEquals("Check intProp equality (2) ("+intProp+")", 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) : " + intAProp[i] + " != " + v2[i]); }
+		}
+		
+		fs = null;
+		context.ungetService(ref);
+	}
+	
+	public void testInstanceConfiguration() {
+		ServiceReference sr = Utils.getServiceReferenceByName(context, FooService.class.getName(), "FooProvider-2");
+		assertNotNull("Check the availability of the FS service", sr);
+		
+		FooService fs = (FooService) context.getService(sr);
+		Properties toCheck = fs.fooProps();
+		
+		// Check service properties
+		Integer intProp = (Integer) toCheck.get("intProp");
+		Boolean boolProp = (Boolean) toCheck.get("boolProp");
+		String strProp = (String) toCheck.get("strProp");
+		String[] strAProp = (String[]) toCheck.get("strAProp");
+		int[] intAProp = (int[]) toCheck.get("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"); }
+		}
+		
+		
+		assertTrue("invoke fs", fs.foo());
+		toCheck = fs.fooProps();
+		
+		// Re-check the property (change)
+		intProp = (Integer) toCheck.get("intProp");
+		boolProp = (Boolean) toCheck.get("boolProp");
+		strProp = (String) toCheck.get("strProp");
+		strAProp = (String[]) toCheck.get("strAProp");
+		intAProp = (int[]) toCheck.get("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);	
+	}
+
+}

Added: felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java?rev=651646&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java (added)
+++ felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestBothProperties.java Fri Apr 25 09:49:43 2008
@@ -0,0 +1,618 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.configuration;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+
+public class TestBothProperties extends OSGiTestCase {
+    
+    ComponentInstance instance;
+
+    
+    public void setUp() {
+        Factory fact = Utils.getFactoryByName(context, "CONFIG-BothConfigurableCheckService");
+        Properties props = new Properties();
+        props.put("name", "under-test");
+        props.put("b", "1");
+        props.put("s", "1");
+        props.put("i", "1");
+        props.put("l", "1");
+        props.put("d", "1");
+        props.put("f", "1");
+        props.put("c", "a");
+        props.put("bool", "true");
+        props.put("bs", "{1,2,3}");
+        props.put("ss", "{1,2,3}");
+        props.put("is", "{1,2,3}");
+        props.put("ls", "{1,2,3}");
+        props.put("ds", "{1,2,3}");
+        props.put("fs", "{1,2,3}");
+        props.put("cs", "{a,b,c}");
+        props.put("bools", "{true,true,true}");
+        props.put("string", "foo");
+        props.put("strings", "{foo, bar, baz}");
+        
+        try {
+            instance = fact.createComponentInstance(props);
+        } catch(Exception e) {
+           fail("Cannot create the under-test instance : " + e.getMessage());
+        }
+        
+        
+    }
+    
+    public void tearDown() {
+        instance.dispose();
+        instance = null;
+    }
+    
+    public void testConfigurationPrimitive() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        Byte b = (Byte) props.get("b");
+        Short s = (Short) props.get("s");
+        Integer i = (Integer) props.get("i");
+        Long l = (Long) props.get("l");
+        Double d = (Double) props.get("d");
+        Float f = (Float) props.get("f");
+        Character c = (Character) props.get("c");
+        Boolean bool = (Boolean) props.get("bool");
+                
+        assertEquals("Check b", b, new Byte("1"));
+        assertEquals("Check s", s, new Short("1"));
+        assertEquals("Check i", i, new Integer("1"));
+        assertEquals("Check l", l, new Long("1"));
+        assertEquals("Check d", d, new Double("1"));
+        assertEquals("Check f", f, new Float("1"));
+        assertEquals("Check c", c, new Character('a'));
+        assertEquals("Check bool", bool, new Boolean("true"));
+        
+        Integer upb = (Integer) props.get("upb");
+        Integer ups = (Integer) props.get("ups");
+        Integer upi = (Integer) props.get("upi");
+        Integer upl = (Integer) props.get("upl");
+        Integer upd = (Integer) props.get("upd");
+        Integer upf = (Integer) props.get("upf");
+        Integer upc = (Integer) props.get("upc");
+        Integer upbool = (Integer) props.get("upbool");
+        
+        assertEquals("Check upb", upb, new Integer(1));
+        assertEquals("Check ups", ups, new Integer(1));
+        assertEquals("Check upi", upi, new Integer(1));
+        assertEquals("Check upl", upl, new Integer(1));
+        assertEquals("Check upd", upd, new Integer(1));
+        assertEquals("Check upf", upf, new Integer(1));
+        assertEquals("Check upc", upc, new Integer(1));
+        assertEquals("Check upbool", upbool, new Integer(1));
+        
+        reconfigure();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        b = (Byte) props.get("b");
+        s = (Short) props.get("s");
+        i = (Integer) props.get("i");
+        l = (Long) props.get("l");
+        d = (Double) props.get("d");
+        f = (Float) props.get("f");
+        c = (Character) props.get("c");
+        bool = (Boolean) props.get("bool");
+        
+        assertEquals("2) Check b ("+b+")", b, new Byte("2"));
+        assertEquals("2) Check s", s, new Short("2"));
+        assertEquals("2) Check i", i, new Integer("2"));
+        assertEquals("2) Check l", l, new Long("2"));
+        assertEquals("2) Check d", d, new Double("2"));
+        assertEquals("2) Check f", f, new Float("2"));
+        assertEquals("2) Check c", c, new Character('b'));
+        assertEquals("2) Check bool", bool, new Boolean("false"));
+        
+        upb = (Integer) props.get("upb");
+        ups = (Integer) props.get("ups");
+        upi = (Integer) props.get("upi");
+        upl = (Integer) props.get("upl");
+        upd = (Integer) props.get("upd");
+        upf = (Integer) props.get("upf");
+        upc = (Integer) props.get("upc");
+        upbool = (Integer) props.get("upbool");
+        
+        assertEquals("2) Check upb", upb, new Integer(2));
+        assertEquals("2) Check ups", ups, new Integer(2));
+        assertEquals("2) Check upi", upi, new Integer(2));
+        assertEquals("2) Check upl", upl, new Integer(2));
+        assertEquals("2) Check upd", upd, new Integer(2));
+        assertEquals("2) Check upf", upf, new Integer(2));
+        assertEquals("2) Check upc", upc, new Integer(2));
+        assertEquals("2) Check upbool", upbool, new Integer(2));
+        
+    }
+
+    public void testConfigurationPrimitiveString() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        Byte b = (Byte) props.get("b");
+        Short s = (Short) props.get("s");
+        Integer i = (Integer) props.get("i");
+        Long l = (Long) props.get("l");
+        Double d = (Double) props.get("d");
+        Float f = (Float) props.get("f");
+        Character c = (Character) props.get("c");
+        Boolean bool = (Boolean) props.get("bool");
+                
+        assertEquals("Check b", b, new Byte("1"));
+        assertEquals("Check s", s, new Short("1"));
+        assertEquals("Check i", i, new Integer("1"));
+        assertEquals("Check l", l, new Long("1"));
+        assertEquals("Check d", d, new Double("1"));
+        assertEquals("Check f", f, new Float("1"));
+        assertEquals("Check c", c, new Character('a'));
+        assertEquals("Check bool", bool, new Boolean("true"));
+        
+        Integer upb = (Integer) props.get("upb");
+        Integer ups = (Integer) props.get("ups");
+        Integer upi = (Integer) props.get("upi");
+        Integer upl = (Integer) props.get("upl");
+        Integer upd = (Integer) props.get("upd");
+        Integer upf = (Integer) props.get("upf");
+        Integer upc = (Integer) props.get("upc");
+        Integer upbool = (Integer) props.get("upbool");
+        
+        assertEquals("Check upb", upb, new Integer(1));
+        assertEquals("Check ups", ups, new Integer(1));
+        assertEquals("Check upi", upi, new Integer(1));
+        assertEquals("Check upl", upl, new Integer(1));
+        assertEquals("Check upd", upd, new Integer(1));
+        assertEquals("Check upf", upf, new Integer(1));
+        assertEquals("Check upc", upc, new Integer(1));
+        assertEquals("Check upbool", upbool, new Integer(1));
+        
+        reconfigureString();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        b = (Byte) props.get("b");
+        s = (Short) props.get("s");
+        i = (Integer) props.get("i");
+        l = (Long) props.get("l");
+        d = (Double) props.get("d");
+        f = (Float) props.get("f");
+        c = (Character) props.get("c");
+        bool = (Boolean) props.get("bool");
+        
+        assertEquals("2) Check b ("+b+")", b, new Byte("2"));
+        assertEquals("2) Check s", s, new Short("2"));
+        assertEquals("2) Check i", i, new Integer("2"));
+        assertEquals("2) Check l", l, new Long("2"));
+        assertEquals("2) Check d", d, new Double("2"));
+        assertEquals("2) Check f", f, new Float("2"));
+        assertEquals("2) Check c", c, new Character('b'));
+        assertEquals("2) Check bool", bool, new Boolean("false"));
+        
+        upb = (Integer) props.get("upb");
+        ups = (Integer) props.get("ups");
+        upi = (Integer) props.get("upi");
+        upl = (Integer) props.get("upl");
+        upd = (Integer) props.get("upd");
+        upf = (Integer) props.get("upf");
+        upc = (Integer) props.get("upc");
+        upbool = (Integer) props.get("upbool");
+        
+        assertEquals("2) Check upb", upb, new Integer(2));
+        assertEquals("2) Check ups", ups, new Integer(2));
+        assertEquals("2) Check upi", upi, new Integer(2));
+        assertEquals("2) Check upl", upl, new Integer(2));
+        assertEquals("2) Check upd", upd, new Integer(2));
+        assertEquals("2) Check upf", upf, new Integer(2));
+        assertEquals("2) Check upc", upc, new Integer(2));
+        assertEquals("2) Check upbool", upbool, new Integer(2));
+        
+    }
+    
+    public void testConfigurationPrimitiveArrays() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        byte[] b = (byte[]) props.get("bs");
+        short[] s = (short[]) props.get("ss");
+        int[] i = (int[]) props.get("is");
+        long[] l = (long[]) props.get("ls");
+        double[] d = (double[]) props.get("ds");
+        float[] f = (float[]) props.get("fs");
+        char[] c = (char[]) props.get("cs");
+        boolean[] bool = (boolean[]) props.get("bools");
+                
+        assertEquals("Check b 0", b[0], 1);
+        assertEquals("Check b 1", b[1], 2);
+        assertEquals("Check b 2", b[2], 3);
+        assertEquals("Check s 0", s[0], 1);
+        assertEquals("Check s 1", s[1], 2);
+        assertEquals("Check s 2", s[2], 3);
+        assertEquals("Check i 0", i[0], 1);
+        assertEquals("Check i 1", i[1], 2);
+        assertEquals("Check i 2", i[2], 3);
+        assertEquals("Check l 0", l[0], 1);
+        assertEquals("Check l 1", l[1], 2);
+        assertEquals("Check l 2", l[2], 3);
+        assertEquals("Check d 0", d[0], 1);
+        assertEquals("Check d 1", d[1], 2);
+        assertEquals("Check d 2", d[2], 3);
+        assertEquals("Check f 0", f[0], 1);
+        assertEquals("Check f 1", f[1], 2);
+        assertEquals("Check f 2", f[2], 3);
+        assertEquals("Check c 0", c[0], 'a');
+        assertEquals("Check c 1", c[1], 'b');
+        assertEquals("Check c 2", c[2], 'c');
+        assertTrue("Check bool 0", bool[0]);
+        assertTrue("Check bool 1", bool[0]);
+        assertTrue("Check bool 2", bool[0]);
+        
+        Integer upb = (Integer) props.get("upbs");
+        Integer ups = (Integer) props.get("upss");
+        Integer upi = (Integer) props.get("upis");
+        Integer upl = (Integer) props.get("upls");
+        Integer upd = (Integer) props.get("upds");
+        Integer upf = (Integer) props.get("upfs");
+        Integer upc = (Integer) props.get("upcs");
+        Integer upbool = (Integer) props.get("upbools");
+        
+        assertEquals("Check upb", upb, new Integer(1));
+        assertEquals("Check ups", ups, new Integer(1));
+        assertEquals("Check upi", upi, new Integer(1));
+        assertEquals("Check upl", upl, new Integer(1));
+        assertEquals("Check upd", upd, new Integer(1));
+        assertEquals("Check upf", upf, new Integer(1));
+        assertEquals("Check upc", upc, new Integer(1));
+        assertEquals("Check upbool", upbool, new Integer(1));
+        
+        reconfigure();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        b = (byte[]) props.get("bs");
+        s = (short[]) props.get("ss");
+        i = (int[]) props.get("is");
+        l = (long[]) props.get("ls");
+        d = (double[]) props.get("ds");
+        f = (float[]) props.get("fs");
+        c = (char[]) props.get("cs");
+        bool = (boolean[]) props.get("bools");
+        
+        assertEquals("2) Check b 0", b[0], 3);
+        assertEquals("2) Check b 1", b[1], 2);
+        assertEquals("2) Check b 2", b[2], 1);
+        assertEquals("2) Check s 0", s[0], 3);
+        assertEquals("2) Check s 1", s[1], 2);
+        assertEquals("2) Check s 2", s[2], 1);
+        assertEquals("2) Check i 0", i[0], 3);
+        assertEquals("2) Check i 1", i[1], 2);
+        assertEquals("2) Check i 2", i[2], 1);
+        assertEquals("2) Check l 0", l[0], 3);
+        assertEquals("2) Check l 1", l[1], 2);
+        assertEquals("2) Check l 2", l[2], 1);
+        assertEquals("2) Check d 0", d[0], 3);
+        assertEquals("2) Check d 1", d[1], 2);
+        assertEquals("2) Check d 2", d[2], 1);
+        assertEquals("2) Check f 0", f[0], 3);
+        assertEquals("2) Check f 1", f[1], 2);
+        assertEquals("2) Check f 2", f[2], 1);
+        assertEquals("2) Check c 0", c[0], 'c');
+        assertEquals("2) Check c 1", c[1], 'b');
+        assertEquals("2) Check c 2", c[2], 'a');
+        assertFalse("2) Check bool 0", bool[0]);
+        assertFalse("2) Check bool 1", bool[0]);
+        assertFalse("2) Check bool 2", bool[0]);
+        
+        upb = (Integer) props.get("upbs");
+        ups = (Integer) props.get("upss");
+        upi = (Integer) props.get("upis");
+        upl = (Integer) props.get("upls");
+        upd = (Integer) props.get("upds");
+        upf = (Integer) props.get("upfs");
+        upc = (Integer) props.get("upcs");
+        upbool = (Integer) props.get("upbools");
+        
+        assertEquals("2) Check upb", upb, new Integer(2));
+        assertEquals("2) Check ups", ups, new Integer(2));
+        assertEquals("2) Check upi", upi, new Integer(2));
+        assertEquals("2) Check upl", upl, new Integer(2));
+        assertEquals("2) Check upd", upd, new Integer(2));
+        assertEquals("2) Check upf", upf, new Integer(2));
+        assertEquals("2) Check upc", upc, new Integer(2));
+        assertEquals("2) Check upbool", upbool, new Integer(2));
+        
+    }
+
+    public void testConfigurationPrimitiveArraysString() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        byte[] b = (byte[]) props.get("bs");
+        short[] s = (short[]) props.get("ss");
+        int[] i = (int[]) props.get("is");
+        long[] l = (long[]) props.get("ls");
+        double[] d = (double[]) props.get("ds");
+        float[] f = (float[]) props.get("fs");
+        char[] c = (char[]) props.get("cs");
+        boolean[] bool = (boolean[]) props.get("bools");
+                
+        assertEquals("Check b 0", b[0], 1);
+        assertEquals("Check b 1", b[1], 2);
+        assertEquals("Check b 2", b[2], 3);
+        assertEquals("Check s 0", s[0], 1);
+        assertEquals("Check s 1", s[1], 2);
+        assertEquals("Check s 2", s[2], 3);
+        assertEquals("Check i 0", i[0], 1);
+        assertEquals("Check i 1", i[1], 2);
+        assertEquals("Check i 2", i[2], 3);
+        assertEquals("Check l 0", l[0], 1);
+        assertEquals("Check l 1", l[1], 2);
+        assertEquals("Check l 2", l[2], 3);
+        assertEquals("Check d 0", d[0], 1);
+        assertEquals("Check d 1", d[1], 2);
+        assertEquals("Check d 2", d[2], 3);
+        assertEquals("Check f 0", f[0], 1);
+        assertEquals("Check f 1", f[1], 2);
+        assertEquals("Check f 2", f[2], 3);
+        assertEquals("Check c 0", c[0], 'a');
+        assertEquals("Check c 1", c[1], 'b');
+        assertEquals("Check c 2", c[2], 'c');
+        assertTrue("Check bool 0", bool[0]);
+        assertTrue("Check bool 1", bool[0]);
+        assertTrue("Check bool 2", bool[0]);
+        
+        Integer upb = (Integer) props.get("upbs");
+        Integer ups = (Integer) props.get("upss");
+        Integer upi = (Integer) props.get("upis");
+        Integer upl = (Integer) props.get("upls");
+        Integer upd = (Integer) props.get("upds");
+        Integer upf = (Integer) props.get("upfs");
+        Integer upc = (Integer) props.get("upcs");
+        Integer upbool = (Integer) props.get("upbools");
+        
+        assertEquals("Check upb", upb, new Integer(1));
+        assertEquals("Check ups", ups, new Integer(1));
+        assertEquals("Check upi", upi, new Integer(1));
+        assertEquals("Check upl", upl, new Integer(1));
+        assertEquals("Check upd", upd, new Integer(1));
+        assertEquals("Check upf", upf, new Integer(1));
+        assertEquals("Check upc", upc, new Integer(1));
+        assertEquals("Check upbool", upbool, new Integer(1));
+        
+        reconfigureString();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        b = (byte[]) props.get("bs");
+        s = (short[]) props.get("ss");
+        i = (int[]) props.get("is");
+        l = (long[]) props.get("ls");
+        d = (double[]) props.get("ds");
+        f = (float[]) props.get("fs");
+        c = (char[]) props.get("cs");
+        bool = (boolean[]) props.get("bools");
+        
+        assertEquals("2) Check b 0", b[0], 3);
+        assertEquals("2) Check b 1", b[1], 2);
+        assertEquals("2) Check b 2", b[2], 1);
+        assertEquals("2) Check s 0", s[0], 3);
+        assertEquals("2) Check s 1", s[1], 2);
+        assertEquals("2) Check s 2", s[2], 1);
+        assertEquals("2) Check i 0", i[0], 3);
+        assertEquals("2) Check i 1", i[1], 2);
+        assertEquals("2) Check i 2", i[2], 1);
+        assertEquals("2) Check l 0", l[0], 3);
+        assertEquals("2) Check l 1", l[1], 2);
+        assertEquals("2) Check l 2", l[2], 1);
+        assertEquals("2) Check d 0", d[0], 3);
+        assertEquals("2) Check d 1", d[1], 2);
+        assertEquals("2) Check d 2", d[2], 1);
+        assertEquals("2) Check f 0", f[0], 3);
+        assertEquals("2) Check f 1", f[1], 2);
+        assertEquals("2) Check f 2", f[2], 1);
+        assertEquals("2) Check c 0", c[0], 'c');
+        assertEquals("2) Check c 1", c[1], 'b');
+        assertEquals("2) Check c 2", c[2], 'a');
+        assertFalse("2) Check bool 0", bool[0]);
+        assertFalse("2) Check bool 1", bool[0]);
+        assertFalse("2) Check bool 2", bool[0]);
+        
+        upb = (Integer) props.get("upbs");
+        ups = (Integer) props.get("upss");
+        upi = (Integer) props.get("upis");
+        upl = (Integer) props.get("upls");
+        upd = (Integer) props.get("upds");
+        upf = (Integer) props.get("upfs");
+        upc = (Integer) props.get("upcs");
+        upbool = (Integer) props.get("upbools");
+        
+        assertEquals("2) Check upb", upb, new Integer(2));
+        assertEquals("2) Check ups", ups, new Integer(2));
+        assertEquals("2) Check upi", upi, new Integer(2));
+        assertEquals("2) Check upl", upl, new Integer(2));
+        assertEquals("2) Check upd", upd, new Integer(2));
+        assertEquals("2) Check upf", upf, new Integer(2));
+        assertEquals("2) Check upc", upc, new Integer(2));
+        assertEquals("2) Check upbool", upbool, new Integer(2));
+        
+    }
+    
+    public void testConfigurationObj() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        String s = (String) props.get("string");
+        String[] ss = (String[]) props.get("strings");
+                
+        assertEquals("Check string", s, "foo");
+        assertEquals("Check strings 0", ss[0], "foo");
+        assertEquals("Check strings 1", ss[1], "bar");
+        assertEquals("Check strings 2", ss[2], "baz");
+        
+        Integer upString = (Integer) props.get("upstring");
+        Integer upStrings = (Integer) props.get("upstrings");
+        
+        assertEquals("Check upString", upString, new Integer(1));
+        assertEquals("Check upStrings", upStrings, new Integer(1));
+        
+        reconfigure();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        s = (String) props.get("string");
+        ss = (String[]) props.get("strings");
+                
+        assertEquals("2) Check string", s, "bar");
+        assertEquals("2) Check strings 0", ss[0], "baz");
+        assertEquals("2) Check strings 1", ss[1], "bar");
+        assertEquals("2) Check strings 2", ss[2], "foo");
+        
+        upString = (Integer) props.get("upstring");
+        upStrings = (Integer) props.get("upstrings");
+        
+        assertEquals("2) Check upstring", upString, new Integer(2));
+        assertEquals("2) Check upstrings", upStrings, new Integer(2));
+    }
+
+    public void testConfigurationObjString() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        String s = (String) props.get("string");
+        String[] ss = (String[]) props.get("strings");
+                
+        assertEquals("Check string", s, "foo");
+        assertEquals("Check strings 0", ss[0], "foo");
+        assertEquals("Check strings 1", ss[1], "bar");
+        assertEquals("Check strings 2", ss[2], "baz");
+        
+        Integer upString = (Integer) props.get("upstring");
+        Integer upStrings = (Integer) props.get("upstrings");
+        
+        assertEquals("Check upString", upString, new Integer(1));
+        assertEquals("Check upStrings", upStrings, new Integer(1));
+        
+        reconfigureString();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        s = (String) props.get("string");
+        ss = (String[]) props.get("strings");
+                
+        assertEquals("2) Check string", s, "bar");
+        assertEquals("2) Check strings 0", ss[0], "baz");
+        assertEquals("2) Check strings 1", ss[1], "bar");
+        assertEquals("2) Check strings 2", ss[2], "foo");
+        
+        upString = (Integer) props.get("upstring");
+        upStrings = (Integer) props.get("upstrings");
+        
+        assertEquals("2) Check upstring", upString, new Integer(2));
+        assertEquals("2) Check upstrings", upStrings, new Integer(2));
+    }
+    
+    private void reconfigure() {
+        Properties props2 = new Properties();
+        props2.put("name", "under-test");
+        props2.put("b", new Byte("2"));
+        props2.put("s", new Short("2"));
+        props2.put("i", new Integer("2"));
+        props2.put("l", new Long("2"));
+        props2.put("d", new Double("2"));
+        props2.put("f", new Float("2"));
+        props2.put("c", new Character('b'));
+        props2.put("bool", new Boolean(false));
+        props2.put("bs", new byte[]{(byte)3,(byte)2,(byte)1});
+        props2.put("ss", new short[]{(short)3,(short)2,(short)1});
+        props2.put("is", new int[]{3,2,1});
+        props2.put("ls", new long[]{3,2,1});
+        props2.put("ds", new double[]{3,2,1});
+        props2.put("fs", new float[]{3,2,1});
+        props2.put("cs", new char[]{'c','b','a'});
+        props2.put("bools", new boolean[]{false,false,false});
+        props2.put("string", "bar");
+        props2.put("strings", new String[]{"baz", "bar", "foo"});
+        
+        instance.reconfigure(props2);
+    }
+    
+    private void reconfigureString() {
+        Properties props2 = new Properties();
+        props2.put("name", "under-test");
+        props2.put("b", "2");
+        props2.put("s", "2");
+        props2.put("i", "2");
+        props2.put("l", "2");
+        props2.put("d", "2");
+        props2.put("f", "2");
+        props2.put("c", "b");
+        props2.put("bool", "false");
+        props2.put("bs", "{3, 2,1}");
+        props2.put("ss", "{3, 2,1}");
+        props2.put("is", "{3, 2,1}");
+        props2.put("ls", "{3, 2,1}");
+        props2.put("ds", "{3, 2,1}");
+        props2.put("fs", "{3, 2,1}");
+        props2.put("cs", "{c, b , a}");
+        props2.put("bools", "{false,false,false}");
+        props2.put("string", "bar");
+        props2.put("strings", "{baz, bar, foo}");
+        
+        instance.reconfigure(props2);
+    }
+
+}

Added: felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java?rev=651646&view=auto
==============================================================================
--- felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java (added)
+++ felix/trunk/ipojo/tests/tests.core.configuration/src/main/java/org/apache/felix/ipojo/test/scenarios/configuration/TestFieldProperties.java Fri Apr 25 09:49:43 2008
@@ -0,0 +1,449 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.ipojo.test.scenarios.configuration;
+
+import java.util.Properties;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.junit4osgi.OSGiTestCase;
+import org.apache.felix.ipojo.test.scenarios.configuration.service.CheckService;
+import org.apache.felix.ipojo.test.scenarios.util.Utils;
+import org.osgi.framework.ServiceReference;
+
+public class TestFieldProperties extends OSGiTestCase {
+    
+    ComponentInstance instance;
+    
+    public void setUp() {
+        Factory fact = Utils.getFactoryByName(context, "CONFIG-FieldConfigurableCheckService");
+        Properties props = new Properties();
+        props.put("name", "under-test");
+        props.put("b", "1");
+        props.put("s", "1");
+        props.put("i", "1");
+        props.put("l", "1");
+        props.put("d", "1");
+        props.put("f", "1");
+        props.put("c", "a");
+        props.put("bool", "true");
+        props.put("bs", "{1,2,3}");
+        props.put("ss", "{1,2,3}");
+        props.put("is", "{1,2,3}");
+        props.put("ls", "{1,2,3}");
+        props.put("ds", "{1,2,3}");
+        props.put("fs", "{1,2,3}");
+        props.put("cs", "{a,b,c}");
+        props.put("bools", "{true,true,true}");
+        props.put("string", "foo");
+        props.put("strings", "{foo, bar, baz}");
+        
+        try {
+            instance = fact.createComponentInstance(props);
+        } catch(Exception e) {
+           fail("Cannot create the under-test instance : " + e.getMessage());
+        }
+        
+        
+    }
+    
+    public void tearDown() {
+        instance.dispose();
+        instance = null;
+    }
+    
+    public void testConfigurationPrimitive() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        Byte b = (Byte) props.get("b");
+        Short s = (Short) props.get("s");
+        Integer i = (Integer) props.get("i");
+        Long l = (Long) props.get("l");
+        Double d = (Double) props.get("d");
+        Float f = (Float) props.get("f");
+        Character c = (Character) props.get("c");
+        Boolean bool = (Boolean) props.get("bool");
+                
+        assertEquals("Check b", b, new Byte("1"));
+        assertEquals("Check s", s, new Short("1"));
+        assertEquals("Check i", i, new Integer("1"));
+        assertEquals("Check l", l, new Long("1"));
+        assertEquals("Check d", d, new Double("1"));
+        assertEquals("Check f", f, new Float("1"));
+        assertEquals("Check c", c, new Character('a'));
+        assertEquals("Check bool", bool, new Boolean("true"));
+        
+        reconfigure();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        b = (Byte) props.get("b");
+        s = (Short) props.get("s");
+        i = (Integer) props.get("i");
+        l = (Long) props.get("l");
+        d = (Double) props.get("d");
+        f = (Float) props.get("f");
+        c = (Character) props.get("c");
+        bool = (Boolean) props.get("bool");
+        
+        assertEquals("2) Check b", b, new Byte("2"));
+        assertEquals("2) Check s", s, new Short("2"));
+        assertEquals("2) Check i", i, new Integer("2"));
+        assertEquals("2) Check l", l, new Long("2"));
+        assertEquals("2) Check d", d, new Double("2"));
+        assertEquals("2) Check f", f, new Float("2"));
+        assertEquals("2) Check c", c, new Character('b'));
+        assertEquals("2) Check bool", bool, new Boolean("false"));
+        
+    }
+
+    public void testConfigurationPrimitiveString() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        Byte b = (Byte) props.get("b");
+        Short s = (Short) props.get("s");
+        Integer i = (Integer) props.get("i");
+        Long l = (Long) props.get("l");
+        Double d = (Double) props.get("d");
+        Float f = (Float) props.get("f");
+        Character c = (Character) props.get("c");
+        Boolean bool = (Boolean) props.get("bool");
+                
+        assertEquals("Check b", b, new Byte("1"));
+        assertEquals("Check s", s, new Short("1"));
+        assertEquals("Check i", i, new Integer("1"));
+        assertEquals("Check l", l, new Long("1"));
+        assertEquals("Check d", d, new Double("1"));
+        assertEquals("Check f", f, new Float("1"));
+        assertEquals("Check c", c, new Character('a'));
+        assertEquals("Check bool", bool, new Boolean("true"));
+        
+        reconfigureString();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        b = (Byte) props.get("b");
+        s = (Short) props.get("s");
+        i = (Integer) props.get("i");
+        l = (Long) props.get("l");
+        d = (Double) props.get("d");
+        f = (Float) props.get("f");
+        c = (Character) props.get("c");
+        bool = (Boolean) props.get("bool");
+        
+        assertEquals("2) Check b", b, new Byte("2"));
+        assertEquals("2) Check s", s, new Short("2"));
+        assertEquals("2) Check i", i, new Integer("2"));
+        assertEquals("2) Check l", l, new Long("2"));
+        assertEquals("2) Check d", d, new Double("2"));
+        assertEquals("2) Check f", f, new Float("2"));
+        assertEquals("2) Check c", c, new Character('b'));
+        assertEquals("2) Check bool", bool, new Boolean("false"));
+        
+    }
+    
+    public void testConfigurationPrimitiveArrays() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        byte[] b = (byte[]) props.get("bs");
+        short[] s = (short[]) props.get("ss");
+        int[] i = (int[]) props.get("is");
+        long[] l = (long[]) props.get("ls");
+        double[] d = (double[]) props.get("ds");
+        float[] f = (float[]) props.get("fs");
+        char[] c = (char[]) props.get("cs");
+        boolean[] bool = (boolean[]) props.get("bools");
+                
+        assertEquals("Check b 0", b[0], 1);
+        assertEquals("Check b 1", b[1], 2);
+        assertEquals("Check b 2", b[2], 3);
+        assertEquals("Check s 0", s[0], 1);
+        assertEquals("Check s 1", s[1], 2);
+        assertEquals("Check s 2", s[2], 3);
+        assertEquals("Check i 0", i[0], 1);
+        assertEquals("Check i 1", i[1], 2);
+        assertEquals("Check i 2", i[2], 3);
+        assertEquals("Check l 0", l[0], 1);
+        assertEquals("Check l 1", l[1], 2);
+        assertEquals("Check l 2", l[2], 3);
+        assertEquals("Check d 0", d[0], 1);
+        assertEquals("Check d 1", d[1], 2);
+        assertEquals("Check d 2", d[2], 3);
+        assertEquals("Check f 0", f[0], 1);
+        assertEquals("Check f 1", f[1], 2);
+        assertEquals("Check f 2", f[2], 3);
+        assertEquals("Check c 0", c[0], 'a');
+        assertEquals("Check c 1", c[1], 'b');
+        assertEquals("Check c 2", c[2], 'c');
+        assertTrue("Check bool 0", bool[0]);
+        assertTrue("Check bool 1", bool[0]);
+        assertTrue("Check bool 2", bool[0]);
+        
+        reconfigure();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        b = (byte[]) props.get("bs");
+        s = (short[]) props.get("ss");
+        i = (int[]) props.get("is");
+        l = (long[]) props.get("ls");
+        d = (double[]) props.get("ds");
+        f = (float[]) props.get("fs");
+        c = (char[]) props.get("cs");
+        bool = (boolean[]) props.get("bools");
+        
+        assertEquals("2) Check b 0", b[0], 3);
+        assertEquals("2) Check b 1", b[1], 2);
+        assertEquals("2) Check b 2", b[2], 1);
+        assertEquals("2) Check s 0", s[0], 3);
+        assertEquals("2) Check s 1", s[1], 2);
+        assertEquals("2) Check s 2", s[2], 1);
+        assertEquals("2) Check i 0", i[0], 3);
+        assertEquals("2) Check i 1", i[1], 2);
+        assertEquals("2) Check i 2", i[2], 1);
+        assertEquals("2) Check l 0", l[0], 3);
+        assertEquals("2) Check l 1", l[1], 2);
+        assertEquals("2) Check l 2", l[2], 1);
+        assertEquals("2) Check d 0", d[0], 3);
+        assertEquals("2) Check d 1", d[1], 2);
+        assertEquals("2) Check d 2", d[2], 1);
+        assertEquals("2) Check f 0", f[0], 3);
+        assertEquals("2) Check f 1", f[1], 2);
+        assertEquals("2) Check f 2", f[2], 1);
+        assertEquals("2) Check c 0", c[0], 'c');
+        assertEquals("2) Check c 1", c[1], 'b');
+        assertEquals("2) Check c 2", c[2], 'a');
+        assertFalse("2) Check bool 0", bool[0]);
+        assertFalse("2) Check bool 1", bool[0]);
+        assertFalse("2) Check bool 2", bool[0]);
+        
+    }
+
+    public void testConfigurationPrimitiveArraysString() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        byte[] b = (byte[]) props.get("bs");
+        short[] s = (short[]) props.get("ss");
+        int[] i = (int[]) props.get("is");
+        long[] l = (long[]) props.get("ls");
+        double[] d = (double[]) props.get("ds");
+        float[] f = (float[]) props.get("fs");
+        char[] c = (char[]) props.get("cs");
+        boolean[] bool = (boolean[]) props.get("bools");
+                
+        assertEquals("Check b 0", b[0], 1);
+        assertEquals("Check b 1", b[1], 2);
+        assertEquals("Check b 2", b[2], 3);
+        assertEquals("Check s 0", s[0], 1);
+        assertEquals("Check s 1", s[1], 2);
+        assertEquals("Check s 2", s[2], 3);
+        assertEquals("Check i 0", i[0], 1);
+        assertEquals("Check i 1", i[1], 2);
+        assertEquals("Check i 2", i[2], 3);
+        assertEquals("Check l 0", l[0], 1);
+        assertEquals("Check l 1", l[1], 2);
+        assertEquals("Check l 2", l[2], 3);
+        assertEquals("Check d 0", d[0], 1);
+        assertEquals("Check d 1", d[1], 2);
+        assertEquals("Check d 2", d[2], 3);
+        assertEquals("Check f 0", f[0], 1);
+        assertEquals("Check f 1", f[1], 2);
+        assertEquals("Check f 2", f[2], 3);
+        assertEquals("Check c 0", c[0], 'a');
+        assertEquals("Check c 1", c[1], 'b');
+        assertEquals("Check c 2", c[2], 'c');
+        assertTrue("Check bool 0", bool[0]);
+        assertTrue("Check bool 1", bool[0]);
+        assertTrue("Check bool 2", bool[0]);
+        
+        reconfigureString();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        b = (byte[]) props.get("bs");
+        s = (short[]) props.get("ss");
+        i = (int[]) props.get("is");
+        l = (long[]) props.get("ls");
+        d = (double[]) props.get("ds");
+        f = (float[]) props.get("fs");
+        c = (char[]) props.get("cs");
+        bool = (boolean[]) props.get("bools");
+        
+        assertEquals("2) Check b 0", b[0], 3);
+        assertEquals("2) Check b 1", b[1], 2);
+        assertEquals("2) Check b 2", b[2], 1);
+        assertEquals("2) Check s 0", s[0], 3);
+        assertEquals("2) Check s 1", s[1], 2);
+        assertEquals("2) Check s 2", s[2], 1);
+        assertEquals("2) Check i 0", i[0], 3);
+        assertEquals("2) Check i 1", i[1], 2);
+        assertEquals("2) Check i 2", i[2], 1);
+        assertEquals("2) Check l 0", l[0], 3);
+        assertEquals("2) Check l 1", l[1], 2);
+        assertEquals("2) Check l 2", l[2], 1);
+        assertEquals("2) Check d 0", d[0], 3);
+        assertEquals("2) Check d 1", d[1], 2);
+        assertEquals("2) Check d 2", d[2], 1);
+        assertEquals("2) Check f 0", f[0], 3);
+        assertEquals("2) Check f 1", f[1], 2);
+        assertEquals("2) Check f 2", f[2], 1);
+        assertEquals("2) Check c 0", c[0], 'c');
+        assertEquals("2) Check c 1", c[1], 'b');
+        assertEquals("2) Check c 2", c[2], 'a');
+        assertFalse("2) Check bool 0", bool[0]);
+        assertFalse("2) Check bool 1", bool[0]);
+        assertFalse("2) Check bool 2", bool[0]);
+        
+    }
+    
+    public void testConfigurationObj() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        String s = (String) props.get("string");
+        String[] ss = (String[]) props.get("strings");
+                
+        assertEquals("Check string", s, "foo");
+        assertEquals("Check strings 0", ss[0], "foo");
+        assertEquals("Check strings 1", ss[1], "bar");
+        assertEquals("Check strings 2", ss[2], "baz");
+        
+        reconfigure();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        s = (String) props.get("string");
+        ss = (String[]) props.get("strings");
+                
+        assertEquals("2) Check string", s, "bar");
+        assertEquals("2) Check strings 0", ss[0], "baz");
+        assertEquals("2) Check strings 1", ss[1], "bar");
+        assertEquals("2) Check strings 2", ss[2], "foo");
+    }
+
+    public void testConfigurationObjString() {
+        ServiceReference ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) context.getService(ref);
+        Properties props = check.getProps();
+        
+        String s = (String) props.get("string");
+        String[] ss = (String[]) props.get("strings");
+                
+        assertEquals("Check string", s, "foo");
+        assertEquals("Check strings 0", ss[0], "foo");
+        assertEquals("Check strings 1", ss[1], "bar");
+        assertEquals("Check strings 2", ss[2], "baz");
+        
+        reconfigureString();
+        
+        ref = Utils.getServiceReferenceByName(context, CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) context.getService(ref);
+        props = check.getProps();
+        
+        s = (String) props.get("string");
+        ss = (String[]) props.get("strings");
+                
+        assertEquals("2) Check string", s, "bar");
+        assertEquals("2) Check strings 0", ss[0], "baz");
+        assertEquals("2) Check strings 1", ss[1], "bar");
+        assertEquals("2) Check strings 2", ss[2], "foo");
+    }
+    
+    private void reconfigure() {
+        Properties props2 = new Properties();
+        props2.put("name", "under-test");
+        props2.put("b", new Byte("2"));
+        props2.put("s", new Short("2"));
+        props2.put("i", new Integer("2"));
+        props2.put("l", new Long("2"));
+        props2.put("d", new Double("2"));
+        props2.put("f", new Float("2"));
+        props2.put("c", new Character('b'));
+        props2.put("bool", new Boolean(false));
+        props2.put("bs", new byte[]{(byte)3,(byte)2,(byte)1});
+        props2.put("ss", new short[]{(short)3,(short)2,(short)1});
+        props2.put("is", new int[]{3,2,1});
+        props2.put("ls", new long[]{3,2,1});
+        props2.put("ds", new double[]{3,2,1});
+        props2.put("fs", new float[]{3,2,1});
+        props2.put("cs", new char[]{'c','b','a'});
+        props2.put("bools", new boolean[]{false,false,false});
+        props2.put("string", "bar");
+        props2.put("strings", new String[]{"baz", "bar", "foo"});
+        
+        instance.reconfigure(props2);
+    }
+    
+    private void reconfigureString() {
+        Properties props2 = new Properties();
+        props2.put("name", "under-test");
+        props2.put("b", "2");
+        props2.put("s", "2");
+        props2.put("i", "2");
+        props2.put("l", "2");
+        props2.put("d", "2");
+        props2.put("f", "2");
+        props2.put("c", "b");
+        props2.put("bool", "false");
+        props2.put("bs", "{3, 2,1}");
+        props2.put("ss", "{3, 2,1}");
+        props2.put("is", "{3, 2,1}");
+        props2.put("ls", "{3, 2,1}");
+        props2.put("ds", "{3, 2,1}");
+        props2.put("fs", "{3, 2,1}");
+        props2.put("cs", "{c, b , a}");
+        props2.put("bools", "{false,false,false}");
+        props2.put("string", "bar");
+        props2.put("strings", "{baz, bar, foo}");
+        
+        instance.reconfigure(props2);
+    }
+
+}



Mime
View raw message