Added: felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxiedSetMultipleDependencies.java URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxiedSetMultipleDependencies.java?rev=1450133&view=auto ============================================================================== --- felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxiedSetMultipleDependencies.java (added) +++ felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxiedSetMultipleDependencies.java Tue Feb 26 11:05:37 2013 @@ -0,0 +1,256 @@ +/* + * 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.test.dependencies.proxies; + +import org.apache.felix.ipojo.ComponentInstance; +import org.apache.felix.ipojo.architecture.Architecture; +import org.apache.felix.ipojo.architecture.InstanceDescription; +import org.apache.felix.ipojo.runtime.core.test.dependencies.Common; +import org.apache.felix.ipojo.runtime.core.test.services.CheckService; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.osgi.framework.ServiceReference; + +import java.util.Properties; + +import static org.junit.Assert.*; + +public class TestProxiedSetMultipleDependencies extends Common { + + ComponentInstance instance1, instance2; + ComponentInstance fooProvider1, fooProvider2; + + @Before + public void setUp() { + try { + Properties prov = new Properties(); + prov.put("instance.name", "FooProvider1"); + fooProvider1 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov); + fooProvider1.stop(); + + Properties prov2 = new Properties(); + prov2.put("instance.name", "FooProvider2"); + fooProvider2 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov2); + fooProvider2.stop(); + + Properties i1 = new Properties(); + i1.put("instance.name", "Simple"); + instance1 = ipojoHelper.getFactory("ProxiedSimpleSetCheckServiceProvider").createComponentInstance(i1); + + Properties i2 = new Properties(); + i2.put("instance.name", "Optional"); + instance2 = ipojoHelper.getFactory("ProxiedOptionalSetCheckServiceProvider").createComponentInstance(i2); + } catch (Exception e) { + fail(e.getMessage()); + } + + } + + @After + public void tearDown() { + instance1.dispose(); + instance2.dispose(); + fooProvider1.dispose(); + fooProvider2.dispose(); + instance1 = null; + instance2 = null; + fooProvider1 = null; + fooProvider2 = null; + } + + @Test public void testSimple() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance1.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider1.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation - 1", ((Boolean) props.get("result")).booleanValue()); // True, a provider is here + assertEquals("check void bind invocation - 1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 1", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 1", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 1", ((Integer) props.get("int")).intValue(), 1); + assertEquals("Check FS invocation (long) - 1", ((Long) props.get("long")).longValue(), 1); + assertEquals("Check FS invocation (double) - 1", ((Double) props.get("double")).doubleValue(), 1.0, 0); + + fooProvider2.start(); + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 3", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation - 2", ((Boolean) props.get("result")).booleanValue()); // True, two providers are here + assertEquals("check void bind invocation - 2", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 2", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 2", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 2", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 2", ((Integer) props.get("int")).intValue(), 2); + assertEquals("Check FS invocation (long) - 2", ((Long) props.get("long")).longValue(), 2); + assertEquals("Check FS invocation (double) - 2", ((Double) props.get("double")).doubleValue(), 2.0, 0); + + fooProvider1.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 4", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation - 3", ((Boolean) props.get("result")).booleanValue()); // True, two providers are here + assertEquals("check void bind invocation - 3", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 3", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 3", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 3", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 3", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 3", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 3", ((Integer) props.get("int")).intValue(), 1); + assertEquals("Check FS invocation (long) - 3", ((Long) props.get("long")).longValue(), 1); + assertEquals("Check FS invocation (double) - 3", ((Double) props.get("double")).doubleValue(), 1.0, 0); + + fooProvider2.stop(); + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 5", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testOptional() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance2.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation - 0", ((Boolean) props.get("result")).booleanValue()); // False : no provider + assertEquals("check void bind invocation - 0", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 0", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 0", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 0", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 0", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 0", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 0", ((Integer) props.get("int")).intValue(), 0); + assertEquals("Check FS invocation (long) - 0", ((Long) props.get("long")).longValue(), 0); + assertEquals("Check FS invocation (double) - 0", ((Double) props.get("double")).doubleValue(), 0.0, 0); + + fooProvider1.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation - 1", ((Boolean) props.get("result")).booleanValue()); // True, a provider is here + assertEquals("check void bind invocation - 1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 1", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 1", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 1", ((Integer) props.get("int")).intValue(), 1); + assertEquals("Check FS invocation (long) - 1", ((Long) props.get("long")).longValue(), 1); + assertEquals("Check FS invocation (double) - 1", ((Double) props.get("double")).doubleValue(), 1.0, 0); + + fooProvider2.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 3", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation - 2", ((Boolean) props.get("result")).booleanValue()); // True, two providers are here + assertEquals("check void bind invocation - 2", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 2", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 2", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 2", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 2", ((Integer) props.get("int")).intValue(), 2); + assertEquals("Check FS invocation (long) - 2", ((Long) props.get("long")).longValue(), 2); + assertEquals("Check FS invocation (double) - 2", ((Double) props.get("double")).doubleValue(), 2.0, 0); + + fooProvider1.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 4", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation - 3", ((Boolean) props.get("result")).booleanValue()); // True, it still one provider. + assertEquals("check void bind invocation - 3", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 3", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 3", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 3", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 3", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 3", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 3", ((Integer) props.get("int")).intValue(), 1); + assertEquals("Check FS invocation (long) - 3", ((Long) props.get("long")).longValue(), 1); + assertEquals("Check FS invocation (double) - 3", ((Double) props.get("double")).doubleValue(), 1.0, 0); + + fooProvider2.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 5", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation - 4", ((Boolean) props.get("result")).booleanValue()); // False, no more provider. + assertEquals("check void bind invocation - 4", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 4", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 4", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 4", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 4", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 4", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 4", ((Integer) props.get("int")).intValue(), 0); + assertEquals("Check FS invocation (long) - 4", ((Long) props.get("long")).longValue(), 0); + assertEquals("Check FS invocation (double) - 4", ((Double) props.get("double")).doubleValue(), 0.0, 0); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + +}
Added: felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxiedSimpleDependencies.java URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxiedSimpleDependencies.java?rev=1450133&view=auto ============================================================================== --- felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxiedSimpleDependencies.java (added) +++ felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxiedSimpleDependencies.java Tue Feb 26 11:05:37 2013 @@ -0,0 +1,418 @@ +/* + * 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.test.dependencies.proxies; + +import org.apache.felix.ipojo.ComponentInstance; +import org.apache.felix.ipojo.architecture.Architecture; +import org.apache.felix.ipojo.architecture.InstanceDescription; +import org.apache.felix.ipojo.runtime.core.test.dependencies.Common; +import org.apache.felix.ipojo.runtime.core.test.services.CheckService; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.osgi.framework.ServiceReference; + +import java.util.Properties; + +import static org.junit.Assert.*; + +public class TestProxiedSimpleDependencies extends Common { + + ComponentInstance instance1, instance2, instance3, instance4, instance5, instance6, instance7, instance8; + ComponentInstance fooProvider; + + @Before public void setUp() { + try { + Properties prov = new Properties(); + prov.put("instance.name","FooProvider"); + fooProvider = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov); + fooProvider.stop(); + + Properties i1 = new Properties(); + i1.put("instance.name","Simple"); + instance1 = ipojoHelper.getFactory("ProxiedSimpleCheckServiceProvider").createComponentInstance(i1); + + Properties i2 = new Properties(); + i2.put("instance.name","Void"); + instance2 = ipojoHelper.getFactory("ProxiedVoidCheckServiceProvider").createComponentInstance(i2); + + Properties i3 = new Properties(); + i3.put("instance.name","Object"); + instance3 = ipojoHelper.getFactory("ProxiedObjectCheckServiceProvider").createComponentInstance(i3); + + Properties i4 = new Properties(); + i4.put("instance.name","Ref"); + instance4 = ipojoHelper.getFactory("ProxiedRefCheckServiceProvider").createComponentInstance(i4); + + Properties i5 = new Properties(); + i5.put("instance.name","Both"); + instance5 = ipojoHelper.getFactory("ProxiedBothCheckServiceProvider").createComponentInstance(i5); + + Properties i6 = new Properties(); + i6.put("instance.name","Double"); + instance6 = ipojoHelper.getFactory("ProxiedDoubleCheckServiceProvider").createComponentInstance(i6); + + Properties i7 = new Properties(); + i7.put("instance.name","Map"); + instance7 = ipojoHelper.getFactory("ProxiedMapCheckServiceProvider").createComponentInstance(i7); + + Properties i8 = new Properties(); + i8.put("instance.name","Dictionary"); + instance8 = ipojoHelper.getFactory("ProxiedDictCheckServiceProvider").createComponentInstance(i8); + } catch(Exception e) { + e.printStackTrace(); + fail(e.getMessage()); } + + } + + @After + public void tearDown() { + instance1.dispose(); + instance2.dispose(); + instance3.dispose(); + instance4.dispose(); + instance5.dispose(); + instance6.dispose(); + instance7.dispose(); + instance8.dispose(); + fooProvider.dispose(); + instance1 = null; + instance2 = null; + instance3 = null; + instance4 = null; + instance5 = null; + instance6 = null; + instance7 = null; + instance8 = null; + fooProvider = null; + } + + @Test public void testSimple() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance1.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 1", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + assertTrue("check CheckService invocation", cs.check()); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + assertTrue("check CheckService invocation", cs.check()); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testVoid() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance2.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance2.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + Object o = osgiHelper.getServiceObject(cs_ref); + CheckService cs = (CheckService) o; + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -1 ("+((Integer)props.get("voidB")).intValue()+")", ((Integer)props.get("voidB")).intValue(), 1); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testObject() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance3.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance3.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 1); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testRef() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance4.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance4.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 1); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testBoth() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance5.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance5.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 1); + assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testDouble() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance6.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance6.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + assertNotNull("Check cs", cs); + cs.check(); + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 1); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testMap() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance7.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance7.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0); + assertEquals("check map bind callback invocation -1", ((Integer)props.get("mapB")).intValue(), 1); + assertEquals("check map unbind callback invocation -1", ((Integer)props.get("mapU")).intValue(), 0); + assertEquals("check dict bind callback invocation -1", ((Integer)props.get("dictB")).intValue(), 0); + assertEquals("check dict unbind callback invocation -1", ((Integer)props.get("dictU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testDict() { + ServiceReference arch_ref = ipojoHelper.getServiceReferenceByName(Architecture.class.getName(), instance8.getInstanceName()); + assertNotNull("Check architecture availability", arch_ref); + InstanceDescription id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 1", id.getState() == ComponentInstance.INVALID); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity", id.getState() == ComponentInstance.VALID); + + ServiceReference cs_ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance8.getInstanceName()); + assertNotNull("Check CheckService availability", cs_ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -1", ((Boolean)props.get("result")).booleanValue()); + assertEquals("check void bind invocation -1", ((Integer)props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer)props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer)props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer)props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer)props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer)props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer)props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer)props.get("bothU")).intValue(), 0); + assertEquals("check map bind callback invocation -1", ((Integer)props.get("mapB")).intValue(), 0); + assertEquals("check map unbind callback invocation -1", ((Integer)props.get("mapU")).intValue(), 0); + assertEquals("check dict bind callback invocation -1", ((Integer)props.get("dictB")).intValue(), 1); + assertEquals("check dict unbind callback invocation -1", ((Integer)props.get("dictU")).intValue(), 0); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance invalidity - 2", id.getState() == ComponentInstance.INVALID); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + +} Added: felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxyTest.java URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxyTest.java?rev=1450133&view=auto ============================================================================== --- felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxyTest.java (added) +++ felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-proxies/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/proxies/TestProxyTest.java Tue Feb 26 11:05:37 2013 @@ -0,0 +1,251 @@ +package org.apache.felix.ipojo.runtime.core.test.dependencies.proxies; + +import org.apache.felix.ipojo.ComponentInstance; +import org.apache.felix.ipojo.ConfigurationException; +import org.apache.felix.ipojo.MissingHandlerException; +import org.apache.felix.ipojo.UnacceptableConfiguration; +import org.apache.felix.ipojo.handlers.dependency.DependencyHandler; +import org.apache.felix.ipojo.runtime.core.test.dependencies.Common; +import org.apache.felix.ipojo.runtime.core.test.services.CheckService; +import org.apache.felix.ipojo.runtime.core.test.services.FooService; +import org.junit.Test; +import org.osgi.framework.ServiceReference; + +import java.util.Properties; + +import static org.junit.Assert.*; + +public class TestProxyTest extends Common { + + + @Test + public void testDelegation() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + Properties prov = new Properties(); + prov.put("instance.name", "FooProvider1-Proxy"); + ComponentInstance fooProvider1 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov); + + + Properties i1 = new Properties(); + i1.put("instance.name", "Delegator"); + ComponentInstance instance1 = ipojoHelper.getFactory( + "org.apache.felix.ipojo.runtime.core.test.components.proxy.CheckServiceDelegator").createComponentInstance(i1); + + + ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull(ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(ref); + + Properties props = cs.getProps(); + FooService helper = (FooService) props.get("helper.fs"); + assertNotNull(helper); + assertTrue(helper.toString().contains("$$Proxy")); // This is the suffix. + + assertTrue(cs.check()); + + fooProvider1.dispose(); + instance1.dispose(); + } + + @Test + public void testDelegationOnNullable() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + Properties i1 = new Properties(); + i1.put("instance.name", "DelegatorNullable"); + ComponentInstance instance1 = ipojoHelper.getFactory( + "org.apache.felix.ipojo.runtime.core.test.components.proxy.CheckServiceDelegator").createComponentInstance(i1); + + + ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull(ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(ref); + + Properties props = cs.getProps(); + FooService helper = (FooService) props.get("helper.fs"); + assertNotNull(helper); + assertTrue(helper.toString().contains("$$Proxy")); // This is the suffix. + + assertFalse(cs.check()); // Nullable. + + instance1.dispose(); + } + + + @Test + public void testGetAndDelegation() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + Properties prov = new Properties(); + prov.put("instance.name", "FooProvider1-Proxy"); + ComponentInstance fooProvider1 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov); + + + Properties i1 = new Properties(); + i1.put("instance.name", "Delegator"); + ComponentInstance instance1 = ipojoHelper.getFactory( + "org.apache.felix.ipojo.runtime.core.test.components.proxy.CheckServiceGetAndDelegate").createComponentInstance(i1); + + + ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull(ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(ref); + + Properties props = cs.getProps(); + FooService helper = (FooService) props.get("helper.fs"); + assertNotNull(helper); + assertTrue(helper.toString().contains("$$Proxy")); // This is the suffix. + + + assertTrue(cs.check()); + + fooProvider1.dispose(); + instance1.dispose(); + } + + @Test + public void testGetAndDelegationOnNullable() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + Properties i1 = new Properties(); + i1.put("instance.name", "DelegatorNullable"); + ComponentInstance instance1 = ipojoHelper.getFactory( + "org.apache.felix.ipojo.runtime.core.test.components.proxy.CheckServiceGetAndDelegate").createComponentInstance(i1); + + + ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull(ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(ref); + + Properties props = cs.getProps(); + FooService helper = (FooService) props.get("helper.fs"); + assertNotNull(helper); + assertTrue(helper.toString().contains("$$Proxy")); // This is the suffix. + + assertFalse(cs.check()); // Nullable. + + + instance1.dispose(); + } + + @Test + public void testImmediate() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + Properties prov = new Properties(); + prov.put("instance.name", "FooProvider1-Proxy"); + ComponentInstance fooProvider1 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov); + + + Properties i1 = new Properties(); + i1.put("instance.name", "Delegator"); + ComponentInstance instance1 = ipojoHelper.getFactory( + "org.apache.felix.ipojo.runtime.core.test.components.proxy.CheckServiceNoDelegate").createComponentInstance(i1); + + osgiHelper.waitForService(CheckService.class, "(service.pid=Helper)", 10000); + + ServiceReference ref = osgiHelper.getServiceReference(CheckService.class.getName(), "(service.pid=Helper)"); + assertNotNull(ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(ref); + + Properties props = cs.getProps(); + FooService helper = (FooService) props.get("helper.fs"); + assertNotNull(helper); + assertTrue(helper.toString().contains("$$Proxy")); // This is the suffix. + + assertTrue(cs.check()); + + fooProvider1.dispose(); + instance1.dispose(); + } + + @Test + public void testImmediateNoService() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + Properties i1 = new Properties(); + i1.put("instance.name", "Delegator-with-no-service"); + ComponentInstance instance1 = ipojoHelper.getFactory( + "org.apache.felix.ipojo.runtime.core.test.components.proxy.CheckServiceNoDelegate").createComponentInstance(i1); + + osgiHelper.waitForService(CheckService.class, "(service.pid=Helper)", 10000); + + ServiceReference ref = osgiHelper.getServiceReference(CheckService.class.getName(), "(service.pid=Helper)"); + assertNotNull(ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(ref); + + try { + cs.getProps(); + fail("Exception expected"); + } catch (RuntimeException e) { + //OK + } + + instance1.dispose(); + } + + @Test + public void testProxyDisabled() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + // Disable proxy + System.setProperty(DependencyHandler.PROXY_SETTINGS_PROPERTY, DependencyHandler.PROXY_DISABLED); + + System.out.println("Bundle context prop : " + bc.getProperty(DependencyHandler.PROXY_SETTINGS_PROPERTY)); + + Properties prov = new Properties(); + prov.put("instance.name", "FooProvider1-Proxy"); + ComponentInstance fooProvider1 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov); + + + Properties i1 = new Properties(); + i1.put("instance.name", "Delegator"); + ComponentInstance instance1 = ipojoHelper.getFactory( + "org.apache.felix.ipojo.runtime.core.test.components.proxy.CheckServiceDelegator").createComponentInstance(i1); + + osgiHelper.waitForService(CheckService.class, "(instance.name=Delegator)", 10000); + + ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull(ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(ref); + + Properties props = cs.getProps(); + FooService helper = (FooService) props.get("helper.fs"); + System.out.println("helper : " + helper.toString()); + assertNotNull(helper); + assertFalse(helper.toString().contains("$$Proxy")); // Not a proxy. + + assertTrue(cs.check()); + + fooProvider1.dispose(); + instance1.dispose(); + System.setProperty(DependencyHandler.PROXY_SETTINGS_PROPERTY, DependencyHandler.PROXY_ENABLED); + + } + + @Test + public void testDynamicProxy() throws UnacceptableConfiguration, MissingHandlerException, ConfigurationException { + // Dynamic proxy + System.setProperty(DependencyHandler.PROXY_TYPE_PROPERTY, DependencyHandler.DYNAMIC_PROXY); + Properties prov = new Properties(); + prov.put("instance.name", "FooProvider1-Proxy"); + ComponentInstance fooProvider1 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov); + + + Properties i1 = new Properties(); + i1.put("instance.name", "Delegator"); + ComponentInstance instance1 = ipojoHelper.getFactory( + "org.apache.felix.ipojo.runtime.core.test.components.proxy.CheckServiceDelegator").createComponentInstance(i1); + + + ServiceReference ref = ipojoHelper.getServiceReferenceByName(CheckService.class.getName(), instance1.getInstanceName()); + assertNotNull(ref); + CheckService cs = (CheckService) osgiHelper.getServiceObject(ref); + + Properties props = cs.getProps(); + FooService helper = (FooService) props.get("helper.fs"); + assertNotNull(helper); + assertFalse(helper.toString().contains("$$Proxy")); // Dynamic proxy. + assertTrue(helper.toString().contains("DynamicProxyFactory")); + assertTrue(helper.hashCode() > 0); + + assertTrue(helper.equals(helper)); + assertFalse(helper.equals(i1)); // This is a quite stupid test... + + assertTrue(cs.check()); + + fooProvider1.dispose(); + instance1.dispose(); + System.setProperty(DependencyHandler.PROXY_TYPE_PROPERTY, DependencyHandler.SMART_PROXY); + + } + + +}
