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 2013/02/13 17:26:24 UTC

svn commit: r1445708 [7/9] - in /felix/trunk/ipojo/runtime/core-it: ./ src/ src/it/ src/it/ipojo-core-annotations-test/ src/it/ipojo-core-annotations-test/src/ src/it/ipojo-core-annotations-test/src/main/ src/it/ipojo-core-annotations-test/src/main/jav...

Added: felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-configuration-test/src/test/java/org/apache/felix/ipojo/runtime/core/TestMethodProperties.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-configuration-test/src/test/java/org/apache/felix/ipojo/runtime/core/TestMethodProperties.java?rev=1445708&view=auto
==============================================================================
--- felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-configuration-test/src/test/java/org/apache/felix/ipojo/runtime/core/TestMethodProperties.java (added)
+++ felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-configuration-test/src/test/java/org/apache/felix/ipojo/runtime/core/TestMethodProperties.java Wed Feb 13 16:26:18 2013
@@ -0,0 +1,1651 @@
+/* 
+ * 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.runtime.core;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.runtime.core.services.CheckService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.osgi.framework.ServiceReference;
+import org.ow2.chameleon.testing.helpers.IPOJOHelper;
+import org.ow2.chameleon.testing.helpers.OSGiHelper;
+
+import java.util.Properties;
+
+import static junit.framework.Assert.assertEquals;
+import static org.junit.Assert.*;
+
+
+public class TestMethodProperties extends Common {
+
+    ComponentInstance instance;
+
+    ComponentInstance instance2;
+
+    ComponentInstance instance3;
+
+
+
+    @Before
+    public void setUp() {
+        osgiHelper = new OSGiHelper(bc);
+        ipojoHelper = new IPOJOHelper(bc);
+        Factory fact = ipojoHelper.getFactory("CONFIG-MethodConfigurableCheckService");
+        Properties props = new Properties();
+        props.put("instance.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());
+        }
+
+        Properties props2 = new Properties();
+        props2.put("instance.name", "under-test-2");
+        props2.put("b", new Byte("1"));
+        props2.put("s", new Short("1"));
+        props2.put("i", new Integer("1"));
+        props2.put("l", new Long("1"));
+        props2.put("d", new Double("1"));
+        props2.put("f", new Float("1"));
+        props2.put("c", new Character('a'));
+        props2.put("bool", new Boolean(true));
+        props2.put("bs", new byte[]{1, 2, 3});
+        props2.put("ss", new short[]{1, 2, 3});
+        props2.put("is", new int[]{1, 2, 3});
+        props2.put("ls", new long[]{1, 2, 3});
+        props2.put("ds", new double[]{1, 2, 3});
+        props2.put("fs", new float[]{1, 2, 3});
+        props2.put("cs", new char[]{'a', 'b', 'c'});
+        props2.put("bools", new boolean[]{true, true, true});
+        props2.put("string", "foo");
+        props2.put("strings", new String[]{"foo", "bar", "baz"});
+
+        try {
+            instance2 = fact.createComponentInstance(props2);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Cannot create the under-test instance 2 : " + e.getMessage());
+        }
+
+        try {
+            instance3 = fact.createComponentInstance(null);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("Cannot create the under-test instance 3 : " + e.getMessage());
+        }
+
+
+    }
+
+    @After
+    public void tearDown() {
+        ipojoHelper.dispose();
+        osgiHelper.dispose();
+        instance.dispose();
+        instance2.dispose();
+        instance3.dispose();
+        instance = null;
+        instance2 = null;
+        instance3 = null;
+    }
+
+    @Test
+    public void testConfigurationPrimitive() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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(instance);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitiveString() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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(instance);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitiveArrays() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("Check d 1", d[1], 2, 0);
+        assertEquals("Check d 2", d[2], 3, 0);
+        assertEquals("Check f 0", f[0], 1, 0);
+        assertEquals("Check f 1", f[1], 2, 0);
+        assertEquals("Check f 2", f[2], 3, 0);
+        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(instance);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("2) Check d 1", d[1], 2, 0);
+        assertEquals("2) Check d 2", d[2], 1, 0);
+        assertEquals("2) Check f 0", f[0], 3, 0);
+        assertEquals("2) Check f 1", f[1], 2, 0);
+        assertEquals("2) Check f 2", f[2], 1, 0);
+        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));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitiveArraysString() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("Check d 1", d[1], 2, 0);
+        assertEquals("Check d 2", d[2], 3, 0);
+        assertEquals("Check f 0", f[0], 1, 0);
+        assertEquals("Check f 1", f[1], 2, 0);
+        assertEquals("Check f 2", f[2], 3, 0);
+        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(instance);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("2) Check d 1", d[1], 2, 0);
+        assertEquals("2) Check d 2", d[2], 1, 0);
+        assertEquals("2) Check f 0", f[0], 3, 0);
+        assertEquals("2) Check f 1", f[1], 2, 0);
+        assertEquals("2) Check f 2", f[2], 1, 0);
+        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));
+
+    }
+
+    @Test
+    public void testConfigurationObj() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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(instance);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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));
+    }
+
+    @Test
+    public void testConfigurationObjString() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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(instance);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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));
+    }
+
+    @Test
+    public void testConfigurationPrimitive2() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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(instance2);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitive2String() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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(instance2);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitiveArrays2() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("Check d 1", d[1], 2, 0);
+        assertEquals("Check d 2", d[2], 3, 0);
+        assertEquals("Check f 0", f[0], 1, 0);
+        assertEquals("Check f 1", f[1], 2, 0);
+        assertEquals("Check f 2", f[2], 3, 0);
+        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(instance2);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("2) Check d 1", d[1], 2, 0);
+        assertEquals("2) Check d 2", d[2], 1, 0);
+        assertEquals("2) Check f 0", f[0], 3, 0);
+        assertEquals("2) Check f 1", f[1], 2, 0);
+        assertEquals("2) Check f 2", f[2], 1, 0);
+        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));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitiveArrays2String() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("Check d 1", d[1], 2, 0);
+        assertEquals("Check d 2", d[2], 3, 0);
+        assertEquals("Check f 0", f[0], 1, 0);
+        assertEquals("Check f 1", f[1], 2, 0);
+        assertEquals("Check f 2", f[2], 3, 0);
+        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(instance2);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("2) Check d 1", d[1], 2, 0);
+        assertEquals("2) Check d 2", d[2], 1, 0);
+        assertEquals("2) Check f 0", f[0], 3, 0);
+        assertEquals("2) Check f 1", f[1], 2, 0);
+        assertEquals("2) Check f 2", f[2], 1, 0);
+        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));
+
+    }
+
+    @Test
+    public void testConfigurationObj2() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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(instance2);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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));
+    }
+
+    @Test
+    public void testConfigurationObj2String() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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(instance2);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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(ComponentInstance ci) {
+        Properties props2 = new Properties();
+        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"});
+
+        ci.reconfigure(props2);
+    }
+
+    private void reconfigureString(ComponentInstance ci) {
+        Properties props2 = new Properties();
+        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}");
+
+        ci.reconfigure(props2);
+    }
+
+    @Test
+    public void testConfigurationPrimitiveNoValue() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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("0"));
+        assertEquals("Check s", s, new Short("0"));
+        assertEquals("Check i", i, new Integer("0"));
+        assertEquals("Check l", l, new Long("0"));
+        assertEquals("Check d", d, new Double("0"));
+        assertEquals("Check f", f, new Float("0"));
+        assertEquals("Check c", c, new Character((char) 0));
+        assertEquals("Check bool", bool, new Boolean("false"));
+
+        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(0));
+        assertEquals("Check ups", ups, new Integer(0));
+        assertEquals("Check upi", upi, new Integer(0));
+        assertEquals("Check upl", upl, new Integer(0));
+        assertEquals("Check upd", upd, new Integer(0));
+        assertEquals("Check upf", upf, new Integer(0));
+        assertEquals("Check upc", upc, new Integer(0));
+        assertEquals("Check upbool", upbool, new Integer(0));
+
+        reconfigure(instance3);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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(1));
+        assertEquals("2) Check ups", ups, new Integer(1));
+        assertEquals("2) Check upi", upi, new Integer(1));
+        assertEquals("2) Check upl", upl, new Integer(1));
+        assertEquals("2) Check upd", upd, new Integer(1));
+        assertEquals("2) Check upf", upf, new Integer(1));
+        assertEquals("2) Check upc", upc, new Integer(1));
+        assertEquals("2) Check upbool", upbool, new Integer(1));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitiveStringNoValue() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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("0"));
+        assertEquals("Check s", s, new Short("0"));
+        assertEquals("Check i", i, new Integer("0"));
+        assertEquals("Check l", l, new Long("0"));
+        assertEquals("Check d", d, new Double("0"));
+        assertEquals("Check f", f, new Float("0"));
+        assertEquals("Check c", c, new Character((char) 0));
+        assertEquals("Check bool", bool, new Boolean("false"));
+
+        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(0));
+        assertEquals("Check ups", ups, new Integer(0));
+        assertEquals("Check upi", upi, new Integer(0));
+        assertEquals("Check upl", upl, new Integer(0));
+        assertEquals("Check upd", upd, new Integer(0));
+        assertEquals("Check upf", upf, new Integer(0));
+        assertEquals("Check upc", upc, new Integer(0));
+        assertEquals("Check upbool", upbool, new Integer(0));
+
+        reconfigureString(instance3);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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(1));
+        assertEquals("2) Check ups", ups, new Integer(1));
+        assertEquals("2) Check upi", upi, new Integer(1));
+        assertEquals("2) Check upl", upl, new Integer(1));
+        assertEquals("2) Check upd", upd, new Integer(1));
+        assertEquals("2) Check upf", upf, new Integer(1));
+        assertEquals("2) Check upc", upc, new Integer(1));
+        assertEquals("2) Check upbool", upbool, new Integer(1));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitiveArraysNoValue() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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");
+
+        assertNull("Check b nullity", b);
+        assertNull("Check s nullity", s);
+        assertNull("Check i nullity", i);
+        assertNull("Check l nullity", l);
+        assertNull("Check d nullity", d);
+        assertNull("Check f nullity", f);
+        assertNull("Check c nullity", c);
+        assertNull("Check bool nullity", bool);
+
+        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(0));
+        assertEquals("Check ups", ups, new Integer(0));
+        assertEquals("Check upi", upi, new Integer(0));
+        assertEquals("Check upl", upl, new Integer(0));
+        assertEquals("Check upd", upd, new Integer(0));
+        assertEquals("Check upf", upf, new Integer(0));
+        assertEquals("Check upc", upc, new Integer(0));
+        assertEquals("Check upbool", upbool, new Integer(0));
+
+        reconfigure(instance3);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("2) Check d 1", d[1], 2, 0);
+        assertEquals("2) Check d 2", d[2], 1, 0);
+        assertEquals("2) Check f 0", f[0], 3, 0);
+        assertEquals("2) Check f 1", f[1], 2, 0);
+        assertEquals("2) Check f 2", f[2], 1, 0);
+        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(1));
+        assertEquals("2) Check ups", ups, new Integer(1));
+        assertEquals("2) Check upi", upi, new Integer(1));
+        assertEquals("2) Check upl", upl, new Integer(1));
+        assertEquals("2) Check upd", upd, new Integer(1));
+        assertEquals("2) Check upf", upf, new Integer(1));
+        assertEquals("2) Check upc", upc, new Integer(1));
+        assertEquals("2) Check upbool", upbool, new Integer(1));
+
+    }
+
+    @Test
+    public void testConfigurationPrimitiveArraysStringNoValue() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(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");
+
+        assertNull("Check b nullity", b);
+        assertNull("Check s nullity", s);
+        assertNull("Check i nullity", i);
+        assertNull("Check l nullity", l);
+        assertNull("Check d nullity", d);
+        assertNull("Check f nullity", f);
+        assertNull("Check c nullity", c);
+        assertNull("Check bool nullity", bool);
+
+        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(0));
+        assertEquals("Check ups", ups, new Integer(0));
+        assertEquals("Check upi", upi, new Integer(0));
+        assertEquals("Check upl", upl, new Integer(0));
+        assertEquals("Check upd", upd, new Integer(0));
+        assertEquals("Check upf", upf, new Integer(0));
+        assertEquals("Check upc", upc, new Integer(0));
+        assertEquals("Check upbool", upbool, new Integer(0));
+
+
+        reconfigureString(instance3);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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, 0);
+        assertEquals("2) Check d 1", d[1], 2, 0);
+        assertEquals("2) Check d 2", d[2], 1, 0);
+        assertEquals("2) Check f 0", f[0], 3, 0);
+        assertEquals("2) Check f 1", f[1], 2, 0);
+        assertEquals("2) Check f 2", f[2], 1, 0);
+        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(1));
+        assertEquals("2) Check ups", ups, new Integer(1));
+        assertEquals("2) Check upi", upi, new Integer(1));
+        assertEquals("2) Check upl", upl, new Integer(1));
+        assertEquals("2) Check upd", upd, new Integer(1));
+        assertEquals("2) Check upf", upf, new Integer(1));
+        assertEquals("2) Check upc", upc, new Integer(1));
+        assertEquals("2) Check upbool", upbool, new Integer(1));
+
+    }
+
+    @Test
+    public void testConfigurationObjNoValue() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(ref);
+        Properties props = check.getProps();
+
+        String s = (String) props.get("string");
+        String[] ss = (String[]) props.get("strings");
+
+        assertEquals("Check string", s, null);
+        assertEquals("Check strings", ss, null);
+
+
+        Integer upString = (Integer) props.get("upstring");
+        Integer upStrings = (Integer) props.get("upstrings");
+
+        assertEquals("Check upString", upString, new Integer(0));
+        assertEquals("Check upStrings", upStrings, new Integer(0));
+
+        reconfigure(instance3);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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(1));
+        assertEquals("2) Check upStrings", upStrings, new Integer(1));
+    }
+
+    @Test
+    public void testConfigurationObjStringNoValue() {
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        CheckService check = (CheckService) osgiHelper.getServiceObject(ref);
+        Properties props = check.getProps();
+
+        String s = (String) props.get("string");
+        String[] ss = (String[]) props.get("strings");
+
+        assertEquals("Check string", s, null);
+        assertEquals("Check strings", ss, null);
+
+
+        Integer upString = (Integer) props.get("upstring");
+        Integer upStrings = (Integer) props.get("upstrings");
+
+        assertEquals("Check upString", upString, new Integer(0));
+        assertEquals("Check upStrings", upStrings, new Integer(0));
+
+        reconfigureString(instance3);
+
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName());
+        assertNotNull("Test check service availability", ref);
+        check = (CheckService) osgiHelper.getServiceObject(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(1));
+        assertEquals("2) Check upStrings", upStrings, new Integer(1));
+    }
+
+}

Added: felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-configuration-test/src/test/java/org/apache/felix/ipojo/runtime/core/TestPropertyModifier.java
URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-configuration-test/src/test/java/org/apache/felix/ipojo/runtime/core/TestPropertyModifier.java?rev=1445708&view=auto
==============================================================================
--- felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-configuration-test/src/test/java/org/apache/felix/ipojo/runtime/core/TestPropertyModifier.java (added)
+++ felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-configuration-test/src/test/java/org/apache/felix/ipojo/runtime/core/TestPropertyModifier.java Wed Feb 13 16:26:18 2013
@@ -0,0 +1,89 @@
+package org.apache.felix.ipojo.runtime.core;
+
+import org.apache.felix.ipojo.ComponentInstance;
+import org.apache.felix.ipojo.Factory;
+import org.apache.felix.ipojo.runtime.core.services.CheckService;
+import org.apache.felix.ipojo.runtime.core.services.FooService;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.ow2.chameleon.testing.helpers.IPOJOHelper;
+import org.ow2.chameleon.testing.helpers.OSGiHelper;
+
+import javax.inject.Inject;
+import java.util.Properties;
+
+import static org.junit.Assert.*;
+import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.options;
+
+
+public class TestPropertyModifier extends Common {
+
+    @Test
+    public void testPropertyModifier() {
+
+        ComponentInstance ci = null;
+        Factory factory = ipojoHelper.getFactory("org.apache.felix.ipojo.runtime.core.components.PropertyModifier");
+        Properties props = new Properties();
+        props.put("cls", new String[]{FooService.class.getName()});
+        try {
+            ci = factory.createComponentInstance(props);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail(e.getMessage());
+        }
+
+        ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), ci.getInstanceName());
+        assertNotNull("Check ref", ref);
+
+        // Check the service property
+        // Not exposed here:
+        assertNull("Classes -0", ref.getProperty("classes"));
+
+        CheckService check = (CheckService) osgiHelper.getServiceObject(ref);
+        assertTrue(check.check());
+
+        // Property exposed now.
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), ci.getInstanceName());
+        Class[] str = (Class[]) ref.getProperty("classes");
+        assertEquals("Classes size", 1, str.length);
+        assertEquals("Classes[0]", FooService.class.getName(), str[0].getName());
+
+        Properties p = check.getProps();
+        Class[] str2 = (Class[]) p.get("classes");
+        assertEquals("Classes size -2", 1, str2.length);
+        assertEquals("Classes[0] -2", FooService.class.getName(), str2[0].getName());
+
+        Properties props2 = new Properties();
+        props2.put("cls", new String[]{FooService.class.getName(), CheckService.class.getName()});
+        try {
+            ci.reconfigure(props2);
+        } catch (Exception e) {
+            fail(e.getMessage());
+        }
+
+        // Check the service property
+        ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), ci.getInstanceName());
+        assertNotNull("Check ref", ref);
+        str = (Class[]) ref.getProperty("classes");
+        assertEquals("Classes size -3", 2, str.length);
+        assertEquals("Classes[0] -3", FooService.class.getName(), str[0].getName());
+        assertEquals("Classes[1] -3", CheckService.class.getName(), str[1].getName());
+
+
+        check = (CheckService) osgiHelper.getServiceObject(ref);
+        p = check.getProps();
+        str2 = (Class[]) p.get("classes");
+        assertEquals("Classes size -4", 2, str2.length);
+        assertEquals("Classes[0] -4", FooService.class.getName(), str2[0].getName());
+        assertEquals("Classes[1] -4", CheckService.class.getName(), str2[1].getName());
+
+        ci.dispose();
+    }
+
+}