/****************************************************************************** * Copyright (c) 2006, 2010 VMware Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Apache License v2.0 which accompanies this distribution. * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html and the Apache License v2.0 * is available at http://www.opensource.org/licenses/apache2.0.php. * You may elect to redistribute this code under either of these licenses. * * Contributors: * VMware Inc. *****************************************************************************/ package org.eclipse.gemini.blueprint.compendium.internal.cm; import java.util.HashMap; import java.util.Map; import junit.framework.TestCase; import org.eclipse.gemini.blueprint.TestUtils; import org.eclipse.gemini.blueprint.compendium.MultipleSetters; import org.eclipse.gemini.blueprint.compendium.OneSetter; import org.eclipse.gemini.blueprint.compendium.internal.cm.DefaultManagedServiceBeanManager; import org.eclipse.gemini.blueprint.mock.MockBundleContext; /** * * @author Costin Leau * */ public class DefaultManagedServiceBeanManagerTest extends TestCase { private DefaultManagedServiceBeanManager msbm; private ConfigurationAdminManager cam; private Map configuration; protected void setUp() throws Exception { cam = new ConfigurationAdminManager("bla", new MockBundleContext()) { public Map getConfiguration() { return configuration; } }; } protected void tearDown() throws Exception { msbm = null; cam = null; } private Object getUpdateCallback() { return TestUtils.getFieldValue(msbm, "updateCallback"); } private Map getBeanMap() { return (Map) TestUtils.getFieldValue(msbm, "instanceRegistry"); } public void testNoUpdateStrategy() { msbm = new DefaultManagedServiceBeanManager(false, null, cam, null); assertNull(getUpdateCallback()); } public void testBeanManagedUpdateStrategy() { msbm = new DefaultManagedServiceBeanManager(false, "update", cam, null); assertTrue(getUpdateCallback().getClass().getName().endsWith("BeanManagedUpdate")); } public void testContainerManagedUpdateStrategy() { msbm = new DefaultManagedServiceBeanManager(true, null, cam, null); assertTrue(getUpdateCallback().getClass().getName().endsWith("ContainerManagedUpdate")); } public void testChainedManagedUpdateStrategy() { msbm = new DefaultManagedServiceBeanManager(true, "update", cam, null); assertTrue(getUpdateCallback().getClass().getName().endsWith("ChainedManagedUpdate")); } public void testRegister() { configuration = new HashMap(); msbm = new DefaultManagedServiceBeanManager(false, null, cam, null); Object bean = new Object(); assertSame(bean, msbm.register(bean)); assertTrue(getBeanMap().containsValue(bean)); } public void testUnregister() { msbm = new DefaultManagedServiceBeanManager(false, null, cam, null); Object bean = new Object(); assertSame(bean, msbm.register(bean)); assertTrue(getBeanMap().containsValue(bean)); msbm.unregister(bean); assertFalse(getBeanMap().containsValue(bean)); } public void testUpdated() { msbm = new DefaultManagedServiceBeanManager(false, null, cam, null); } public void testInjectInfoSimple() { Map props = new HashMap(); props.put("prop", "14"); OneSetter instance = new OneSetter(); msbm = new DefaultManagedServiceBeanManager(true, null, cam, null); msbm.applyInitialInjection(instance, props); assertEquals(new Long(14), instance.getProp()); } public void testMultipleSetters() { Map props = new HashMap(); props.put("prop", "14"); props.put("integer", new Double(14)); props.put("dbl", new Float(14)); props.put("none", "14"); props.put("float", "14"); MultipleSetters instance = new MultipleSetters(); msbm = new DefaultManagedServiceBeanManager(true, null, cam, null); msbm.applyInitialInjection(instance, props); assertEquals(new Double(14), instance.getDbl()); assertEquals(14, instance.getInteger()); assertEquals(new Long(14), instance.getProp()); assertEquals(new Float(0), new Float(instance.getFloat())); } }