Return-Path: X-Original-To: apmail-felix-commits-archive@www.apache.org Delivered-To: apmail-felix-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CD17C9FD4 for ; Tue, 26 Feb 2013 10:49:03 +0000 (UTC) Received: (qmail 44499 invoked by uid 500); 26 Feb 2013 10:49:03 -0000 Delivered-To: apmail-felix-commits-archive@felix.apache.org Received: (qmail 44453 invoked by uid 500); 26 Feb 2013 10:49:03 -0000 Mailing-List: contact commits-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list commits@felix.apache.org Received: (qmail 44322 invoked by uid 99); 26 Feb 2013 10:49:02 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Feb 2013 10:49:02 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Feb 2013 10:48:59 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id B88FF2388C29; Tue, 26 Feb 2013 10:48:16 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1450123 [9/9] - in /felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/felix/ src/main/java/org/apach... Date: Tue, 26 Feb 2013 10:48:13 -0000 To: commits@felix.apache.org From: clement@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130226104816.B88FF2388C29@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Added: felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/optional/TestProxiedDelayedOptionalMultipleDependencies.java URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/optional/TestProxiedDelayedOptionalMultipleDependencies.java?rev=1450123&view=auto ============================================================================== --- felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/optional/TestProxiedDelayedOptionalMultipleDependencies.java (added) +++ felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/optional/TestProxiedDelayedOptionalMultipleDependencies.java Tue Feb 26 10:48:11 2013 @@ -0,0 +1,364 @@ +/* + * 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.optional; + +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 TestProxiedDelayedOptionalMultipleDependencies extends Common { + + ComponentInstance instance1, instance2, instance3, instance4; + ComponentInstance fooProvider1, fooProvider2; + + @Before + public void setUp() { + try { + Properties i1 = new Properties(); + i1.put("instance.name", "Simple"); + instance1 = ipojoHelper.getFactory("ProxiedSimpleOptionalMultipleCheckServiceProvider").createComponentInstance(i1); + instance1.stop(); + + Properties i2 = new Properties(); + i2.put("instance.name", "Void"); + instance2 = ipojoHelper.getFactory("ProxiedVoidOptionalMultipleCheckServiceProvider").createComponentInstance(i2); + instance2.stop(); + + Properties i3 = new Properties(); + i3.put("instance.name", "Object"); + instance3 = ipojoHelper.getFactory("ProxiedObjectOptionalMultipleCheckServiceProvider").createComponentInstance(i3); + instance3.stop(); + + Properties i4 = new Properties(); + i4.put("instance.name", "Ref"); + instance4 = ipojoHelper.getFactory("ProxiedRefOptionalMultipleCheckServiceProvider").createComponentInstance(i4); + instance4.stop(); + + Properties prov = new Properties(); + prov.put("instance.name", "FooProvider1"); + fooProvider1 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov); + + Properties prov2 = new Properties(); + prov2.put("instance.name", "FooProvider2"); + fooProvider2 = ipojoHelper.getFactory("FooProviderType-1").createComponentInstance(prov2); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + @After + public void tearDown() { + instance1.dispose(); + instance2.dispose(); + instance3.dispose(); + instance4.dispose(); + fooProvider1.dispose(); + fooProvider2.dispose(); + instance1 = null; + instance2 = null; + instance3 = null; + instance4 = null; + fooProvider1 = null; + fooProvider2 = null; + } + + @Test public void testSimple() { + instance1.start(); + 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 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); + Properties props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation - 0", ((Boolean) props.get("result")).booleanValue()); + 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(), 2); + assertEquals("Check FS invocation (long) - 0", ((Long) props.get("long")).longValue(), 2); + assertEquals("Check FS invocation (double) - 0", ((Double) props.get("double")).doubleValue(), 2.0, 0); + + fooProvider1.stop(); + + 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 - 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); + instance1.stop(); + } + + @Test public void testVoid() { + instance2.start(); + 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.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 + assertTrue("check CheckService invocation - 0", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation - 0", ((Integer) props.get("voidB")).intValue(), 2); + 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(), 2); + assertEquals("Check FS invocation (long) - 0", ((Long) props.get("long")).longValue(), 2); + assertEquals("Check FS invocation (double) - 0", ((Double) props.get("double")).doubleValue(), 2.0, 0); + + fooProvider1.stop(); + + 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 - 3", ((Boolean) props.get("result")).booleanValue()); // True, two providers are here + assertEquals("check void bind invocation - 3", ((Integer) props.get("voidB")).intValue(), 2); + assertEquals("check void unbind callback invocation - 3", ((Integer) props.get("voidU")).intValue(), 1); + 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 - 3", 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 provider + assertEquals("check void bind invocation - 4", ((Integer) props.get("voidB")).intValue(), 2); + assertEquals("check void unbind callback invocation - 4", ((Integer) props.get("voidU")).intValue(), 2); + 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); + instance2.stop(); + } + + @Test public void testObject() { + instance3.start(); + 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.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 - 0", ((Boolean) props.get("result")).booleanValue()); + 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(), 2); + 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(), 2); + assertEquals("Check FS invocation (long) - 0", ((Long) props.get("long")).longValue(), 2); + assertEquals("Check FS invocation (double) - 0", ((Double) props.get("double")).doubleValue(), 2.0, 0); + + fooProvider1.stop(); + + 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 - 3", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation - 3", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 3", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 3", ((Integer) props.get("objectB")).intValue(), 2); + assertEquals("check object unbind callback invocation - 3", ((Integer) props.get("objectU")).intValue(), 1); + 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 - 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(), 2); + assertEquals("check object unbind callback invocation - 0", ((Integer) props.get("objectU")).intValue(), 2); + 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); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + instance3.stop(); + } + + @Test public void testRef() { + instance4.start(); + 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.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 - 0", ((Boolean) props.get("result")).booleanValue()); + 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(), 2); + assertEquals("check ref unbind callback invocation - 0", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("Check FS invocation (int) - 0", ((Integer) props.get("int")).intValue(), 2); + assertEquals("Check FS invocation (long) - 0", ((Long) props.get("long")).longValue(), 2); + assertEquals("Check FS invocation (double) - 0", ((Double) props.get("double")).doubleValue(), 2.0, 0); + + fooProvider1.stop(); + + 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 - 3", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation - 3", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 3", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 3", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 3", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 3", ((Integer) props.get("refB")).intValue(), 2); + assertEquals("check ref unbind callback invocation - 3", ((Integer) props.get("refU")).intValue(), 1); + 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 - 3", id.getState() == ComponentInstance.VALID); + + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + 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(), 2); + assertEquals("check ref unbind callback invocation - 0", ((Integer) props.get("refU")).intValue(), 2); + 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); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + instance4.stop(); + } + + +} Added: felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/optional/TestProxiedOptionalDependencies.java URL: http://svn.apache.org/viewvc/felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/optional/TestProxiedOptionalDependencies.java?rev=1450123&view=auto ============================================================================== --- felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/optional/TestProxiedOptionalDependencies.java (added) +++ felix/trunk/ipojo/runtime/core-it/src/it/ipojo-core-service-dependency-optional-test/src/test/java/org/apache/felix/ipojo/runtime/core/test/dependencies/optional/TestProxiedOptionalDependencies.java Tue Feb 26 10:48:11 2013 @@ -0,0 +1,554 @@ +/* + * 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.optional; + +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 TestProxiedOptionalDependencies extends Common { + + ComponentInstance instance1, instance2, instance3, instance4, instance5, instance6, instance7; + 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("ProxiedSimpleOptionalCheckServiceProvider").createComponentInstance(i1); + + Properties i2 = new Properties(); + i2.put("instance.name", "Void"); + instance2 = ipojoHelper.getFactory("ProxiedVoidOptionalCheckServiceProvider").createComponentInstance(i2); + + Properties i3 = new Properties(); + i3.put("instance.name", "Object"); + instance3 = ipojoHelper.getFactory("ProxiedObjectOptionalCheckServiceProvider").createComponentInstance(i3); + + Properties i4 = new Properties(); + i4.put("instance.name", "Ref"); + instance4 = ipojoHelper.getFactory("ProxiedRefOptionalCheckServiceProvider").createComponentInstance(i4); + + Properties i5 = new Properties(); + i5.put("instance.name", "Both"); + instance5 = ipojoHelper.getFactory("ProxiedBothOptionalCheckServiceProvider").createComponentInstance(i5); + + Properties i6 = new Properties(); + i6.put("instance.name", "Map"); + instance6 = ipojoHelper.getFactory("ProxiedMapOptionalCheckServiceProvider").createComponentInstance(i6); + + Properties i7 = new Properties(); + i7.put("instance.name", "Dictionary"); + instance7 = ipojoHelper.getFactory("ProxiedDictOptionalCheckServiceProvider").createComponentInstance(i7); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + @After + public void tearDown() { + instance1.dispose(); + instance2.dispose(); + instance3.dispose(); + instance4.dispose(); + instance5.dispose(); + instance6.dispose(); + instance7.dispose(); + fooProvider.dispose(); + instance1 = null; + instance2 = null; + instance3 = null; + instance4 = null; + instance5 = null; + instance6 = null; + instance7 = 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 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); + Properties props = cs.getProps(); + + //Check properties + assertFalse("check CheckService invocation - 1", ((Boolean) props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation - 1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 1", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 1", ((Integer) props.get("refU")).intValue(), 0); + assertNull("Check FS invocation (object) - 1 (" + props.get("object") + ")", props.get("object")); + assertEquals("Check FS invocation (int) - 1", ((Integer) props.get("int")).intValue(), 0); + assertEquals("Check FS invocation (long) - 1", ((Long) props.get("long")).longValue(), 0); + assertEquals("Check FS invocation (double) - 1", ((Double) props.get("double")).doubleValue(), 0.0, 0); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + + //Check properties + assertTrue("check CheckService invocation - 2", ((Boolean) props.get("result")).booleanValue()); // True, a provider is there + assertEquals("check void bind invocation - 2", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 2", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 2", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 2", ((Integer) props.get("refU")).intValue(), 0); + assertNotNull("Check FS invocation (object) - 2", props.get("object")); + assertEquals("Check FS invocation (int) - 2", ((Integer) props.get("int")).intValue(), 1); + assertEquals("Check FS invocation (long) - 2", ((Long) props.get("long")).longValue(), 1); + assertEquals("Check FS invocation (double) - 2", ((Double) props.get("double")).doubleValue(), 1.0, 0); + + fooProvider.stop(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 3", id.getState() == ComponentInstance.VALID); + + 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 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 - 1", ((Boolean) props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation - 1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation - 1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation - 1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation - 1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation - 1", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation - 1", ((Integer) props.get("refU")).intValue(), 0); + assertNull("Check FS invocation (object) - 1", props.get("object")); + assertEquals("Check FS invocation (int) - 1", ((Integer) props.get("int")).intValue(), 0); + assertEquals("Check FS invocation (long) - 1", ((Long) props.get("long")).longValue(), 0); + assertEquals("Check FS invocation (double) - 1", ((Double) props.get("double")).doubleValue(), 0.0, 0); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer) props.get("voidB")).intValue(), 1); + assertEquals("check void unbind callback invocation -2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -2", ((Integer) props.get("refU")).intValue(), 0); + assertNotNull("Check FS invocation (object) - 2", props.get("object")); + assertEquals("Check FS invocation (int) - 2", ((Integer) props.get("int")).intValue(), 1); + assertEquals("Check FS invocation (long) - 2", ((Long) props.get("long")).longValue(), 1); + assertEquals("Check FS invocation (double) - 2", ((Double) props.get("double")).doubleValue(), 1.0, 0); + + fooProvider.stop(); + + 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 + assertFalse("check CheckService invocation -3", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer) props.get("voidB")).intValue(), 1); + assertEquals("check void unbind callback invocation -3 (" + ((Integer) props.get("voidU")) + ")", ((Integer) props.get("voidU")).intValue(), 1); + assertEquals("check object bind callback invocation -3", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -3", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -3", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -3", ((Integer) props.get("refU")).intValue(), 0); + assertNull("Check FS invocation (object) - 3", props.get("object")); + assertEquals("Check FS invocation (int) - 3", ((Integer) props.get("int")).intValue(), 0); + assertEquals("Check FS invocation (long) - 3", ((Long) props.get("long")).longValue(), 0); + assertEquals("Check FS invocation (double) - 3", ((Double) props.get("double")).doubleValue(), 0.0, 0); + + 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 validity - 1", 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 + assertFalse("check CheckService invocation -1", ((Boolean) props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation -1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer) props.get("refU")).intValue(), 0); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2 (" + ((Integer) props.get("objectB")).intValue() + ")", ((Integer) props.get("objectB")).intValue(), 1); + assertEquals("check object unbind callback invocation -2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -2", ((Integer) props.get("refU")).intValue(), 0); + + fooProvider.stop(); + + 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 + assertFalse("check CheckService invocation -3", ((Boolean) props.get("result")).booleanValue()); // Nullable object. + 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(), 1); + assertEquals("check object unbind callback invocation -3", ((Integer) props.get("objectU")).intValue(), 1); + assertEquals("check ref bind callback invocation -3", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -3", ((Integer) props.get("refU")).intValue(), 0); + + id = null; + cs = null; + 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 validity - 1", 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 + assertFalse("check CheckService invocation -1", ((Boolean) props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation -1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -1", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -1", ((Integer) props.get("refU")).intValue(), 0); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer) props.get("refB")).intValue(), 1); + assertEquals("check ref unbind callback invocation -2", ((Integer) props.get("refU")).intValue(), 0); + + fooProvider.stop(); + + 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 + assertFalse("check CheckService invocation -3", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -3", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -3", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -3", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -3", ((Integer) props.get("refB")).intValue(), 1); + assertEquals("check ref unbind callback invocation -3", ((Integer) props.get("refU")).intValue(), 1); + + 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 validity - 1", 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 + assertFalse("check CheckService invocation -1", ((Boolean) props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation -1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer) props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer) props.get("bothU")).intValue(), 0); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -2", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -2", ((Integer) props.get("bothB")).intValue(), 1); + assertEquals("check both unbind callback invocation -2", ((Integer) props.get("bothU")).intValue(), 0); + + fooProvider.stop(); + + 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 + assertFalse("check CheckService invocation -3", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -3", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -3", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -3", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -3", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -3", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -3", ((Integer) props.get("bothB")).intValue(), 1); + assertEquals("check both unbind callback invocation -3", ((Integer) props.get("bothU")).intValue(), 1); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testMap() { + 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 validity - 1", 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); + Properties props = cs.getProps(); + //Check properties + assertFalse("check CheckService invocation -1", ((Boolean) props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation -1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer) props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer) props.get("bothU")).intValue(), 0); + 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(), 0); + assertEquals("check dict unbind callback invocation -1", ((Integer) props.get("dictU")).intValue(), 0); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -2", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -2", ((Integer) props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -2", ((Integer) props.get("bothU")).intValue(), 0); + assertEquals("check map bind callback invocation -2", ((Integer) props.get("mapB")).intValue(), 1); + assertEquals("check map unbind callback invocation -2", ((Integer) props.get("mapU")).intValue(), 0); + assertEquals("check dict bind callback invocation -2", ((Integer) props.get("dictB")).intValue(), 0); + assertEquals("check dict unbind callback invocation -2", ((Integer) props.get("dictU")).intValue(), 0); + + fooProvider.stop(); + + 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 + assertFalse("check CheckService invocation -3", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -3", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -3", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -3", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -3", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -3", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -3", ((Integer) props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -3", ((Integer) props.get("bothU")).intValue(), 0); + assertEquals("check map bind callback invocation -3", ((Integer) props.get("mapB")).intValue(), 1); + assertEquals("check map unbind callback invocation -3", ((Integer) props.get("mapU")).intValue(), 1); + assertEquals("check dict bind callback invocation -3", ((Integer) props.get("dictB")).intValue(), 0); + assertEquals("check dict unbind callback invocation -3", ((Integer) props.get("dictU")).intValue(), 0); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + @Test public void testDict() { + 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 validity - 1", 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 + assertFalse("check CheckService invocation -1", ((Boolean) props.get("result")).booleanValue()); // False is returned (nullable) + assertEquals("check void bind invocation -1", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -1", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -1", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -1", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check both bind callback invocation -1", ((Integer) props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -1", ((Integer) props.get("bothU")).intValue(), 0); + 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(), 0); + assertEquals("check dict unbind callback invocation -1", ((Integer) props.get("dictU")).intValue(), 0); + + fooProvider.start(); + + id = ((Architecture) osgiHelper.getServiceObject(arch_ref)).getInstanceDescription(); + assertTrue("Check instance validity - 2", id.getState() == ComponentInstance.VALID); + + assertNotNull("Check CheckService availability", cs_ref); + cs = (CheckService) osgiHelper.getServiceObject(cs_ref); + props = cs.getProps(); + //Check properties + assertTrue("check CheckService invocation -2", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -2", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -2", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -2", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -2", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -2", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -2", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -2", ((Integer) props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -2", ((Integer) props.get("bothU")).intValue(), 0); + assertEquals("check map bind callback invocation -2", ((Integer) props.get("mapB")).intValue(), 0); + assertEquals("check map unbind callback invocation -2", ((Integer) props.get("mapU")).intValue(), 0); + assertEquals("check dict bind callback invocation -2", ((Integer) props.get("dictB")).intValue(), 1); + assertEquals("check dict unbind callback invocation -2", ((Integer) props.get("dictU")).intValue(), 0); + + fooProvider.stop(); + + 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 + assertFalse("check CheckService invocation -3", ((Boolean) props.get("result")).booleanValue()); + assertEquals("check void bind invocation -3", ((Integer) props.get("voidB")).intValue(), 0); + assertEquals("check void unbind callback invocation -3", ((Integer) props.get("voidU")).intValue(), 0); + assertEquals("check object bind callback invocation -3", ((Integer) props.get("objectB")).intValue(), 0); + assertEquals("check object unbind callback invocation -3", ((Integer) props.get("objectU")).intValue(), 0); + assertEquals("check ref bind callback invocation -3", ((Integer) props.get("refB")).intValue(), 0); + assertEquals("check ref unbind callback invocation -3", ((Integer) props.get("refU")).intValue(), 0); + assertEquals("check both bind callback invocation -3", ((Integer) props.get("bothB")).intValue(), 0); + assertEquals("check both unbind callback invocation -3", ((Integer) props.get("bothU")).intValue(), 0); + assertEquals("check map bind callback invocation -3", ((Integer) props.get("mapB")).intValue(), 0); + assertEquals("check map unbind callback invocation -3", ((Integer) props.get("mapU")).intValue(), 0); + assertEquals("check dict bind callback invocation -3", ((Integer) props.get("dictB")).intValue(), 1); + assertEquals("check dict unbind callback invocation -3", ((Integer) props.get("dictU")).intValue(), 1); + + id = null; + cs = null; + getContext().ungetService(arch_ref); + getContext().ungetService(cs_ref); + } + + +}